# CrowdPull ZipRecruiter Jobs Scraper

> CrowdPull ZipRecruiter Jobs Scraper is a paid API for AI agents from crowdpull.click, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-16).

Scrapes ZipRecruiter job listings into structured datasets based on search queries, location, salary filters, and job URLs.

## Facts

- Endpoint: POST https://crowdpull.click/api/actors/crowdpull-ziprecruiter-jobs-scraper/call
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/crowdpull-ziprecruiter-jobs-scraper-99780c45
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_OE7yPa6sKulSl-I9LZIaP

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 crowdpull-ziprecruiter-jobs-scraper-99780c45 -d '<json body>'
```

Example prompt: Search ZipRecruiter for up to 50 remote Python developer jobs in Austin, TX with a minimum salary of $80,000 and pull back the structured listings.

## When to prefer this

Use this endpoint when you need structured ZipRecruiter job listing data programmatically — for market research, salary benchmarking, job aggregation, or feeding job data into downstream pipelines. Prefer it over generic scrapers because it is tuned specifically to ZipRecruiter's structure and supports location, salary, remote, and keyword filters natively.

## Known failure modes

- Invalid or inaccessible ZipRecruiter URL returns an error or empty result set
- maxItems or maxResults exceeding 250 causes validation failure
- waitForFinishSeconds too short may result in a pending status with no data yet
- Bad location string not recognized by ZipRecruiter returns empty results
- Payment not processed causes 402 response before job starts

## How this service works

CrowdPull turns public web pages into useful datasets for marketplaces, housing, reviews, jobs, social posts, drug prices, video, and public records.

## Output

Returns a JSON object containing a job token and a job object with an ID, status, and optional resultSetId. The job runs asynchronously; the resultSetId is used to retrieve the scraped ZipRecruiter job listings once complete.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "input": {
   "type": "object",
   "required": [],
   "properties": {
    "url": {
     "type": "string",
     "description": "Single public URL accepted by the selected source."
    },
    "urls": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "description": "Public URLs accepted by the selected source."
    },
    "query": {
     "type": "string",
     "description": "Search query or keyword."
    },
    "remote": {
     "type": "boolean"
    },
    "location": {
     "type": "string",
     "description": "City, ZIP, state, neighborhood, or source-supported location."
    },
    "maxItems": {
     "type": "integer",
     "default": 25,
     "maximum": 250,
     "minimum": 1
    },
    "maxPages": {
     "type": "integer",
     "maximum": 10,
     "minimum": 1
    },
    "salaryMin": {
     "type": "integer",
     "minimum": 0
    },
    "startUrls": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "description": "Public source URLs to collect from."
    },
    "maxResults": {
     "type": "integer",
     "default": 25,
     "maximum": 250,
     "minimum": 1
    },
    "maxListings": {
     "type": "integer",
     "default": 25,
     "maximum": 250,
     "minimum": 1
    },
    "searchQuery": {
     "type": "string",
     "description": "Search query or keyword."
    },
    "includeDetails": {
     "type": "boolean",
     "default": false
    }
   },
   "description": "ZipRecruiter Jobs Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
   "additionalProperties": true
  },
  "options": {
   "type": "object",
   "properties": {
    "build": {
     "type": "string",
     "maxLength": 100,
     "minLength": 1
    },
    "memory": {
     "type": "integer",
     "maximum": 8192,
     "minimum": 128
    },
    "waitForFinishSeconds": {
     "type": "integer",
     "default": 10,
     "maximum": 60,
     "minimum": 0
    }
   },
   "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
   "additionalProperties": false
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "type": "object",
  "required": [
   "token",
   "job"
  ],
  "properties": {
   "job": {
    "type": "object",
    "required": [
     "id",
     "status"
    ],
    "properties": {
     "id": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "resultSetId": {
      "type": "string"
     }
    },
    "additionalProperties": true
   },
   "token": {
    "type": "string"
   }
  },
  "additionalProperties": false
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/crowdpull-ziprecruiter-jobs-scraper-99780c45/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from crowdpull.click](https://www.zero.xyz/host/crowdpull.click/llms.txt)
