Skip to content
Indeed

Indeed jobs

One page (~45) of Indeed job records.

POST/v1/indeed/jobs
1 credit

Indeed answers plain HTTP with its own embedded job-cards model — no browser, no tokens. Each record carries the jobkey, title, company, location, salary (verbatim text plus Indeed's extracted min/max and period), the relative posting age, the creation date from Indeed's epoch, the company's rating, and Indeed's own redirect link. Sponsored rows come labelled, not dropped.

Request

POSThttps://api.scrapercompany.com/v1/indeed/jobs

Authenticate with your API key in the x-api-key header (see Authentication).

Body

JSON object. Unknown fields are rejected with 422.

  • qstringrequiredmin length 1, max length 300

    Job query.

  • locationstring | nullmax length 120

    Indeed's l parameter: a city, state or remote.

  • pageintegerdefault 1min 1, max 30

    Result page.

  • radius_kminteger | nullmin 0, max 2000

    Indeed's radius, in km.

  • fromage_daysinteger | nullmin 0, max 30

    Posting age limit, in days (Indeed's fromage).

Example request

curl -X POST "https://api.scrapercompany.com/v1/indeed/jobs" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": "hotel jobs"
  }'

Response

200 — One page of Indeed job records over plain HTTP. Metered responses carry x-credits-charged and x-credits-remaining headers (see credit headers).

200 response
{
  "search_parameters": {
    "engine": "indeed_jobs",
    "q": "hotel jobs",
    "location": "Chicago, IL",
    "page": 1
  },
  "jobs_results": [
    {
      "jobkey": "8f0ec6e87b6ba389",
      "title": "Front Desk Agent",
      "company": "Marriott International, Inc",
      "location": "Chicago, IL 60616",
      "salary": {
        "text": "$27.87 an hour",
        "min": 27.87,
        "max": 27.87,
        "period": "HOURLY"
      },
      "posted": "6 days ago",
      "created": "2029-02-16",
      "company_rating": 4,
      "company_review_count": 26245,
      "job_types": [],
      "remote": false,
      "sponsored": false,
      "link": "https://www.indeed.com/rc/clk?jk=8f0ec6e87b6ba389",
      "snippet": "Process all guest check-ins by confirming reservations, assigning room…"
    },
    {
      "jobkey": "e3479bc018d43229",
      "title": "Housekeeping Attendant",
      "company": "Sonesta International Hotels",
      "location": "Chicago, IL",
      "salary": {
        "text": "$21.00 an hour",
        "min": 21,
        "max": 21,
        "period": "HOURLY"
      },
      "posted": "1 day ago",
      "created": "2029-02-21",
      "company_rating": 4.1,
      "company_review_count": 402,
      "job_types": [
        "PART_TIME"
      ],
      "remote": false,
      "sponsored": false,
      "link": "https://www.indeed.com/rc/clk?jk=e3479bc018d43229",
      "snippet": "Clean guest rooms and public areas."
    }
  ],
  "total": 2,
  "meta": {
    "source": "indeed",
    "wire_bytes": 1759431,
    "elapsed_s": 1.488
  }
}

Errors

Errors return a JSON body with a detail field. Failed requests are not charged. See Errors for the full list and retry advice.

StatusMeaningRetry?
401Unauthorized

Missing or invalid API key.

{"detail":"missing or invalid API key"}
No, fix the request
402Payment Required

Not enough credits for this request. Only returned once credit enforcement is switched on; during the beta metering runs in shadow mode and never blocks.

{"detail":"insufficient credits: this request costs 5, 0 available. Credits renew 2026-11-01."}
No, fix the request
422Unprocessable Content

Request validation failed. detail is a list of problems for schema errors, or a string for semantic checks performed by the endpoint.

{"detail":[{"loc":["body","name"],"msg":"Field required","type":"missing"}]}
No, fix the request
429Too Many Requests

Too many requests: the key's requests-per-minute limit was exceeded, or (once credit enforcement is on) the plan's concurrent-request limit. No rate-limit or Retry-After headers are sent; back off and retry.

{"detail":"rate limit 60/min exceeded"}
Yes, with backoff
502Bad Gateway

The upstream source failed, blocked the request or returned an unusable answer. Safe to retry later; failed requests are not charged.

{"detail":"RuntimeError"}
Yes, with backoff
503Service Unavailable

Temporarily unavailable: a dependency of this endpoint is down, or the upstream source changed its contract. Retry later.

{"detail":"database unavailable: OperationalError"}
Yes, with backoff

Try it

  1. Export your key: export SCRAPERCOMPANY_API_KEY=sk_... (no key yet? request access).
  2. Copy the cURL example above and run it in a terminal.
  3. Or open the interactive playground on api.scrapercompany.com, paste your key and pick this endpoint.

Credits

1 credit per successful call. Failed, blocked and empty results are free. Credit metering is in beta and does not block requests yet.