Skip to main content
scrape_jobs() is the single entry point for all job scraping in JobSpy. It accepts parameters for every supported job board and returns a unified Pandas DataFrame.

How concurrent scraping works

Internally, scrape_jobs() uses a ThreadPoolExecutor to scrape all requested sites at the same time. Each site runs in its own thread, so scraping five boards takes roughly as long as scraping the slowest one — not the sum of all five.

Basic usage

Choosing which sites to scrape

The site_name parameter accepts a string, a list of strings, or a Site enum (or list of Site enums).
The supported values for site_name are:

Controlling the number of results

The results_wanted parameter sets how many job results to retrieve per site. If you scrape three sites with results_wanted=20, you may receive up to 60 results total.
All job board endpoints are capped at around 1,000 jobs per search, regardless of results_wanted.

Filtering by recency

Use hours_old to limit results to jobs posted within the last N hours.
ZipRecruiter and Glassdoor round hours_old up to the next full day.

Controlling log output

The verbose parameter controls how much JobSpy prints during scraping.

Full example

The google_search_term parameter is the only way to filter Google Jobs results. Copy the query string from the Google Jobs search box after applying filters in your browser.