python-jobspy
Job scraper for LinkedIn, Indeed, Glassdoor, ZipRecruiter & Bayt
What it is and what it does
JobSpy is a web scraper that pulls job postings from multiple popular job boards—LinkedIn, Indeed, Glassdoor, Google Jobs, ZipRecruiter, Bayt, Naukri, and others—and combines them into a single pandas DataFrame. It handles concurrent requests to multiple sites and supports filtering by location, job type, posting recency, salary range, and remote status. The library outputs structured job data including title, company, location, salary, job URL, and description (in markdown or HTML format).
The package is designed for job market research, recruitment automation, and data analysis. It includes proxy support to work around rate-limiting and IP blocking, and offers fine-grained control over search parameters per job board. Results can be exported to CSV or Excel. Maintenance is active, with recent updates and a large user base, though some job boards (particularly LinkedIn) are noted as restrictive and require proxies for reliable access.
Use it for:
- Aggregate job listings across multiple boards into a single dataset for salary analysis or market research.
- Build a job alert system that periodically scrapes and filters postings by role, location, and salary range.
- Export job data to CSV or database for downstream analysis, visualization, or integration with recruitment tools.
- Monitor hiring trends by collecting job postings over time from specific companies or industries.
- Automate candidate sourcing by scraping and filtering job postings that match specific skill or location criteria.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Scrapes job postings from LinkedIn, Indeed, Glassdoor, Google, ZipRecruiter, and other job boards, aggregating results into a pandas DataFrame for analysis or export.
Yes, with conditions. Install if you need to aggregate job data from multiple boards into a single structured format and are comfortable managing proxies for rate-limit avoidance. The package is actively maintained, has low install friction, and supports current Python versions. However, verify the unclear license status before use in proprietary contexts, and confirm that your scraping use case complies with each job board's terms of service and robots.txt policies.
Install
python-jobspy on PyPI
pip
pip install python-jobspyuv
uv add python-jobspypoetry
poetry add python-jobspyInstalling python-jobspy
Before you install
Low install friction with a pure-Python wheel distribution. Actively maintained with recent commits and a substantial user base. Requires Python 3.10 or later.
License in practice
License status is unclear—no SPDX identifier or raw license text is available in the package metadata. Verify the actual license at the repository before use in proprietary or commercial contexts.
Quickstart
pip install python-jobspy
from jobspy import scrape_jobs
jobs = scrape_jobs(
site_name=["indeed", "linkedin"],
search_term="software engineer",
location="San Francisco, CA",
results_wanted=20
)
print(jobs.head())
Python 3.10 or later is required. Some job boards (LinkedIn, Glassdoor) may rate-limit or block requests; proxies are recommended for sustained scraping.
Verify before relying
- Whether scraping these job boards complies with their terms of service and robots.txt policies.
- Current rate-limiting behavior and blocking patterns for each supported job board.
- Whether the package handles authentication or session management for boards that require login.
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (<4.0,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 8 — NUMPY, beautifulsoup4, markdownify, pandas, pydantic, regex, requests, tls-client |
| Maintenance | actively maintained — 382 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 483,946/month — #6,408 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: python_jobspy-1.1.82-py3-none-any.whl
Keywords: jobs-scraper, linkedin, indeed, glassdoor, ziprecruiter, bayt, naukri
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
linkedin-apiProvides direct HTTP access to LinkedIn's…
permissive · top 15,000 on PyPI
finvizfinanceScrapes financial data from FinViz website,…
permissive · top 15,000 on PyPI
scraplingScrapling is a web scraping and crawling…
permissive · top 5,000 on PyPI
ScweetScrape tweets, profiles, followers, and user…
permissive · top 15,000 on PyPI
snscrapeScrapes user profiles, posts, hashtags, and…
copyleft · top 15,000 on PyPI
names-datasetLooks up demographic information about first…
permissive · top 15,000 on PyPI
twikitTwikit is a Twitter scraper library that lets…
permissive · top 15,000 on PyPI
brightdata-sdkOfficial Python SDK for Bright Data APIs,…
permissive · top 15,000 on PyPI
proxycurl-pyA Python client for the Proxycurl API that…
unclear · top 15,000 on PyPI