Installation issues
Import error after installing
Import error after installing
If you see an If your version is below 3.10, upgrade Python before reinstalling JobSpy.
ImportError when running from jobspy import scrape_jobs, check that you are using Python 3.10 or higher:Module not found: jobspy
Module not found: jobspy
If Python cannot find the Make sure you are installing into the same Python environment your script is using.
jobspy module, reinstall the package:No results returned
site_name is not recognized
site_name is not recognized
Verify that each value in
Any typo or incorrect casing will cause that site to be skipped silently.
site_name matches one of the accepted strings exactly:| Site | site_name value |
|---|---|
linkedin | |
| Indeed | indeed |
| ZipRecruiter | zip_recruiter |
| Glassdoor | glassdoor |
| Google Jobs | google |
| Bayt | bayt |
| Naukri | naukri |
| BDJobs | bdjobs |
No results from Google Jobs
No results from Google Jobs
Google Jobs ignores See the Google Jobs: no results section below for full details.
search_term. You must use google_search_term instead:No results from Bayt
No results from Bayt
Bayt only supports
search_term. Location filtering is not available for Bayt. If you are passing a location parameter, it will be ignored.Network connectivity
Network connectivity
Confirm your machine has internet access and that the job board’s domain is reachable. If you are behind a firewall or corporate proxy, configure the
proxies parameter accordingly.Rate limiting (429 errors)
LinkedIn rate limiting
LinkedIn rate limiting
LinkedIn is the most restrictive job board and typically rate limits around the 10th page of results with a single IP. For any scrape that goes beyond a small number of results, using proxies is strongly recommended.
Indeed rate limiting
Indeed rate limiting
Indeed currently has minimal rate limiting. For large scrapes, add a delay between subsequent calls to reduce the chance of being blocked.
ZipRecruiter and Glassdoor rate limiting
ZipRecruiter and Glassdoor rate limiting
ZipRecruiter and Glassdoor have moderate rate limiting. Add delays between requests and consider using proxies for high-volume scraping.
How to configure proxies
How to configure proxies
Pass a list of proxy strings to the If your proxies use a custom SSL certificate, provide the path with
proxies parameter. Each scraper will round-robin through the list:ca_cert:Empty or missing fields
Some fields are always None
Some fields are always None
Several fields are only populated by specific job boards:
job_level— LinkedIn onlycompany_industry— LinkedIn and Indeed onlycompany_addresses,company_num_employees,company_revenue,company_description,company_logo— Indeed onlyskills,experience_range,company_rating,company_reviews_count,vacancy_count,work_from_home_type— Naukri only
None.Salary/compensation is None
Salary/compensation is None
Compensation data is only populated when the job posting includes salary information. Many postings do not list a salary, so
min_amount, max_amount, and interval may be None.For US-based results, JobSpy will attempt to parse salary figures from the description text when structured compensation data is unavailable.Description is missing or truncated
Description is missing or truncated
Some job boards return truncated descriptions by default. For LinkedIn, you can fetch the full description by enabling
linkedin_fetch_description:Indeed search returning unrelated results
Indeed searches both the job title and the full description text. A broadsearch_term will match any posting that mentions your keywords anywhere in the listing.
LinkedIn limitations
Rate limited after a few pages
Rate limited after a few pages
LinkedIn typically blocks requests around the 10th page of results when using a single IP. Use the
proxies parameter to rotate IP addresses and extend how many results you can retrieve.easy_apply filter is unreliable
easy_apply filter is unreliable
The LinkedIn easy apply filter no longer works reliably. Passing
easy_apply=True for LinkedIn will not consistently return only easy apply listings.Cannot combine hours_old and easy_apply
Cannot combine hours_old and easy_apply
On LinkedIn, you can only use one of the following per search:
hours_oldeasy_apply
linkedin_fetch_description slows down scraping
linkedin_fetch_description slows down scraping
Setting
linkedin_fetch_description=True fetches the full description and direct job URL for each result. This increases the total number of HTTP requests by O(n), where n is the number of jobs returned. Only enable this when you specifically need full descriptions or direct URLs.Google Jobs: no results
Google Jobs requires syntax that exactly matches what Google’s own search interface produces. To get the right query:- Open Google Jobs in your browser.
- Search for the role you want and apply any filters (location, date posted, etc.).
- Copy the exact text shown in the Google Jobs search box.
- Pass that string as
google_search_term.
google_search_term is the only parameter used for filtering Google Jobs results. Parameters like location, hours_old, and job_type are ignored for this site.