# ZipRecruiter Job Search Scraper

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

Searches ZipRecruiter for job listings and returns structured job data including title, company, location, and URL, with filters for job type, salary, location, and posting date.

## Facts

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

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 ziprecruiter-job-search-scraper-39c0c005 -d '<json body>'
```

Example prompt: Search ZipRecruiter for full-time software engineer jobs in Austin, TX posted within the last 14 days, with a salary of at least $100,000, and give me up to 30 results.

## When to prefer this

Use this endpoint when you need structured, filterable job listing data from ZipRecruiter specifically, including salary range filtering, job type, remote-only flags, and posting recency. It is preferred over generic web scraping when you need clean, consistently shaped job records ready for downstream processing. The pay-per-successful-call model makes it cost-efficient since failed or empty runs are not charged.

## Known failure modes

- Empty result set if filters are too narrow (e.g. very high salary minimums or rare job titles in small markets)
- Invalid enum value for jobType returns a validation error
- startUrls containing non-ZipRecruiter /jobs-search URLs may return no results
- Exceeding maxItems limit of 500 causes a validation error
- ZipRecruiter rate limiting or site changes may result in failed scrape runs (not charged)
- Malformed location strings may produce nationwide results or no results

## 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 results and an array of job listing items, each containing the job ID, URL, city, state, title, company name, location string, and company logo URL. The product field confirms the source as ZipRecruiter.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "search": {
   "type": "string",
   "description": "Job role to search for when startUrls is empty."
  },
  "jobType": {
   "enum": [
    "any",
    "full_time",
    "part_time",
    "contract",
    "internship",
    "temporary"
   ],
   "type": "string",
   "default": "any",
   "description": "Employment type filter for keyword searches."
  },
  "location": {
   "type": "string",
   "description": "City, state, or postal code for the keyword search. If omitted, the search is nationwide."
  },
  "maxItems": {
   "type": "integer",
   "default": 50,
   "maximum": 500,
   "minimum": 1,
   "description": "Stop after this many unique job listings across all searches."
  },
  "salaryMax": {
   "type": "integer",
   "maximum": 300000,
   "minimum": 0,
   "description": "Only jobs with annual salary ranges overlapping this maximum, as reported by the source."
  },
  "salaryMin": {
   "type": "integer",
   "maximum": 300000,
   "minimum": 0,
   "description": "Only jobs with annual salary ranges overlapping this minimum, as reported by the source."
  },
  "startUrls": {
   "type": "array",
   "description": "ZipRecruiter /jobs-search URLs. Search, location, radius, employment, and remote filters in the URL are read. Overrides keyword inputs."
  },
  "daysPosted": {
   "type": "integer",
   "default": 0,
   "maximum": 30,
   "minimum": 0,
   "description": "Only jobs posted within this many days; zero means any age."
  },
  "remoteOnly": {
   "type": "boolean",
   "default": false,
   "description": "Request remote jobs and remove results that are not marked remote eligible."
  },
  "radiusMiles": {
   "type": "integer",
   "default": 0,
   "maximum": 100,
   "minimum": 0,
   "description": "Search radius around the location; zero uses the site default."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "url": null,
    "city": null,
    "state": null,
    "title": null,
    "company": null,
    "location": null,
    "companyLogo": null
   }
  ],
  "product": "ziprecruiter"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ziprecruiter-job-search-scraper-39c0c005/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)
