Indeed API
Job search with salary ranges and employer ratings, full postings with structured min and max salary, employer firmographics and employee reviews — each a single POST returning structured JSON. No publisher programme, no employer account.
50 free credits on signup, covering 25 Indeed calls. No card.
{ "data": { "query": "software engineer", "location": "Austin, TX", "url": "https://www.indeed.com/jobs?q=software+engineer&l=Austin%2C+TX", "page": 1, "total_results": 1237, "unique_results": 1198, "radius": 50, "count": 37, "jobs": [ { "pos": 1, "job_key": "db268b11ac6ba55b", "title": "Python AWS AI Developer", "url": "https://www.indeed.com/viewjob?jk=db268b11ac6ba55b", "company": "Infosys", "company_url": "https://www.indeed.com/cmp/Infosys" } ] }, "response_time": 2060, "credits_used": 2, "credits_remaining": 4724}Live call against the real endpoint — 2 free runs, then it's your own key.
What is the Scavio Indeed API?
The Scavio Indeed API is a REST API that returns public Indeed data as structured JSON. You send a keyword and location, a job key or an employer to one of 4 POST endpoints with your API key, and get back job postings with salary and employer ratings, a full posting, employer firmographics, or employee reviews with per-axis scores.
- 4
- endpoints, all live in production
- 2
- credits per call, above the 1-credit norm
- 0
- publisher programmes to join
Four endpoints, demand and reputation
Search finds the roles, detail prices them, company and reviews judge the employer.
Job search
POST /api/v1/indeed/searchPostings by keyword and location with salary range, job type and the employer's own rating on every row — plus a unique_results count that strips duplicate agency listings.
Job detail
POST /api/v1/indeed/jobOne posting in full, with the description as both plain text and HTML and salary broken into structured min and max.
Employer profile
POST /api/v1/indeed/companyIndustry, sectors, headquarters and founding year — firmographics attached to the hiring signal rather than looked up separately.
Employer reviews
POST /api/v1/indeed/company/reviewsEmployee reviews with pros, cons and per-axis ratings, so hiring demand and employer reputation come from one API.
All 4 Indeed endpoints
Every route is a POST, returns JSON, and takes the same API key. Indeed is priced at 2 credits per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Job search/api/v1/indeed/search | Title, employer with rating, location, salary range, job type, benefits | 2 |
Job detail/api/v1/indeed/job | Full description as text and HTML, structured salary min/max | 2 |
Employer profile/api/v1/indeed/company | Description, industry and sectors, headquarters, founding year | 2 |
Employer reviews/api/v1/indeed/company/reviews | Title, full text, pros and cons, overall and per-axis ratings | 2 |
50 free credits on signup covers 25 Indeed calls. See plans
Market demand in one call
Search a role and city, and read unique_results rather than the inflated total. The response on the right is a real capture, field names and all.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
res = client.indeed.search(query="software engineer", location="Austin, TX")
print(res["data"]["unique_results"], "unique of", res["data"]["total_results"])
for j in res["data"]["jobs"]:
print(j["job_key"], j["company"], j["title"][:40]){
"data": {
"query": "software engineer",
"location": "Austin, TX",
"url": "https://www.indeed.com/jobs?q=software+engineer&l=Austin%2C+TX",
"page": 1,
"total_results": 1237,
"unique_results": 1198,
"radius": 50,
"count": 37,
"jobs": [
{
"pos": 1,
"job_key": "db268b11ac6ba55b",
"title": "Python AWS AI Developer",
"url": "https://www.indeed.com/viewjob?jk=db268b11ac6ba55b",
"company": "Infosys",
"company_url": "https://www.indeed.com/cmp/Infosys"
}
]
},
"response_time": 2060,
"credits_used": 2,
"credits_remaining": 4724
}Why not Indeed's own API?
The open one was retired. What remains is partner access for people who already have a contract.
Indeed Publisher / Employer APIs
- The general-purpose Publisher API was retired for new users
- Current access runs through partner and employer programmes with agreements
- Employer APIs are scoped to jobs you already posted
- No self-serve path to read the public posting index
Scavio Indeed API
- One API key, issued at signup — no programme, no agreement
- Any public posting, employer profile or employee review
- Structured salary min and max rather than a display string
- Same key and JSON envelope as 30 other Scavio platforms
Scavio returns publicly available posting and employer data only, and never authenticates as a user.
What developers build with it
Hiring-signal intelligence
What a company posts is what it is building. Track roles by keyword and location to spot a competitor standing up a new team weeks before it is announced.
search + jobSalary benchmarking
Job detail returns salary as structured min and max rather than a string, so a market band for a role and city is an aggregation rather than a parsing project.
search + jobRecruitment market research
Size demand for a skill across cities, and read the employer's own rating alongside each posting to see who is hiring hard and who is churning.
search + company/reviewsEmployer brand monitoring
Pull employee reviews with pros, cons and per-axis scores, then run an LLM over the text to track sentiment about your workplace or a competitor's.
company/reviewsLead scoring for HR tech
A company posting twenty roles is a live buying signal for recruiting, payroll and onboarding tools. Combine posting volume with firmographics to rank accounts.
search + companyHow to get Indeed data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no Indeed publisher or employer account.
- 2
POST a query and location
Send {"query": "software engineer", "location": "Austin, TX"} to https://api.scavio.dev/api/v1/indeed/search with an Authorization: Bearer header. Job detail keys on the job_key each row returns.
- 3
Read unique_results, not total_results
Indeed duplicates postings across staffing agencies. The response returns both counts; unique_results is the honest measure of how many distinct roles exist. Each call costs 2 credits.
Indeed API FAQ
What is the Scavio Indeed API?
+
It is a REST API that returns public Indeed data as structured JSON. Four POST endpoints cover job search with salary and employer rating, full job detail with structured salary, employer profiles, and employee reviews. You authenticate with a Scavio API key.
Who are these endpoints for?
+
Recruiters and staffing firms sourcing roles; GTM teams using hiring as a buying signal; developers building job boards or HR tech; AI agent builders wiring Indeed in as an MCP or SDK tool; automation engineers running alerts inside n8n, Zapier or Make; and analysts benchmarking salaries. Same API for all of them.
Does Indeed have a public API?
+
Not an open one. Indeed retired its old Publisher API for general use, and current access runs through partner and employer programmes with commercial agreements. There is no self-serve first-party way to read public postings at scale.
How much does an Indeed request cost?
+
Every Indeed endpoint costs 2 credits, above the 1-credit norm on most Scavio platforms because the upstream fetch is heavier. New accounts get 50 free credits on signup, so 25 Indeed calls. Paid plans start at $30 per month for 7,000 credits.
Why are total_results and unique_results different?
+
Indeed lists the same role multiple times when several staffing agencies post it. total_results counts every listing; unique_results counts distinct roles after deduplication. Use unique_results for anything you report as market demand.
Do I get salary data?
+
Where Indeed publishes it. Search rows carry the salary range as displayed, and job detail returns it structured with min and max, which is what you need to aggregate a band rather than parse strings.
What does the response look like?
+
The API wraps the payload under a data key and adds credits_used and credits_remaining. A search result carries pos, job_key, title, url, company and company_url, alongside query, location, page, radius, count, total_results and unique_results.
Which languages and tools are supported?
+
Official Python (pip install scavio) and JavaScript/TypeScript (npm i scavio) SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node. Any language can call the REST endpoints directly with an HTTP client.
Is scraping Indeed data legal?
+
Scavio returns publicly available job postings and employer data and does not authenticate as a user. You remain responsible for how you use the data, including compliance with Indeed's terms and with employment and privacy law. Talk to your own counsel for your specific use case.
Explore more of Scavio
Glassdoor API
Employers, reviews and salary bands.
LinkedIn API
Profiles, companies, posts and jobs.
Companies House API
The UK statutory company register.
Google Search API
The full SERP — organic, ads, AI Overview.
MCP server
Every platform as a callable tool for agents.
Pricing
Credit packs and plans, no per-platform surcharge.
Start pulling Indeed data today
50 free credits on signup, no card. Your first request is a POST with a role and a city.