I checked 37,000 career portals for India jobs. Only 2,354 had any.
I checked 37,000 career portals for India jobs. Only 2,354 had any. I run careerscan.in, a free job board for India. It lists 382,000+ jobs right now, and every one of them comes straight from the employer's own career
I checked 37,000 career portals for India jobs. Only 2,354 had any.
I run careerscan.in, a free job board for India. It lists 382,000+ jobs right now, and every one of them comes straight from the employer's own career page, with no middlemen, no reposts, and no fees for jobseekers. I built it for $0, with no paid tools and no credit card.
Building the board was the easy part. The surprise was how little of the internet actually has India jobs on it.
Where we started
Most companies do not type their jobs into a job board. They enter each role once into an applicant tracking system, and that system publishes a public career page. Greenhouse, Lever, Ashby, Workday, Zoho Recruit, and the rest all expose those pages, and most of them serve the job list as JSON with no key, no login, and no headless browser.
So I collected every company career page I could find. Two lists made up the pile: 61,817 boards from one list, plus 46,078 new ones from a public dataset of ATS career page URLs. That is about 108,000 boards in total.
The plan was simple. Check each board for India jobs, keep the ones that have them, and wire those into the scraper.
The 6% finding
We have checked about 37,000 boards so far. Only 2,354 of them have any India jobs at all. That is about 6%.
Those 2,354 boards hold 42,317 India jobs between them. The rest are dead boards, US-only boards, or boards with zero India openings.
If you start from a big list, expect most of it to be noise. The filtering step is the real work. I spent far more time deciding which boards count than I spent fetching jobs from the ones that do.
The ATS breakdown
The scraper now covers 16,920 boards. Here is how they split by platform:
| ATS | Boards in the scraper |
|---|---|
| Greenhouse | 4,331 |
| Ashby | 3,871 |
| SmartRecruiters | 2,360 |
| Lever | 1,992 |
| Workday | 1,308 |
| Keka | 735 |
| Recruitee | 726 |
| Pinpoint | 467 |
| Workable | 344 |
| Zoho Recruit | 251 |
| BambooHR | 89 |
| iCIMS | 41 |
| Jobvite | 32 |
| Breezy | 21 |
| Freshteam | 18 |
| UKG / Ultipro | 13 |
| Darwinbox | 5 |
| Oracle HCM | 5 |
| Eightfold | 2 |
| Other / standalone | 309 |
| Total | 16,920 |
Greenhouse and Ashby lead the list; that is the mix in my pile. Keka and Zoho Recruit show up because of the India focus. Workday is the one that took the most work to crack, and it is worth its own section below.
The endpoints
Every platform below serves its job list from a public endpoint. These are the ones I use in production, verified against live boards:
| Platform | Endpoint |
|---|---|
| Greenhouse | GET boards-api.greenhouse.io/v1/boards/{slug}/jobs?content=true |
| Lever | GET api.lever.co/v0/postings/{slug}?mode=json |
| Ashby | GET api.ashbyhq.com/posting-api/job-board/{slug}?includeCompensation=true |
| Workable | GET apply.workable.com/api/v1/widget/accounts/{slug}?details=true |
| SmartRecruiters | GET api.smartrecruiters.com/v1/companies/{id}/postings |
| Recruitee | GET {slug}.recruitee.com/api/offers/ |
| BambooHR | GET {board}.bamboohr.com/careers/list |
| Zoho Recruit |
{board}.zohorecruit.com/jobs/Careers (embedded list) |
| Breezy |
{board}.breezy.hr/ (HTML only, no JSON API) |
| Keka | GET {board}.keka.com/careers/api/embedjobs/default/active/{company_uuid} |
| Pinpoint | GET {board}.pinpointhq.com/postings.json |
| Workday | POST {tenant}.wdN.myworkdayjobs.com/wday/cxs/{tenant}/{site}/jobs |
The {slug} is whatever the company typed when it set up the account, not always the company name. The fastest way to find it is to open the company's career page and look at where the jobs come from. For Keka, the company UUID sits in the careers page HTML.
The gotchas
Workday cost me the most time. Its jobs endpoint is a POST, it returns 20 jobs per page, and any limit over 20 comes back as a 400 error. I found that out by sending limit 50 and watching it fail.
POST /wday/cxs/{tenant}/{site}/jobs
{"appliedFacets": {}, "limit": 20, "offset": 0, "searchText": ""}
Pagination has to use limit 20, and you need the India facet filter or you will count the whole global headcount by mistake. Accenture alone reports 2,000 jobs globally.
SmartRecruiters undercounts on page one. The first page of results can show a single India job for a company that actually has dozens. The total lives in the totalFound field when you filter by country, so ask for country=in and read that number. Veolia went from 2 to 71 once I did that. Intuitive went from 1 to 56.
Counting India jobs by searching for the word "India" in the location does not work. Job listings in South Bend, Indiana get counted. So do jobs in Punjab, Pakistan. I count by country code or by Indian city and state names now. One batch counted 41 jobs in Salem, Oregon, New Hampshire, and Arkansas as India jobs, and 5 more in Punjab, Pakistan. Those two traps added 46 false jobs before I caught them.
Demo boards pollute the counts too. One Keka board called "csdemo" listed 602 India jobs that turned out to be test postings, with departments named "abc" and "123 c". I exclude demo and test boards before I count anything.
Breezy and iCIMS have no public JSON feed. Breezy serves plain HTML, and iCIMS serves a plain HTML list at /jobs/search?ss=1. They still work, they just need parsing instead of a JSON call.
Being polite
Each board gets fetched in rotation, not hammered in a loop. When Workable rate-limited us through Cloudflare, we backed off to two workers instead of pushing through. These are the vendors' own public career pages, and the jobs are what they publish for anyone to see.
What the board is today
careerscan.in lists 382,000+ jobs, India only, all pulled from employers' own career pages. Jobseekers apply on the employer's own site, so there is nothing in between. It runs on free tiers and one small Oracle box, and the whole thing cost $0 to build.
The pile is still growing. The remaining boards from the 108,000 are still being checked, and the verified count will move as they finish.
If you build something like this, build the filter first. Most of what you find will be noise, and the noise is what eats your time.
What ATS should I add next? The board is at https://careerscan.in
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.