     [Blog](https://scrapfly.io/blog)   /  [hidden-api](https://scrapfly.io/blog/tag/hidden-api)   /  [3 Best Open-Source Job Scrapers for Multi-Board Data in 2026](https://scrapfly.io/blog/posts/best-open-source-job-scrapers)   # 3 Best Open-Source Job Scrapers for Multi-Board Data in 2026

 by [Mayada Shaaban](https://scrapfly.io/blog/author/mayada-shaaban-90143e67) Aug 24, 2026 20 min read [\#hidden-api](https://scrapfly.io/blog/tag/hidden-api) [\#python](https://scrapfly.io/blog/tag/python) [\#scrapeguide](https://scrapfly.io/blog/tag/scrapeguide) 

 [  ](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fbest-open-source-job-scrapers "Share on LinkedIn") [  ](https://x.com/intent/tweet?url=https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fbest-open-source-job-scrapers&text=3%20Best%20Open-Source%20Job%20Scrapers%20for%20Multi-Board%20Data%20in%202026 "Share on X") [  ](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fbest-open-source-job-scrapers "Share on Facebook")    

 

 

Summarize this article with

 [  ](https://chat.openai.com/?q=Summarize%20this%20article%20and%20explain%20how%20Scrapfly%20helps%20me%20scrape%20any%20website%20at%20scale%20and%20bypass%20anti-bot%20systems%20for%20my%20use%20case%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fbest-open-source-job-scrapers) [  ](https://claude.ai/new?q=Summarize%20this%20article%20and%20explain%20how%20Scrapfly%20helps%20me%20scrape%20any%20website%20at%20scale%20and%20bypass%20anti-bot%20systems%20for%20my%20use%20case%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fbest-open-source-job-scrapers) [  ](https://x.com/i/grok?text=Summarize%20this%20article%20and%20explain%20how%20Scrapfly%20helps%20me%20scrape%20any%20website%20at%20scale%20and%20bypass%20anti-bot%20systems%20for%20my%20use%20case%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fbest-open-source-job-scrapers) [  ](https://www.perplexity.ai/search/new?q=Summarize%20this%20article%20and%20explain%20how%20Scrapfly%20helps%20me%20scrape%20any%20website%20at%20scale%20and%20bypass%20anti-bot%20systems%20for%20my%20use%20case%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fbest-open-source-job-scrapers) [  ](https://www.google.com/search?udm=50&aep=11&q=Summarize%20this%20article%20and%20explain%20how%20Scrapfly%20helps%20me%20scrape%20any%20website%20at%20scale%20and%20bypass%20anti-bot%20systems%20for%20my%20use%20case%3A%20https%3A%2F%2Fscrapfly.io%2Fblog%2Fposts%2Fbest-open-source-job-scrapers) 



         

Most "best job scraper" lists rank tools by GitHub stars, not by board coverage or whether the tool still works. JobFunnel is still the top search result for open-source job scraping, and its maintainer archived it, read-only, in December 2025.

This roundup ranks three open-source tools that still run. JobSpy pulls consumer boards like LinkedIn and Indeed. jobhive and Levergreen read job postings straight from the applicant tracking systems (ATS) companies post to.

Each entry gets its board list, its output schema, and a stars-and-last-commit snapshot dated August 12, 2026.

[How to Scrape Indeed.com (2026 Update)In this web scraping tutorial we'll be taking a look at Indeed.com - a popular job listing website. In just few lines of Python code we'll scrape all job listings in particular niche and area.](https://scrapfly.io/blog/posts/how-to-scrape-indeedcom)



## Key Takeaways

- **Job scrapers fall into two families**, consumer aggregators and ATS-native readers.
- **JobSpy covers the most boards** in one call, but its endpoints break without notice.
- **ats-scrapers avoids duplicates** by reading 50+ ATS platforms directly.
- **Stars aren't a maintenance signal**, since JobFunnel has 2,178 stars but sits archived.
- **Scrapfly's NPOSL-3.0 source-available modules** trade DIY control for a managed anti-bot layer and require a Scrapfly API key.
- **No single repo covers every board**, so pipelines usually compose two tools.

**Get web scraping tips in your inbox**Trusted by 100K+ developers and 30K+ enterprises. Unsubscribe anytime.







## Which Open-Source Job Scraper Should You Use?

The right pick depends on which boards you need and whether you want consumer job boards or the ATS platforms underneath them. Here is the quick mapping, followed by the full comparison.

- **JobSpy** covers the big consumer boards (LinkedIn, Indeed, Glassdoor, Google, ZipRecruiter) in one call.
- **Managed alternative: Scrapfly's job scrapers** provide source-available NPOSL-3.0 modules across boards, backed by a managed anti-bot layer and a required API key.
- **ats-scrapers (jobhive)** returns ATS-native data with no duplicates and no API key.
- **Levergreen** is a reference pipeline to learn from or self-host.

| Tool | Boards covered | Output schema | Auth / rate-limit posture | Stars (2026-08-12) | Last commit | License |
|---|---|---|---|---|---|---|
| JobSpy | LinkedIn, Indeed, Glassdoor, Google, ZipRecruiter, Bayt, Naukri, BDJobs | pandas DataFrame | No login, proxies needed for LinkedIn, ~1,000 results per board | 4,071 | Feb 2026 | MIT |
| ats-scrapers (jobhive) | Greenhouse, Lever, Ashby, Workday, and 50+ more ATS platforms | pandas DataFrame, 27 columns | No API key, hosted dataset | 125 | Aug 2026 | MIT |
| Levergreen | Greenhouse, Lever | Unified model via dbt and Postgres | Scrapy spiders, S3 HTML cache, daily cron | 47 | Nov 2025 | MIT |

Stars and last-commit dates are live as of 2026-08-12. GitHub metrics drift, so check the repo directly before you depend on a number from any article, including this one.

The three picks above rank on coverage, schema, and maintenance state, not stars alone.



## How Did We Rank These Job Scrapers?

This roundup scores each tool on real board coverage, schema consistency, maintenance state, auth and rate limits, and honest production readiness. Dated stars and the archive flag count for more than a raw star total.

This numbered ranking only covers MIT-licensed repos you can read, clone, and self-host. Free to start is a first-class criterion, since a developer searching for open-source tools is usually trying to avoid a paid subscription.

The inclusion rule covers independent, open-source tools that scrape job data across more than one board and stay recent enough to still work. Single-board scrapers get their own section further down, so they don't crowd out the multi-board picks here.

Scrapfly's NPOSL-3.0 job-scraper code is source-available, not part of the numbered open-source ranking. It appears separately as a managed alternative that requires a Scrapfly API key and removes the account-ban and anti-bot burden.

The exclusion rule cuts repos whose README exists mainly to sell a paid job-data API. Those are funnels, not neutral open source, so this list ranks and names none of them.

JobSpy leads the ranking, since it covers the most consumer boards in one call.



## 1. JobSpy: Best for the Big Consumer Boards in One Call

[JobSpy](https://github.com/speedyapply/JobSpy) is the best open-source pick when you need the major consumer job boards in one place. One function call returns LinkedIn, Indeed, Glassdoor, Google, and ZipRecruiter listings in a single normalized DataFrame.

JobSpy is a Python library requiring 3.10 or newer, MIT licensed, with 4,071 stars and 803 forks as of 2026-08-12. It supports `linkedin`, `indeed`, `glassdoor`, `google`, `zip_recruiter`, `bayt`, `naukri`, and `bdjobs` as `site_name`values.

Install it and call `scrape_jobs()` with the boards, search term, and location you want.

bash```bash
pip install -U python-jobspy
```



python```python
from jobspy import scrape_jobs

jobs = scrape_jobs(
    site_name=["indeed", "linkedin", "zip_recruiter", "glassdoor"],
    search_term="python developer",
    location="Austin, TX",
    results_wanted=20,
    hours_old=72,
    country_indeed="USA",
)

print(f"Found {len(jobs)} jobs")
print(jobs[["site", "title", "company", "location"]].head(10).to_string())
```



text```text
2026-08-12 16:21:35,300 - ERROR - JobSpy:Glassdoor - Glassdoor response status code 400
2026-08-12 16:21:35,300 - ERROR - JobSpy:Glassdoor - Glassdoor: location not parsed
2026-08-12 16:21:35,957 - ERROR - JobSpy:ZipRecruiter - ZipRecruiter response status code 403 with response: {"error_code":"forbidden aa","error_message":"forbidden aa",...}
2026-08-12 16:21:40,679 - INFO - JobSpy:Linkedin - finished scraping
Found 36 jobs
     site                                                        title                                     company        location
0  indeed                             Software IPT Lead - Texas Remote                                       Serco  Austin, TX, US
1  indeed                                           Senior AI Engineer                                Cirrus Logic  Austin, TX, US
3  indeed                                  Partner Solutions Architect                                      Striim  Austin, TX, US
5  indeed         Cloud Platforms and Infrastructure Engineer, TPU/GPU                                      Google  Austin, TX, US
9  indeed                                           Software Developer                                      Oracle  Austin, TX, US
```



Indeed and LinkedIn returned 36 real listings in the same run. Glassdoor failed with a 400, and ZipRecruiter returned a 403, even on a plain "Austin, TX" location string.

That mixed result is the honest state of a tool reading endpoints the boards never published. Some sources work, and some block on a given day.

JobSpy reads reverse-engineered public endpoints, so a board that changes its markup can silence a source until the maintainers catch up. The README warns that LinkedIn "usually rate limits around the 10th page with one ip."

Every board caps a single search near 1,000 results, and JobSpy covers jobs only, not LinkedIn profiles or company pages.

[How to Scrape LinkedIn Profiles, Companies, and Jobs in 2026LinkedIn aggressively blocks scrapers. This guide shows how to scrape profiles, companies, and jobs anyway using ScrapFly's anti-bot solution. Python code included.](https://scrapfly.io/blog/posts/how-to-scrape-linkedin)

JobSpy is the default for a developer who wants consumer-board breadth in one call and can supply proxies for the LinkedIn source.

The next pick covers the same consumer boards without a proxy pool you run yourself.



## Managed Alternative: Scrapfly Job Scrapers (Source-Available, NPOSL-3.0)

Scrapfly's job scrapers are a source-available NPOSL-3.0 managed alternative when you need multi-board data reliably. Each module requires a Scrapfly API key, and you do not maintain proxies, anti-bot logic, or reverse-engineered endpoints yourself.

The [scrapfly-scrapers](https://github.com/scrapfly/scrapfly-scrapers)monorepo had 1,061 stars, 203 forks, and a push on August 12, 2026, the most active repo in that snapshot. It is source-available under NPOSL-3.0 (Non-Profit Open Software License 3.0), not an MIT-licensed entry in the ranking.

The monorepo ships separate `indeed-scraper`, `glassdoor-scraper`, `linkedin-scraper`, and `google-jobs-scraper` modules you compose into a multi-board pipeline.

Each module is Python code that runs on Scrapfly's Web Scraping API. The platform's TypeScript, Go, and Rust SDKs belong to the API itself, not to these parsing modules. A non-Python stack would port the parsing logic instead of reusing it directly.

The parsing logic is source-available under NPOSL-3.0 and free to read. Proxy rotation, TLS fingerprint matching, and challenge solving happen behind one API call, so you skip writing stealth code and reverse-engineering board endpoints yourself.

You don't manage an account to ban or a proxy pool to run, since every request goes through the managed layer. When a board changes its markup, the fix ships from Scrapfly's side, and you pull the update instead of rewriting a scraper.

Clone the repo, install the `indeed-scraper` module's dependencies, and run it against a live search.

bash```bash
git clone https://github.com/scrapfly/scrapfly-scrapers.git
cd scrapfly-scrapers/indeed-scraper
poetry install
export SCRAPFLY_KEY="YOUR_SCRAPFLY_KEY"
poetry run python run.py
```



`run.py` calls the module's two functions unmodified, scraping a search page and two individual job postings:

python```python
import asyncio
import json
from pathlib import Path
import indeed

output = Path(__file__).parent / "results"
output.mkdir(exist_ok=True)


async def run():
    indeed.BASE_CONFIG["cache"] = True

    url = "https://www.indeed.com/jobs?q=python&l=Texas"
    result_search = await indeed.scrape_search(url, max_results=10)
    output.joinpath("search.json").write_text(json.dumps(result_search, indent=2, ensure_ascii=False), encoding="utf-8")

    jobs = ["851525cd1dc01964", "0e633abc66767644"]
    result_jobs = await indeed.scrape_jobs(jobs)
    output.joinpath("jobs.json").write_text(json.dumps(result_jobs, indent=2, ensure_ascii=False), encoding="utf-8")


if __name__ == "__main__":
    asyncio.run(run())
```



text```text
python3 run.py
2026-08-12 16:22:17.327 | INFO | indeed:scrape_search:54 - scraping search: https://www.indeed.com/jobs?q=python&l=Texas
2026-08-12 16:22:51.849 | INFO | indeed:scrape_jobs:98 - scraping 2 job listings
running Indeed scrape and saving results to ./results directory

# results/search.json: 15 job cards in the committed result file
# results/jobs.json: 2 full job postings
{
  "companyName": "Blue Yonder",
  "jobTitle": "Staff Software Engineer (python)",
  "description": "<len 5951 chars>"
},
{
  "companyName": "CAP Digisoft Solutions",
  "jobTitle": "Data Engineer/Python Developer",
  "description": "<len 1327 chars>"
}
```



The search call returned 15 live job cards for a Python search in Texas. Both hardcoded job keys resolved to full postings from Blue Yonder and CAP Digisoft Solutions.

The module reads Indeed through the API's anti-bot bypass, so you don't write proxy or stealth code of your own.

The source-available modules are free to clone, and each one needs a `SCRAPFLY_KEY` to run. The anti-bot layer is the paid Web Scraping API behind them after any trial credits. Check Scrapfly's [pricing page](https://scrapfly.io/pricing) before you commit to ongoing use.

You compose the per-board modules yourself instead of getting every board from one function call, which is the tradeoff for reliability over DIY control.

JobSpy and the Scrapfly managed alternative both read consumer boards. The next two ranked entries read ATS platforms directly instead.



## 2. jobhive: Best for ATS-Native Job Data Without Duplicates

jobhive runs on top of the open-source `ats-scrapers` project ([kalil0321/ats-scrapers](https://github.com/kalil0321/ats-scrapers)). It's the best pick when you want clean job data straight from the applicant tracking systems companies post to. Consumer boards duplicate that same data many times over.

The repo has 125 stars, 25 forks, and MIT licensing, last pushed 2026-08-07. It ships on PyPI as `ats-scrapers`, imported as `ats_scrapers`. Its `search()` function queries a hosted dataset of more than 4.2 million live jobs from 63,000-plus companies.

Adapters cover 50-plus ATS platforms, including ADP Workforce Now, Greenhouse, Lever, Ashby, Workday, SmartRecruiters, and SuccessFactors. First-party company APIs add Amazon, Apple, Google, TikTok, and Uber.

Install the package and search a single ATS by query and location.

bash```bash
pip install ats-scrapers
```



python```python
from ats_scrapers import search

jobs = search(
    query="machine learning engineer",
    location="Paris",
    ats="greenhouse",
    limit=10,
)

print(jobs[["company", "title", "location", "apply_url"]].head(5))
```



text```text
<class 'pandas.DataFrame'>
(9, 27)
['global_id', 'url', 'title', 'company', 'ats_type', 'ats_id', 'location', 'country_iso', 'region', 'language', 'lat', 'lon', 'is_remote', 'salary_min', 'salary_max', 'salary_currency', 'salary_period', 'salary_summary', 'employment_type', 'department', 'team', 'description', 'posted_at', 'requisition_id', 'apply_url', 'commitment', 'raw']
                 company                                                            title              location  apply_url
0               dashlane                                       Machine Learning Engineer          Paris, France        NaN
1       perionnetworkltd                                Machine Learning Engineer, Outmax  Paris, Paris, France        NaN
2                 proton                           Senior Machine Learning Engineer (SOC)         Paris; Geneva        NaN
3  decathlontechnologyen        Machine Learning Engineer - PRISM - Supply Chain (f/m/d)   Paris, Paris, France        NaN
4               doctolib  Principal Machine Learning Engineer - Applied AI & LLMs (x/f/m)  Paris, Paris, France        NaN
```



The query returned nine Greenhouse-hosted listings across 27 fields, with no API key or account. In this sample, `apply_url` came back empty for every row, so check which fields your search needs before you depend on one.

Going one layer below LinkedIn and Indeed removes the reposts and ghost listings that fill consumer boards, since one ATS posting is one row.

The tradeoff is coverage. `ats-scrapers` only sees companies that post through one of its 50-plus supported systems, so it misses postings that live only on a consumer board.

ats-scrapers is also the youngest, lowest-star repo in this roundup, so confirm the dataset's freshness before you build on it.

The next entry trades platform breadth for a single, self-hosted build.



## 3. Levergreen: Best for a Reference Multi-Board ATS Pipeline

Levergreen is the best pick when you want a full, working example of a multi-board ATS pipeline you can learn from or self-host.

You'll find the project at [adgramigna/job-board-scraper](https://github.com/adgramigna/job-board-scraper). It's MIT licensed with 47 stars and 7 forks, last pushed 2025-11-27.

Its README documents Greenhouse and Lever as scraped through Scrapy spiders. The repo also ships `get_ashby_jobs.py` and `get_rippling_jobs.py`scripts that a daily GitHub Actions workflow runs alongside them, not through spider classes.

Three Scrapy spiders, two for Greenhouse and one for Lever, run through a single `run_job_scraper.py` orchestrator. Raw HTML gets cached to S3, so the pipeline doesn't re-scrape the same board twice in one day.

Cleaned data lands in Neon Serverless Postgres, and dbt Core converts it into a unified model. GitHub Actions runs the whole thing on a daily cron, and the result surfaces through Airtable, Hightouch, and Softr.

Levergreen is the full reference architecture most tutorials skip. It covers scheduled spiders, a cache layer that avoids duplicate scrapes, a unified data model, and a real deployment path across boards.

If you're building your own multi-board ATS pipeline, this shows the moving parts end to end instead of one opaque function call.

Levergreen is a personal project built around one developer's stack of Neon, dbt, and Airtable. You'd adapt it rather than install it as a library.

Levergreen's last commit predates jobhive's, so confirm the two spiders still match each board's current markup before you rely on them.

Consumer boards and ATS platforms are worth comparing directly before you pick one.



Scrapfly

#### Scale your web scraping effortlessly

Scrapfly handles proxies, browsers, and anti-bot bypass — so you can focus on data.

[Try Free →](https://scrapfly.io/register)## Consumer Boards or ATS Platforms? (Choosing Your Data Source)

Consumer boards give you the widest reach and the freshest reposts but fight scrapers hard and duplicate the same listing many times over. ATS platforms give you cleaner, deduplicated data straight from the source, but only for companies that use one.

Consumer job boards like Indeed and LinkedIn aggregate postings from everywhere, so they cover the most companies and roles. That breadth comes with duplicate listings, reposts, ghost jobs, and the most aggressive anti-bot defenses in this whole list.

JobSpy's own Glassdoor and ZipRecruiter failures above show exactly that.

ATS platforms are where a company posted the job. One listing equals one row with an accurate title, location, and sometimes a salary range, limited to companies on that system.

Two paths follow from that split. Consumer-board aggregation with JobSpy or Scrapfly's source-available NPOSL-3.0 managed modules gives you the broadest reach, useful for trend data or job-seeker tools. The cost is duplicates and rate limits.

ATS-native reading with ats-scrapers or Levergreen gives you the cleanest per-company data, useful for hiring signals and salary tracking. Both narrow to companies on a supported ATS.

Many production pipelines run an ATS scraper for clean data alongside a consumer-board scraper for reach, then dedupe the two.

Consumer boards are where you hit anti-bot walls. A managed [Web Scraping API](https://scrapfly.io/products/web-scraping-api) earns its place there, reading public pages reliably without an account to protect or a proxy pool to run.

Glassdoor's own defenses are one example of a board that blocks a plain script fast.

[How to Scrape Glassdoor (2026 update)In this web scraping tutorial we'll take a look at Glassdoor - a major resource for company review, job listings and salary data.](https://scrapfly.io/blog/posts/how-to-scrape-glassdoor)

That split covers multi-board tools. Single-board options work differently.



## What About Single-Board Job Scrapers?

When you only need one board, a focused single-board scraper is often simpler and better maintained than a multi-board tool. It's a different job from this list, so it sits here rather than in the ranked picks.

The ranked entries above target multi-board coverage. If your whole project is one board, a dedicated repo can track that board's quirks more closely than a generalist tool does.

For LinkedIn jobs alone, [spinlud/py-linkedin-jobs-scraper](https://github.com/spinlud/py-linkedin-jobs-scraper)is a common pick, MIT licensed with 491 stars and pushed as recently as 2026-08-10.

For Indeed, Glassdoor, or Google Jobs alone, Scrapfly's source-available NPOSL-3.0 `indeed`, `glassdoor`, and `google-jobs` modules are a managed per-board alternative that requires an API key. The how-to guides linked earlier cover the method walkthroughs.

Single-board repos are pointers here, not ranked entries. This list ranks multi-board coverage, and a one-board tool solves a narrower problem.

Board coverage isn't the only filter worth applying before you clone one.



## Which Job Scraper Repos Should You Avoid?

This list skips archived tools that still rank on old stars and stale, unlicensed repos. It also skips repos that lead with a paid job-data API instead of open code.

**Archived but high-star.** The most-cited alternative to JobSpy, [JobFunnel](https://github.com/PaulMcInnis/JobFunnel), has 2,178 stars. It has sat archived and read-only since December 2025, so it no longer tracks board changes. Stars persist long after a repo stops shipping. The archive flag and the last-commit date are the signals that matter.

**Stale, unlicensed repos.** Several low-star multi-board scrapers on GitHub haven't shipped since 2024 and carry no license file at all. That combination is both a maintenance risk and a legal gray area for commercial use.

**Paid-API funnel repos.** Some repos in this space lead their README with a promo for a paid, hosted job-data API. They stand on the pitch instead of the open-source code itself. The giveaway is a sponsor block selling access above the usage docs. Treat those as funnels, not neutral open source.

None of this means open source is a dead end here. It means you check the last commit, the archive flag, and what the README is selling before you clone.

Even a well-maintained repo runs into the same technical failure modes.



## Why Open-Source Job Scrapers Break (and How to Keep One Running)

Job boards defend their data with endpoint churn, rate limits, and schema drift. A static, self-hosted scraper stops returning clean data the moment a board shifts its markup or tightens its limits.

Most consumer-board scrapers call private JSON endpoints or parse HTML the board never published as an API. The board can change either without notice.

When it does, that source goes quiet until a maintainer patches it. JobSpy's own Glassdoor and ZipRecruiter calls did exactly that in the run shown earlier.

Boards also score IP quality, request pace, and browser fingerprints. LinkedIn rate-limits after a handful of pages from one IP, so any serious run needs residential proxies or a managed fetch layer behind it.

Even a successful scrape can drift. Field names and structures shift across boards and over time, so a multi-board pipeline needs a normalization layer, or it fills with inconsistent rows.

Keeping a scraper running costs ongoing work. You track each board's endpoint and markup changes, rotate proxies, handle challenges, and maintain one schema across sources.

This tracking work is the maintenance burden that turns a weekend script into an ongoing project. It's also a large part of why Google Jobs has its own access decision to make, outside the open-source scrapers covered here.

[Guide to Google Jobs API and AlternativesExplore Google Jobs API alternatives like structured data, web scraping, and third-party job APIs to integrate job listings.](https://scrapfly.io/blog/posts/guide-to-google-jobs-api-and-alternatives)



## Backing a Job Scraper With a Managed Fetch Layer

Every tool in this list eventually runs into the same wall. A board changes its markup, tightens rate limits, or adds a new bot check, and the scraper you wrote stops working until someone patches it.



ScrapFly's [Web Scraping API](https://scrapfly.io/products/web-scraping-api) collects public web data through one HTTP endpoint, with a **98% success rate on the hardest public pages** and residential and datacenter coverage in **190+ countries**.

- [Anti-Scraping Protection bypass](https://scrapfly.io/docs/scrape-api/anti-scraping-protection) - enables Scrapfly's managed anti-bot adaptation for supported public targets.
- [Smart proxy rotation](https://scrapfly.io/docs/scrape-api/proxy) - residential and datacenter pools with country and ASN level geo-targeting.
- [JavaScript rendering](https://scrapfly.io/docs/scrape-api/javascript-rendering) - render SPAs and dynamic pages through real cloud browsers.
- [Browser automation scenarios](https://scrapfly.io/docs/scrape-api/javascript-scenario) - scroll, click, fill forms, and wait for elements without managing a browser fleet.
- [Format conversion](https://scrapfly.io/docs/scrape-api/getting-started#api_param_format) - return pages as HTML, JSON, clean text, or LLM ready Markdown.
- [Session management](https://scrapfly.io/docs/scrape-api/session) - keep cookies, headers, and IPs consistent across multi step flows.
- [Smart caching](https://scrapfly.io/docs/scrape-api/getting-started#api_param_cache) - cache successful responses to cut cost on repeat scraping jobs.
- [Python](https://scrapfly.io/docs/sdk/python), [TypeScript](https://scrapfly.io/docs/sdk/typescript), [Scrapy](https://scrapfly.io/docs/sdk/scrapy), and [no-code integrations](https://scrapfly.io/docs/integration/getting-started) including [Make](https://scrapfly.io/integration/make), [n8n](https://scrapfly.io/integration/n8n), [Zapier](https://scrapfly.io/integration/zapier), [LangChain](https://scrapfly.io/integration/langchain), and [LlamaIndex](https://scrapfly.io/integration/llamaindex).

The three ranked scrapers and Scrapfly's source-available managed alternative can run on top of that API. That beats maintaining a proxy pool yourself.



### Power your scraping with Scrapfly

Forget about getting blocked. Scrapfly handles anti-bot bypasses, browser rendering, and proxy rotation so you can focus on the data.



[Try for FREE!](https://scrapfly.io/register)



## FAQ

What is the best open-source job scraper?JobSpy is the best option for major job boards. For ATS data, use ats-scrapers. For a managed solution, use Scrapfly.







Can I scrape job listings with Python?Yes. Every ranked tool is Python, from JobSpy for consumer boards to ats-scrapers for ATS platforms. Scrapfly's source-available managed-alternative modules are Python too, and the underlying Web Scraping API also has TypeScript and Scrapy support if you work outside Python.







How do I scrape jobs from multiple boards at once?JobSpy pulls several consumer boards in one `scrape_jobs()` call, while ATS tools like ats-scrapers read Greenhouse, Lever, and other systems directly. Production pipelines often combine both, then dedupe the output.







Why does my job scraper keep breaking?Most job-board scrapers rely on reverse-engineered endpoints that change without notice, and boards throttle hard, often after ten pages from one IP. Dating the last commit and adding proxies or a managed fetch layer are the usual fixes.







Is scraping job listings legal?US courts have treated scraping public, logged-out job data as defensible since hiQ Labs v. LinkedIn (9th Cir. 2022), but logging in, bypassing access barriers, or handling personal data carries real legal weight. This is not legal advice.







What about the Google Jobs API?Google Jobs has its own access-and-alternatives decision, separate from the open-source scrapers covered here. This list focuses on the repos instead of that managed API.









## Summary

No single open-source repo covers every job board, so the right pick tracks your data source, not a star count.

JobSpy is the fastest way to pull the big consumer boards in one call. ats-scrapers reads ATS platforms directly and skips duplicates.

Levergreen shows a full reference pipeline. Scrapfly's source-available NPOSL-3.0 modules sit outside the ranking as a managed alternative when you do not want to operate the fetch layer yourself.

Check the archive flag and the last commit before you clone anything in this space. JobFunnel proves a repo can carry thousands of stars and still be dead code. The tool that fits your project is the one that still runs against the boards you need today.



Legal Disclaimer and PrecautionsThis tutorial covers popular web scraping techniques for education. Interacting with public servers requires diligence and respect:

- Do not scrape at rates that could damage the website.
- Do not scrape data that's not available publicly.
- Do not store PII of EU citizens protected by GDPR.
- Do not repurpose *entire* public datasets which can be illegal in some countries.

Scrapfly does not offer legal advice but these are good general rules to follow. For more you should consult a lawyer.

 

   [  Add as a preferred source ](https://google.com/preferences/source?q=scrapfly.io) Table of Contents















 

  Table of Contents- [Key Takeaways](#key-takeaways)
- [Which Open-Source Job Scraper Should You Use?](#which-open-source-job-scraper-should-you-use)
- [How Did We Rank These Job Scrapers?](#how-did-we-rank-these-job-scrapers)
- [1. JobSpy: Best for the Big Consumer Boards in One Call](#1-jobspy-best-for-the-big-consumer-boards-in-one-call)
- [Managed Alternative: Scrapfly Job Scrapers (Source-Available, NPOSL-3.0)](#managed-alternative-scrapfly-job-scrapers-source-available-nposl-3-0)
- [2. jobhive: Best for ATS-Native Job Data Without Duplicates](#2-jobhive-best-for-ats-native-job-data-without-duplicates)
- [3. Levergreen: Best for a Reference Multi-Board ATS Pipeline](#3-levergreen-best-for-a-reference-multi-board-ats-pipeline)
- [Consumer Boards or ATS Platforms? (Choosing Your Data Source)](#consumer-boards-or-ats-platforms-choosing-your-data-source)
- [What About Single-Board Job Scrapers?](#what-about-single-board-job-scrapers)
- [Which Job Scraper Repos Should You Avoid?](#which-job-scraper-repos-should-you-avoid)
- [Why Open-Source Job Scrapers Break (and How to Keep One Running)](#why-open-source-job-scrapers-break-and-how-to-keep-one-running)
- [Backing a Job Scraper With a Managed Fetch Layer](#backing-a-job-scraper-with-a-managed-fetch-layer)
- [FAQ](#faq)
- [Summary](#summary)
 
    Join the Newsletter  Get monthly web scraping insights 

 

  



Scale Your Web Scraping

Anti-bot bypass, browser rendering, and rotating proxies, all in one API. Start with 1,000 free credits.

  No credit card required  1,000 free API credits  Anti-bot bypass included 

 [Start Free](https://scrapfly.io/register) [View Docs](https://scrapfly.io/docs/onboarding) 

 Not ready? Get our newsletter instead. 

 

 ## Related Articles

 [  

 python scrapeguide 

### How to Scrape Indeed.com (2026 Update)

In this web scraping tutorial we'll be taking a look at Indeed.com - a popular job listing website. In just few lines of...

 

 ](https://scrapfly.io/blog/posts/how-to-scrape-indeedcom) [     

 python scrapeguide 

### 5 Best Open-Source LinkedIn Scrapers on GitHub in 2026

Five open-source LinkedIn scraper repos on GitHub ranked by auth model, dated maintenance and honest ban risk, with live...

 

 ](https://scrapfly.io/blog/posts/best-linkedin-scrapers-github) [     

 python scrapeguide 

### 5 Best Open-Source Facebook Marketplace Scrapers on GitHub in 2026

A dated, freshness-first roundup of the open-source Facebook Marketplace scrapers on GitHub worth cloning in 2026, and t...

 

 ](https://scrapfly.io/blog/posts/best-facebook-marketplace-scrapers-github) 

  



   



 Scale your web scraping effortlessly, **1,000 free credits** [Start Free](https://scrapfly.io/register)