
I started this for myself. I wanted the open roles at every big company in one place, without visiting hundreds of career pages. It now holds about 1 million live jobs from 35,000+ companies, and it's on RapidAPI.
The jobs aren't scraped from job boards. They come from the employers' own career-site platforms (Greenhouse, Lever, Ashby, Workday, SmartRecruiters and 20 more sources), so every applyUrl points to the company's own application page. A nightly refresh adds new postings, about 30,000 a day, and drops the ones that have closed.
The filters are the reason it exists
The job-search APIs I compared filter by keyword, location and sometimes experience, but not by department or category. I wanted to ask for "senior DevOps, remote, open to people in India" and get exactly that. So this one has 19 categories with 114 subcategories, five experience levels, country, state and city, remote, hybrid or onsite, keyword include and exclude, company, source, and posted-within-days.
curl --request GET \
--url 'https://company-career-sites-jobs-api1.p.rapidapi.com/api/public/v1/jobs?categories=DevOps%2C%20Cloud%20%26%20Infrastructure&experienceLevels=Senior&countries=India&workModes=remote&limit=2' \
--header 'x-rapidapi-host: company-career-sites-jobs-api1.p.rapidapi.com' \
--header 'x-rapidapi-key: YOUR_KEY'
Each response carries a nextCursor. Pass it back as cursor to get the next page.
One edge case to know about: remote jobs that are open to anyone, anywhere, have no country, so a country filter drops them. includeWorldwideRemote=true brings them back, and includeUnspecifiedLocation=true does the same for jobs that list no location at all.
The database took three tries
At first the data lived in GitHub JSON files inside an app, and the first load took far too long. I moved it to Supabase, hit the 500 MB limit, and queries slowed down as the data grew. Now it's Postgres on an Oracle VM with more RAM and storage, and queries are very fast. Getting the VM took a workflow of its own. One filtered India query needed about 3 seconds until I added indexes on the lowercased columns; it now runs in under half a second.
If your dataset is heading toward a million rows, start on the machine you'll end up on. I paid for two migrations to learn that.
What it isn't
It isn't every job on the internet. Aggregators that index the whole web have a bigger catalogue than mine, and if that's what you need, use one. This is the opposite trade: about 1M jobs, all from employers' own pages, with filters that go further. There is no UI and nothing decorative, only structured data.
That suits a new job board filling its first listings, a niche board that needs a backfill for one category and region, or an alert tool that watches one filter every morning. Checking company pages by hand every day takes hours. One call replaces it.
On RapidAPI each call returns up to 10 jobs plus a cursor, which works for search, alerts and filling a niche. If you need the whole index, the same data is available on Apify, billed per result.
There's a free Basic plan to try it: Company Career Sites Jobs API on RapidAPI.


Top comments (0)