SoonOne MCP server, all 49 APIs as agent tools. See how it works

Scrape any public job posting as clean JSON

Indeed Jobs API

The Indeed Jobs API turns any public Indeed job posting into structured JSON with a single GET request. Job title, company, location, salary range, job type, benefits, full description and posting date, scraped live with no publisher account, partner agreement or proxies on your side.

Indeed retired its public Job Search API and now reserves data access for select partners. This Indeed scraper API works on any public posting URL: pass it with your key and get the live job record back, including the salary data Indeed displays or estimates. Most requests complete synchronously in 5-45 seconds.

Free tier included, no credit card required. One key works across all 49 APIs.

At a glance
Endpoints
2
Response Time
5-45s
Data Freshness
Live

Key features

  • Any public job posting, no publisher or partner program
  • Live scraping on every request, closed jobs detected immediately
  • Salary ranges as displayed or estimated by Indeed
  • Full job description text, benefits and job type
  • Company name, rating and location data
  • fields= selection to trim responses to just what you need
  • Enterprise scraping infrastructure handles blocks on our side

Built for

  • Salary benchmarking and compensation research
  • Labor market analytics and trend tracking
  • Competitor hiring intelligence
  • Job board aggregation and enrichment
  • Recruiting datasets for sourcing tools

Try it

Build the request for your data

Edit the parameters below and see the exact curl command and JSON response you will get. No key required to preview.

Parameters

Request · HTTP
GET /indeed/v1/job?url=https%3A%2F%2Fwww.indeed.com%2Fviewjob HTTP/1.1
Host: api.apicodex.io
Host: api.apicodex.io
X-Api-Key: YOUR_API_KEY
Response · JSON
200 OK
{
  "type": "job",
  "url": "https://www.indeed.com/viewjob?jk=a1b2c3d4e5f6a7b8",
  "data": {
    "title": "Senior Backend Engineer",
    "company": "Datadog",
    "company_rating": 3.9,
    "location": "New York, NY (Hybrid)",
    "salary": "$150,000 - $200,000 a year",
    "job_type": "Full-time",
    "benefits": ["401(k)", "Health insurance", "Unlimited PTO"],
    "posted_at": "2026-08-14",
    "description": "We are looking for a Senior Backend Engineer to build the ingestion pipeline..."
  }
}

Documentation

Indeed Jobs API Documentation

Pass an Indeed job posting URL and get a complete, structured JSON record back in a single request. All endpoints are GET, and fields= lets you keep only the top-level fields you need. If a scrape exceeds the sync window you get HTTP 202 with a snapshot_id to resolve via /v1/result.

Base URL

url
https://api.apicodex.io/indeed

Authentication

Create a key at dash.apicodex.io and send it as an X-Api-Key header (or an ?apikey= query parameter) on every request. No Indeed account or publisher credential is ever involved.

headers
GET /v1/job?url=https://www.indeed.com/viewjob?jk=a1b2c3d4e5f6a7b8
X-Api-Key: YOUR_API_KEY

Request and response

Illustrative values. Confirm current endpoint behavior, quotas, and data freshness in the API documentation before production use.

request · http
GET /v1/job?url=https://www.indeed.com/viewjob?jk=a1b2c3d4e5f6a7b8 HTTP/1.1
Host: api.apicodex.io
X-Api-Key: YOUR_API_KEY
response · json
{
  "type": "job",
  "url": "https://www.indeed.com/viewjob?jk=a1b2c3d4e5f6a7b8",
  "data": {
    "title": "Senior Backend Engineer",
    "company": "Datadog",
    "company_rating": 3.9,
    "location": "New York, NY (Hybrid)",
    "salary": "$150,000 - $200,000 a year",
    "job_type": "Full-time",
    "benefits": ["401(k)", "Health insurance", "Unlimited PTO"],
    "posted_at": "2026-08-14",
    "description": "We are looking for a Senior Backend Engineer to build the ingestion pipeline..."
  }
}

Code examples

cURL
curl --request GET \
  --url 'https://api.apicodex.io/indeed/v1/job' \
  --data-urlencode 'url=https://www.indeed.com/viewjob?jk=a1b2c3d4e5f6a7b8' \
  --get \
  --header 'X-Api-Key: YOUR_API_KEY'

Available Endpoints

GET /v1/job

Scrape a job posting by URL: title, company, salary, location, job type, benefits, description.

/v1/job?url=https://www.indeed.com/viewjob?jk=a1b2c3d4e5f6a7b8

GET /v1/result

Fetch a pending result using the snapshot_id from a 202 response.

/v1/result?snapshot_id=s_abc123

Request Parameters

Required parameters

  • url Indeed job posting URL to scrape (a /viewjob?jk=... URL, any country domain). Required on /v1/job.

Optional parameters

  • fields Comma-separated top-level fields to keep, e.g. fields=title,company,salary,location.
  • snapshot_id /v1/result only: the id returned by a 202 response.

Pricing

Indeed Jobs API Pricing

One key, one subscription, all 49 APIs. Start free and upgrade when you grow. No minimums, no lock-in.

This API costs 25 credits per request. Credits are shared across every API on your plan.

Estimate your monthly cost

Drag the slider to match your expected request volume. We will recommend the cheapest plan that covers it.

10,000

Recommended plan

Pro

$99.99 /month

Credits used250,000
Credits included250,000
Cost per 1K requests$9.999
Choose Pro

Free

Free
1,000 credits · ~40 requests/mo · 2 rps
  • All 49 APIs included
  • No credit card required
  • Full documentation and examples
Start for free

Starter

Popular
$29.99/month
50,000 credits · ~2,000 requests/mo · 10 rps
  • All 49 APIs included
  • Email support
  • Usage dashboard and analytics
Start with Starter

Pro

$99.99/month
250,000 credits · ~10,000 requests/mo · 25 rps
  • All 49 APIs included
  • Priority support
  • Up to 5 API keys
Start with Pro

Need a different plan?

Tell us about your API, volume, or support requirements.

Contact us

Coming soon · MCP

Use the Indeed Jobs API from your AI agent

The API Codex MCP server will expose this API, and the other 39, to Claude, Cursor and any MCP client as tools. Same key, same credits, one config entry.

About the MCP server

FAQ

Frequently asked questions

No. Indeed retired its public Job Search API and its publisher program is closed to new applicants, with data access reserved for select ATS and enterprise partners. The Indeed Jobs API scrapes the public posting page instead: any /viewjob URL with your API Codex key returns the live job record as JSON.

You get whatever the public posting shows: the employer-provided range when listed, or the "Indeed estimated" range when Indeed displays one. When no salary information appears on the page at all, the salary field comes back null rather than a guess.

Every request triggers a live scrape of the posting at that moment, so you immediately see edits, salary updates or that a job has been taken down, which matters because job postings churn fast. That is also why responses take 5-45 seconds instead of milliseconds.

If a scrape exceeds the synchronous window, the API returns 202 with a snapshot_id instead of making you wait on an open connection. Poll GET /v1/result?snapshot_id=... until it returns 200 with status "ready" and your data; results are typically ready within 1-2 minutes.

Yes, any public Indeed country domain works (indeed.com, uk.indeed.com, de.indeed.com and so on). Because posting URLs contain their own ?jk= query parameter, URL-encode the url value or let your HTTP client do it, as shown in the code examples.