# Indeed Job Search Scraper

> Indeed Job Search Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.1/call, status unknown (last checked 2026-10-02).

Scrapes structured job listings from Indeed by keyword/location query or direct URLs, returning job titles, keys, URLs, company names, and ratings.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/indeed?utm_source=zero.xyz
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/indeed-job-search-scraper-09ca34f6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_CLMaqbwGBBMqO7fi2GtvP

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability indeed-job-search-scraper-09ca34f6 -d '<json body>'
```

Example prompt: Search Indeed for senior software engineer jobs in Austin, TX, posted within the last 14 days — full-time only, sorted by date, up to 50 results.

## When to prefer this

Use this endpoint when you need structured job listing data from Indeed specifically — including job keys, company ratings, and direct job URLs — and want pay-per-call pricing with no charge for failed runs. Prefer this over general web scrapers when you need Indeed-native fields like jobKey and normalizedTitle, or when you need to scrape specific Indeed company pages directly.

## Known failure modes

- No results returned if query/location combination yields zero matches on Indeed
- Invalid country code results in failed search
- Malformed or expired Indeed URLs cause empty responses
- maxRows too high may increase latency or hit platform limits
- Indeed rate limiting or anti-bot measures may cause empty responses
- Invalid enum values for sort, level, remote, or jobType return errors

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of matched jobs and an array of job items, each containing the job title, job key, job URL, company name, company URL, company rating, display title, and normalized title. Failed or empty runs are not billed.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "sort": {
   "enum": [
    "relevance",
    "date"
   ],
   "type": "string",
   "default": "relevance",
   "description": "Order the search by relevance or posting date."
  },
  "urls": {
   "type": "array",
   "description": "Public Indeed search URLs or company jobs URLs. When supplied, keyword filters are ignored."
  },
  "level": {
   "enum": [
    "",
    "entry_level",
    "mid_level",
    "senior_level"
   ],
   "type": "string",
   "default": "",
   "description": "Experience-level filter where the country site offers it."
  },
  "query": {
   "type": "string",
   "description": "Job title or search terms. Used when no URLs are provided."
  },
  "radius": {
   "type": "integer",
   "minimum": 0,
   "description": "Distance around the location in the site's local unit."
  },
  "remote": {
   "enum": [
    "",
    "remote",
    "hybrid"
   ],
   "type": "string",
   "default": "",
   "description": "Limit search to remote or hybrid listings where the site supports the filter."
  },
  "country": {
   "type": "string",
   "description": "Two-letter country code for the search domain, such as us, uk, ca, de, or fr."
  },
  "jobType": {
   "enum": [
    "",
    "fulltime",
    "parttime",
    "contract",
    "internship",
    "temporary",
    "permanent"
   ],
   "type": "string",
   "default": "",
   "description": "Filter by full-time, part-time, contract, internship, temporary, or permanent listings."
  },
  "maxRows": {
   "type": "integer",
   "default": 100,
   "minimum": 1,
   "description": "Maximum number of jobs for a keyword search."
  },
  "fromDays": {
   "type": "integer",
   "minimum": 1,
   "description": "Restrict results to jobs posted within this many days."
  },
  "location": {
   "type": "string",
   "description": "City, region, postal code, or Remote location text."
  },
  "maxRowsPerUrl": {
   "type": "integer",
   "default": 100,
   "minimum": 1,
   "description": "Maximum number of jobs to collect from each URL."
  },
  "enableUniqueJobs": {
   "type": "boolean",
   "default": true,
   "description": "Keep one record per job key within each search URL."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "title": null,
    "jobKey": null,
    "jobUrl": null,
    "companyUrl": null,
    "companyName": null,
    "displayTitle": null,
    "companyRating": null,
    "normalizedTitle": null
   }
  ],
  "product": "indeed"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/indeed-job-search-scraper-09ca34f6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
