# CutShort Job Listings Scraper (x402)

> CutShort Job Listings Scraper (x402) is a paid API for AI agents from x402.186-241-26-229.sslip.io, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes structured job listings from CutShort.io by skill, role type, location, or direct URL, with optional change monitoring and company details.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/v1/cutshort?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/cutshort-job-listings-scraper-x402-d9dd89b0
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_a3wdz_q0YMT81rxmJFPVN

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 cutshort-job-listings-scraper-x402-d9dd89b0 -d '<json body>'
```

Example prompt: Pull up to 100 jobs from CutShort for Python and machine learning skills, remote only, posted within the last 72 hours, and include company details like size, stage, and tech stack.

## When to prefer this

Choose this endpoint when you need structured job data specifically from CutShort.io, including skill-based category searches, location and role-type filtering, change monitoring across runs, and optional company enrichment. Prefer it over generic web scrapers when you want CutShort's native job schema (jobId, applyUrl, skills) returned cleanly without parsing HTML yourself, and when pay-per-result billing (no charge for empty runs) matters.

## Known failure modes

- Empty result set (no matching jobs found) — not charged
- Invalid or inaccessible CutShort URL in startUrls — may return empty items
- maxPagesPerSource exceeding 9 is rejected at schema level
- postedWithinHours value out of range (must be 1–8760)
- Network or source-side errors causing failed run — not charged
- Skills or location filters too narrow, yielding zero 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 and an array of job items. Each item may include jobId, title, jobUrl, applyUrl, skills, locations, descriptionText, and optionally descriptionHtml and company details (website, logo, type, size, stage, founding year, tech stack). Only successful, non-empty runs are charged.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "skills": {
   "type": "array",
   "default": [],
   "description": "Build public job-category searches from skill or role terms. Combine terms to reach distinct jobs beyond a single category window."
  },
  "maxItems": {
   "type": "integer",
   "default": 50,
   "maximum": 10000,
   "minimum": 1,
   "description": "Maximum unique jobs emitted after source collection and filters."
  },
  "locations": {
   "type": "array",
   "default": [],
   "description": "Keep jobs whose source location contains any of these values, ignoring letter case."
  },
  "roleTypes": {
   "type": "array",
   "default": [],
   "description": "Keep jobs matching a source role type such as full_time or internship."
  },
  "startUrls": {
   "type": "array",
   "default": [],
   "description": "Public /jobs/ category URLs and /job/ direct job URLs on cutshort.io. Combine with skills."
  },
  "stateName": {
   "type": "string",
   "default": "default",
   "description": "Name that separates independent recurring monitors."
  },
  "remoteOnly": {
   "type": "boolean",
   "default": false,
   "description": "Keep jobs whose source remote type is remote_only."
  },
  "monitoringMode": {
   "type": "boolean",
   "default": false,
   "description": "Compare each job with the previous successful run of the same source and filter scope."
  },
  "includeUnchanged": {
   "type": "boolean",
   "default": false,
   "description": "When tracking changes, also emit jobs with the same content as the previous run."
  },
  "maxPagesPerSource": {
   "type": "integer",
   "default": 2,
   "maximum": 9,
   "minimum": 1,
   "description": "Fetch up to this many 50-job pages per category. The source stops after page 9."
  },
  "postedWithinHours": {
   "type": "integer",
   "maximum": 8760,
   "minimum": 1,
   "description": "Keep jobs posted in this many hours when a source posting date is available. Undated jobs remain."
  },
  "includeCompanyDetails": {
   "type": "boolean",
   "default": false,
   "description": "Include public company website, profile links, logo, type, size, stage, founding year, and technology stack."
  },
  "includeDescriptionHtml": {
   "type": "boolean",
   "default": false,
   "description": "Include the source-sanitized HTML alongside plain description text."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "jobId": null,
    "title": null,
    "jobUrl": null,
    "skills": null,
    "applyUrl": null,
    "locations": null,
    "descriptionHtml": null,
    "descriptionText": null
   }
  ],
  "product": "cutshort"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/cutshort-job-listings-scraper-x402-d9dd89b0/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.186-241-26-229.sslip.io](https://www.zero.xyz/host/x402.186-241-26-229.sslip.io/llms.txt)
