Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/speedyapply/JobSpy/llms.txt

Use this file to discover all available pages before exploring further.

Indeed searches the job description text as well as the title. To get more targeted results, use precise query syntax:
  • Use - to exclude words
  • Use "" for an exact match
  • Use OR for alternatives
search_term='"engineering intern" software summer (java OR python OR c++) 2025 -tax -marketing'
This query requires the description or title to include software, summer, 2025, at least one of the listed languages, and the exact phrase engineering intern — while excluding any mention of tax or marketing.
Google Jobs requires very specific query syntax. To get the right value for google_search_term:
  1. Open Google Jobs in your browser.
  2. Apply the filters you want (location, date posted, etc.).
  3. Copy the exact text that appears in the Google Jobs search box.
  4. Pass that string as google_search_term in your scrape_jobs() call.
google_search_term is separate from search_term. For Google, only google_search_term is used for filtering.
A 429 status code means the job board has rate limited your requests because you sent too many in a short period. To work around this:
  • Wait between scrapes (the required delay varies by site).
  • Use the proxies parameter to rotate your IP address:
jobs = scrape_jobs(
    site_name="linkedin",
    search_term="data engineer",
    proxies=["user:pass@host:port", "localhost"],
)
Indeed is currently the best-performing scraper with minimal rate limiting. LinkedIn is the most restrictive — it typically rate limits around the 10th page with a single IP address, making proxies strongly recommended.
LinkedIn enforces strict rate limits and typically blocks further requests around the 10th page of results when using a single IP. Using the proxies parameter to rotate IP addresses is strongly recommended for any LinkedIn scraping beyond a small number of results.
results_wanted sets the number of results to retrieve per site. For example, if you set results_wanted=20 and pass three sites in site_name, you could receive up to 60 total results.
Python 3.10 or higher is required. You can check your version by running:
python --version
If you need to upgrade, download the latest release from python.org.
No. The LinkedIn easy apply filter is no longer reliable and does not work consistently. Passing easy_apply=True when scraping LinkedIn will not produce accurate results.
Use the country_indeed parameter with the country name string. For example:
jobs = scrape_jobs(
    site_name="indeed",
    search_term="software engineer",
    country_indeed="Canada",
)
See the supported countries list for valid values. The string is case-insensitive.
No. On Indeed, you can only use one of the following per search:
  • hours_old
  • job_type or is_remote
  • easy_apply
Combining more than one of these filters in the same Indeed query will not work as expected.

Build docs developers (and LLMs) love