freehire Pulls 3.3M+ Job Postings From Company Career Pages
The MIT-licensed project crawls company ATS platforms directly and collapses duplicate listings, with a Go and SvelteKit stack you can self-host.

Image source: https://github.com/strelov1/freehire
Crawling Company ATS Pages
freehire is an open-source search engine for IT roles. Its README headlines the promise "Every IT job, straight from the source," and says each listing is crawled directly from a company's own applicant tracking system — Workday, Greenhouse, Lever, Ashby, iCIMS among others — and links to the original posting. The README's own source accounting is more mixed than that headline: alongside ATS platforms it counts a long tail of aggregators and direct feeds, plus 97 Telegram channels.
The README reports 3.3M+ unique live postings from 470,000+ companies across 124 ATS platforms, a long tail of aggregators and direct feeds, and 97 Telegram channels — 320 sources in all — noting that every such figure is what freehire.me/jobs actually shows.
One Schema, Deduplicated
Postings are normalized into one shape and deduplicated on a stable key, so a role posted to three boards collapses into one entry. Faceted full-text search covers region, work mode, seniority, skills and salary, using curated dictionaries.
The same repository also carries a CV builder, an application board and a keyless public API. The CLI and the MCP server for Claude Desktop and Claude Code live in separate companion repositories linked from that README.
Stack and Self-Hosting
The server is Go with Fiber v2, PostgreSQL with pgvector, sqlc-generated access, Meilisearch, Redis and S3-compatible storage, and a SvelteKit 2 and Tailwind 4 frontend under Docker Compose.
JWT_SECRET is required for the server to start; OAuth and LLM credentials are optional, and the features they gate stay disabled when unset. Crawling, enrichment, indexing and notifications run as standalone workers meant for cron, and the README states no worker hard-deletes jobs — the lifecycle only soft-closes them.