# RemoteOK Job Listings Scraper

> RemoteOK Job Listings 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).

Fetches and filters structured remote job listings from RemoteOK with optional tag, salary, keyword, and location filters.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/remoteok?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/remoteok-job-listings-scraper-c0e5f7fb
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_yLW3P1N8rrKxYb1ijy4kA

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 remoteok-job-listings-scraper-c0e5f7fb -d '<json body>'
```

Example prompt: Pull me the latest remote jobs from RemoteOK tagged with 'react' and 'typescript', only keep verified listings, exclude non-tech roles, and only show jobs with a minimum salary of $80,000 — give me up to 50 results.

## When to prefer this

Choose this endpoint when you need structured, up-to-date remote job listings specifically from RemoteOK, with flexible filtering by tag, salary, keyword, location, and verification status. It is pay-per-call with no charge for empty or failed runs, making it cost-efficient for exploratory queries. Prefer it over generic job search APIs when RemoteOK's tech-focused, remote-first audience is exactly the talent pool you need.

## Known failure modes

- No jobs match the given filters — returns count:0 and empty items array (not charged)
- Invalid webhook URL causes delivery failure for async batches
- Tags not recognized by RemoteOK return empty feeds
- Network or scraping errors result in failed run (not charged)
- minSalary filter excludes all jobs if set too high

## How this service works

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

## Output

A JSON object containing a count of matched jobs and an array of job items, each with fields for id, type, title, source, applyUrl, workMode, sourceUrl, and description, plus a product identifier ('remoteok').

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "tags": {
   "type": "array",
   "default": [],
   "description": "Fetch a recent feed for each skill or category tag, then remove duplicate jobs. Leave empty for all recent jobs."
  },
  "minSalary": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Exclude jobs whose reported maximum annual salary is below this value. Jobs without salary data remain."
  },
  "maxResults": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Maximum jobs across all tag feeds. Set to 0 for every available result."
  },
  "webhookUrl": {
   "type": "string",
   "default": "",
   "description": "Optional HTTPS endpoint that receives batches of up to 50 output jobs after scraping."
  },
  "filterNonTech": {
   "type": "boolean",
   "default": false,
   "description": "Remove listings with specific non-technical job titles such as receptionist, driver, or nurse. This is a simple title filter."
  },
  "keywordFilter": {
   "type": "string",
   "default": "",
   "description": "Keep jobs whose title, company, or tags contain this text, regardless of case."
  },
  "webhookSecret": {
   "type": "string",
   "description": "Optional value sent in the X-Scraper-Secret header for each webhook batch."
  },
  "locationFilter": {
   "type": "string",
   "default": "",
   "description": "Keep jobs whose listed location contains this text. Empty locations will not match."
  },
  "includeUnverified": {
   "type": "boolean",
   "default": true,
   "description": "When off, keep only jobs explicitly marked verified by the source."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "type": null,
    "title": null,
    "source": null,
    "applyUrl": null,
    "workMode": null,
    "sourceUrl": null,
    "description": null
   }
  ],
  "product": "remoteok"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/remoteok-job-listings-scraper-c0e5f7fb/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)
