Install & Compatibility
Where this runs
tested against v1.1.82 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
py 3.13
✕ build_error
✕ build_error
py 3.9
✕ build_error
✕ build_error
280MB installed
● package 280MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
scrape_jobs
✓ from jobspy import scrape_jobs
This quickstart example demonstrates how to scrape job postings for 'software engineer' in 'San Francisco, CA' from multiple job boards. It retrieves the latest 10 results posted within the last 72 hours, specifying 'USA' for Indeed/Glassdoor. The results are returned as a Pandas DataFrame.
import pandas as pd
from jobspy import scrape_jobs
jobs = scrape_jobs(
site_name=["indeed", "linkedin", "zip_recruiter", "google", "glassdoor"],
search_term="software engineer",
location="San Francisco, CA",
results_wanted=10,
country_indeed="USA", # Required for Indeed/Glassdoor in many cases
hours_old=72, # Jobs posted within the last 72 hours
description_format="markdown",
verbose=1 # Show warnings and errors
)
if isinstance(jobs, pd.DataFrame):
print(f"Found {len(jobs)} jobs")
print(jobs.head())
# To save to CSV:
# import csv
# jobs.to_csv(
# "jobs.csv",
# quoting=csv.QUOTE_NONNUMERIC,
# escapechar="\\",
# index=False,
# )
else:
print("No jobs found or an error occurred.")
Debug
Known issues
gotchaDefault logging verbosity changed. Logs are now suppressed by default, showing only errors.fixSet `verbose=1` (for warnings+errors) or `verbose=2` (for all logs) in the `scrape_jobs` function call to re-enable detailed logging.
affects: v1.1.77 and later
gotchaIndeed job sorting changed from date to relevance by default, which may affect expected results.fixIf exact date-based sorting is crucial, consider filtering results by `hours_old` or refining `search_term` for more precise matches.
affects: v1.1.66 and later
gotchaJob boards aggressively block IP addresses for too many requests, leading to `response code 429` (rate limiting).fixImplement delays between `scrape_jobs` calls, use proxies (via the `proxies` parameter), or enable authenticated scraping where available (e.g., `use_creds=True` for LinkedIn).
affects: All versions
gotchaWhen searching Indeed or Glassdoor, the `country_indeed` parameter is often required for specific countries to yield correct results.fixAlways specify `country_indeed='USA'` or the appropriate country code when scraping Indeed or Glassdoor.
affects: All versions
gotchaCertain parameters like `hours_old` cannot be combined with other filtering parameters (e.g., `job_type` + `is_remote`) for specific sites like Indeed or LinkedIn.fixConsult the `scrape_jobs` documentation to understand parameter incompatibilities for each job board and choose only one of the conflicting filters.
affects: All versions
Upgrade
Version history
1.1.82latest on PyPI · released Jul 28, 2025
Audit
Dependencies
pythonrequiredRequires Python 3.10 or higher, but less than 4.0.