
You went looking for the Indeed API and hit a wall.
The old docs are archived. The signup page is closed. Half the forum threads say it is dead, and the other half link to pages that 404.
Here is the short version. There is no public Indeed API in 2026. Indeed retired its Publisher and Job Search APIs, so you cannot register for a key as a general developer. To get Indeed job data now, you use a third-party Indeed API that returns normalized postings over REST, build your own scraper, or pull from a marketplace. This guide covers all three and shows you the fastest one.
Does Indeed have an official API in 2026?
No. Indeed does not offer a public API in 2026. The Publisher API and Job Search API were deprecated, new registrations are closed, and what remains is limited to employer and applicant-tracking partner programs. If you are a developer who wants job data, the official door is shut, so you reach Indeed postings through a third-party Indeed job-data API instead.
I want to be honest about why this trips people up.
For years, “Indeed API” meant a real endpoint you could sign up for. That history is still all over Google, so you find tutorials that look current but point at a program that no longer takes developers.
So when people say “Indeed API” today, they mean one of the options above. The managed API is the one most teams end up on, because it is the only one with no scraper to babysit.
What is a modern Indeed API, really?
A modern Indeed API is a hosted REST service that returns Indeed job postings as normalized JSON. You send a request with a bearer key, the provider handles sourcing and parsing, and you get back a consistent role object with the same fields every time. RolesAPI runs this on a Cloudflare Worker gateway that authenticates your key, meters one credit per answer, and serves cached roles fast.
The word that matters there is normalized.
A raw Indeed page is HTML that changes shape whenever their team ships a redesign. A normalized role object is stable. Your code reads role.salary today and next quarter, no matter what the page looks like.
That single shape is why this scales. You learn the role object once, and every endpoint speaks it.
There is a second benefit that is easy to miss. Because the provider runs the sourcing, you inherit their coverage.
RolesAPI serves postings across more than 60 country editions from one search parameter. You do not build a scraper for the UK, then another for Germany. You change a country code.
Which Indeed API endpoints do you actually need?
Most projects use four endpoints: search, role detail, a sub-resource or two, and batch. Search takes a keyword, a location, and a country and returns matching postings. Role detail fetches one full role by its Indeed job key or viewjob URL. Sub-resources return just the salary or company block when that is all you want. Batch enriches up to 500 keys at once and fires a signed webhook when the job finishes.
Here is the full surface at a glance.
Start with search. You almost always need to find postings before you fetch details on them.
curl -X POST https://api.rolesapi.com/v1/search \ -H "Authorization: Bearer rk_live_your_key" \ -H "Content-Type: application/json" \ -d '{"query": "data engineer", "location": "Austin, TX", "country": "us"}'That returns a list of role summaries, each with a job key. Take a key and pull the full role.
Salary is a sub-resource, so you can grab only the pay block when that is all your feature needs. On a high-volume job, skipping the fields you do not use keeps your credit count down.
Search has a few controls worth knowing. You can page through results, and you can hit presets for common needs like posted-today, posted-this-week, or remote roles.
You also pick the output format. JSON is the default, but you can ask for CSV or NDJSON when you are piping roles into a spreadsheet or a data warehouse.
That flexibility is why one API can feed a web app, a nightly export, and an agent at the same time.
How do you make your first Indeed API call?
You make your first call in three steps: create a free account, generate a bearer key, and send an authenticated request. RolesAPI gives every new account 100 credits with no card, which is enough to test search, role detail, salary, and batch before you decide anything. Store the key server-side, then read a role by its job key.
Keep the key out of your front end. Put it in an environment variable and call the API from your server.
import requests
key = "rk_live_your_key"job_key = "a1b2c3d4e5f6"
r = requests.get( f"https://api.rolesapi.com/v1/roles/{job_key}", headers={"Authorization": f"Bearer {key}"},)role = r.json()
print(role["title"], role["company"])print(role["salary"])That is the whole loop. Search to find keys, then read detail on the ones you care about.
If you need thousands of roles, do not run a thousand single calls. Post them to the batch endpoint, let it run async, and catch the signed webhook when it completes.
Two things save you pain here. Watch your rate limit, which runs from 20 requests a minute on the free tier up to 300 on the annual plan, and check the /v1/usage endpoint so credits never surprise you.
Handle errors like you would any REST API. A bad key returns 401, an out-of-credits state returns a clear error, and rate-limit hits come back as 429 so you know to back off.
None of this is exotic. If you have called any bearer-auth API, you already know the shape.
How do you keep Indeed job data fresh?
You keep Indeed data fresh with scheduled pulls and webhooks, not by re-scraping. Run a search on a schedule, enrich the new job keys through the batch endpoint, and let the signed webhook tell you when the job is done. Cache each role so you never pay twice for the same posting, and refresh on the cadence your product actually needs.
Freshness is a product decision, not a technical one.
A job board that promises new roles daily needs a nightly pull. A salary dashboard can refresh weekly and be fine.
Pick the cadence, schedule the search, and only fetch detail on keys you have not seen before. That keeps your data current and your credit count low at the same time.
The webhook is the part people skip. Without it, you poll a job status endpoint on a loop and burn calls waiting.
With it, RolesAPI signs a request to your server the moment a batch finishes, and you react once instead of asking over and over.
How much does the Indeed API cost?
Indeed sells no public API, so price comes from third-party providers, and the models split into usage-based credits, flat subscriptions, and enterprise contracts. RolesAPI uses credits: free for 100 credits, 5 dollars a month for 1,000, or 54 dollars a year for 12,000. One credit equals one answer, about half a cent per call. Enterprise data vendors like Coresignal quote far higher minimums.
The trick to keeping cost low is to not fetch what you will not use.
Cache role detail so you do not pay twice for the same posting. Use field projection to trim payloads. Batch large pulls instead of looping single calls. These habits do more for your bill than any discount.
Here is the math on a real workload.
Say you run a niche job board that pulls 500 new roles a month and refreshes each one once. That is 1,000 answers, which fits the 5 dollar monthly plan exactly.
Need more? Top-ups are 4 dollars per 1,000 answers on the monthly plan and 3 dollars on annual, so scaling is a line item, not a renegotiation.
Compare that to a scraper, where the proxies alone often cost more than the entire API bill before you count a single engineer hour.
Indeed API vs scraping vs enterprise data: which should you use?
Pick based on maintenance tolerance and budget. A managed Indeed API wins when you want stable data and no upkeep. A scraper wins only for a one-off research pull you will throw away. Enterprise data vendors win when you need deep company and employee data and have the budget for a contract. For most job boards, aggregators, and agents, the managed API is the cheapest option once you count engineer hours.
Here is the same call laid out plainly.
| Option | Data focus | Free tier | Entry price | Maintenance |
|---|---|---|---|---|
| RolesAPI | Indeed postings | Yes, 100 credits | $5 / month | None |
| Coresignal | Company plus jobs | No | Enterprise | None |
| Theirstack | Postings plus signals | Limited | Mid-market | None |
| DIY scraper | Whatever you build | n/a | Proxies plus time | Constant |
The scraper looks free until you price the proxies and the week you lose each time Indeed ships a redesign.
I have watched teams build a scraper, ship it, and then quietly replace it with an API six months later. The data was never the hard part. The upkeep was.
There is a quieter cost too. A scraper ties up an engineer who could be building your actual product.
Every hour spent chasing a broken selector is an hour not spent on the feature your users asked for. That trade rarely shows up in a budget, but it is often the most expensive part.
What can you build with the Indeed API?
You can build job boards, salary and market dashboards, recruiting and sourcing tools, and AI agents on top of an Indeed API. Anything that needs live postings as data, rather than a person browsing a site, is a fit. RolesAPI returns the same role object to all of them, so your data layer stays identical no matter what you put on top.
I see the same handful of patterns over and over.
Job boards and aggregators pull postings by niche and location, then rank and display them.
Salary tools read the pay block across thousands of roles to chart what a title really earns in a given market.
Recruiting and sourcing tools watch for new postings that match a saved search, then alert a human.
Agents answer job questions inside a chat, calling the API through MCP instead of guessing.
One clean data source unlocks all of them. You stop rebuilding an integration every time you ship a new feature.
Is it legal to use an Indeed API?
Reading public Indeed postings through a compliant third-party API is the lower-risk path, but you still carry responsibility. Reputable providers return public posting data under their own terms and are not affiliated with Indeed. RolesAPI is independent and not affiliated with, endorsed by, or sponsored by Indeed. Review the provider’s terms and Indeed’s trademark guidance, and scope your use to what those terms allow.
Scraping the site yourself is where the real exposure lives.
Indeed discourages unauthorized scraping, and their anti-bot systems make it a moving target. A managed API puts a compliant, maintained layer between you and that risk.
Why is the Indeed API a good fit for AI agents?
An Indeed API is a strong fit for agents when it is discoverable and speaks their protocols. RolesAPI ships an MCP server, an OpenAPI 3.1 contract, and an llms.txt file, so an agent can find the service and call tools like search_roles and get_role_by_key without a human wiring it up. That turns live Indeed data into something a coding assistant or research agent can use directly.
This part is easy to underrate.
We ran keyword research across roughly 1,600 candidate terms before writing this guide. The core phrase, “indeed api,” draws about 720 searches a month, and almost none of the results are built for agents. The demand is real and the supply is thin.
An agent that needs job data should not have to scrape. It should ask.
Frequently asked questions
Does Indeed have an API in 2026?
No public one. Indeed retired its Publisher and Job Search APIs, and new developer registrations are closed. Access now runs through employer and ATS partner programs or through a third-party Indeed API. RolesAPI is one such option, returning normalized Indeed postings over REST with a free tier of 100 credits and no card.
How do I get Indeed job data without scraping?
Call a managed Indeed API. You send a keyword and location to a search endpoint, then fetch full role detail by job key. The response is normalized JSON, so there are no proxies, captchas, or broken selectors to maintain. RolesAPI covers 60+ country editions from a single search parameter.
How much does an Indeed API cost?
Indeed sells no public API, so cost comes from third-party providers. RolesAPI starts free with 100 credits, then charges 5 dollars a month for 1,000 credits or 54 dollars a year for 12,000. One credit equals one answer, roughly half a cent per call, which usually beats the proxy and engineering bill of a scraper.
Is it legal to use an Indeed API?
Reputable providers return public job-posting data and operate under their own terms. RolesAPI is independent and not affiliated with Indeed. Always review the provider’s terms and Indeed’s trademark guidance before you build. Reading normalized public postings through a compliant API is far safer than scraping the site directly.
What fields does the Indeed API return?
A normalized role object with title, company, location, salary, description, benefits, posted date, and job key. RolesAPI also exposes sub-resources, so you can request only the salary block or only the company block when that is all you need, which saves credits on high-volume jobs.
Can AI agents use the Indeed API?
Yes. RolesAPI ships an MCP server, an OpenAPI 3.1 contract, and an llms.txt file, so agents can discover and call it with tools like search_roles and get_role_by_key. That makes it a practical job-data source for coding assistants, research agents, and autonomous workflows, not just server code you write by hand.
Get your first Indeed role object today
Stop searching for a program that closed. The fastest path to Indeed data in 2026 is a managed Indeed API you can call in five minutes.
Create a free RolesAPI key, run the search call above, then read one role by its job key. You get 100 credits and no card, which is enough to prove it against your use case before you spend a dollar.