Scraping#Open-source alternatives#Web scraping
freehire: 3.3M live job postings, every one linking back to the source
freehire crawls postings straight from company ATS platforms, deduplicates them and links to the original page; MIT site, extension, API or self-hosted.
Project facts
GitHub Ecosystem- License
- MIT
- Language
- Go
- Stars
- 2,974
- Data checked
- 2026-10-23
Snapshot figures reflect the check date and may change over time.

Job boards are the annoying part of a job search: the same role gets reposted by recruiters and aggregators half a dozen times, a chunk of the links are dead, and the posting the company actually wrote gets buried under all of it. freehire is an MIT-licensed open-source job search engine written in Go, and its whole approach is to crawl the source instead: each posting comes directly from the company’s own applicant-tracking system and links back to the original page. GitHubDaily recommended it with the figure of 3.3M+ postings from 470k+ companies; the README’s own numbers agree and go a little further. The repository had 2,974 stars as of October 23, 2026.
Core features
- Crawls the ATS directly: Postings come from the major applicant-tracking systems — Workday, Greenhouse, Lever, Ashby, iCIMS — plus a long tail of aggregators and direct company feeds. The README splits its 320 sources into three kinds: 117 ATS platforms carrying about 2.94M postings, 133 aggregators and Telegram channels with about 445k, and 52 direct company feeds with about 23k.
- One job, one entry: The same role posted to three boards is normalized into a single schema and collapsed on a stable key. The README’s snapshot of October 20, 2026 counts 3,371,563 unique open postings across 477,323 companies, and is explicit that every count is post-deduplication.
- Faceted search that understands jobs: Region, work mode, seniority, skills and salary all work as filters, and the tags come from curated dictionaries — the README insists they are never guessed, so a posting without a reliable salary stays untagged.
- More than search: The same repository holds a CV builder with ATS-safe templates, deterministic CV-to-vacancy scoring, an application board with stages, an inbox that links recruiter replies to applications, and an in-process assistant.
docs/features.mdsays which features need an LLM endpoint and which draw on AI credits. - Open end to end: MIT-licensed, pipeline and frontend both. There is also a keyless public HTTP API (
GET https://freehire.me/api/v1/jobsworks with no credential), a separate CLI, and an MCP server for Claude Desktop and Claude Code. - Desktop and browser entry points: Official extensions are listed on both the Chrome Web Store and Firefox Add-ons; the README describes the Chrome one, a side panel next to whatever posting you are on that scores skill coverage against your freehire profile and can fill the application form. There is an iOS app on the App Store as well.

Typical use cases
- Job seekers: Treat freehire as the first hop — narrow the field with the facets, confirm the role is real on the company’s own page, then apply there. It removes the loop of cross-checking half a dozen aggregators.
- Developers analyzing the job market: A keyless API plus a deduplicated, uniform schema suits salary statistics or skills-demand trend work without maintaining your own crawlers.
- Anyone building a private jobs pipeline: The whole stack runs under Docker Compose with Postgres and Meilisearch, and adding a company is one row in the board catalog.
Quick start
The cheapest way in is the hosted site at freehire.me. To run your own, the README’s shortest path is a single make up — API, frontend, Postgres, Meilisearch, Redis and S3 all come up in Docker:
make up # build + start the whole stack: api, web, postgres, meilisearch, redis, s3
curl localhost:8080/health
curl localhost:8080/api/v1/jobs
One thing to know: make up starts services, not data. Postings arrive through standalone crawl workers (for example go run ./cmd/ingest greenhouse), so a fresh self-hosted instance does not magically hold 3.3M jobs.
Summary
freehire suits people who treat a job search as a project: they want clean first-party postings data and are willing to wire it into their own tools through the API or a self-hosted instance. If you just want to browse openings, the hosted site and the browser extension are enough, and self-hosting is overkill.
A few limits belong up front. Coverage leans on the mainstream Western ATS ecosystem; there are only 52 direct company feeds, and Chinese job platforms are largely outside its lanes. A self-hosted instance holds exactly as many postings as the sources you configure and keep running. The setup also depends on other companies’ career infrastructure staying stable — when an ATS changes its shape, a crawl channel breaks until someone patches the adapter, which is presumably why adding a source is one catalog row. The repository was created on June 7, 2026, is not archived, and its most recent push was October 24, 2026, so maintenance is active.
For the stage after finding a posting — ranking, tailoring, tracking applications — see ai-job-search, which runs that part on Claude Code; for turning recorded conversations into structured notes, AudioNotes is a lighter local option. We checked the README, the repository metadata and the live API on freehire.me; we did not run the full stack ourselves.