ilia 40c7cdece3
All checks were successful
CI / skip-ci-check (pull_request) Successful in 8s
CI / docker-ci (pull_request) Successful in 10s
CI / secret-scan (pull_request) Successful in 7s
feat: add Google Jobs extractor and fix scraper reliability gaps
Ship a Camoufox-backed Google Jobs source, restore Glassdoor results discarded by a python-jobspy GraphQL quirk, and fix Himalayas/Gradcracker zero-job failures. Also harden prior-skip dismiss matching and multi-profile basic-auth switching for CA/US runs.
2026-07-09 15:11:53 -04:00
..

JobSpy extractor (Indeed / LinkedIn / Glassdoor)

Requirements

  • Python 3.10 or newer (python-jobspy has no compatible wheels on older versions).
  • A virtualenv in this directory (.venv) is recommended.
# Example: Homebrew (Apple Silicon paths may use /opt/homebrew)
python3.12 --version   # or python3.11 / python3.10 — must be ≥ 3.10

rm -rf .venv
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt

The orchestrator uses .venv/bin/python3 when present, otherwise system python3.

Manual test

source .venv/bin/activate
export JOBSPY_SITES=indeed
export JOBSPY_SEARCH_TERM="software engineer"
export JOBSPY_LOCATION="Toronto"
export JOBSPY_COUNTRY_INDEED=canada
export JOBSPY_OUTPUT_JSON=/tmp/jobspy-out.json
export JOBSPY_OUTPUT_CSV=/tmp/jobspy-out.csv
python3 scrape_jobs.py

Adjust env vars to match what the app passes (see extractors/jobspy/src/run.ts).