# CutShort Job Listings Scraper

> CutShort 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).

Scrapes structured job listing data from cutshort.io, supporting skill-based searches, location filters, role type filters, and change monitoring.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/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-2bfeea23
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_BnnsABMdgSmcrGtSpoOo-

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-2bfeea23 -d '<json body>'
```

Example prompt: Scrape up to 100 remote-only Python and machine learning jobs from cutshort.io posted in the last 48 hours, filtering for full_time roles, and include company details.

## When to prefer this

Use this endpoint when you need structured job data specifically from cutshort.io — particularly for India-focused tech and startup roles, skill-based searches, or when you want to monitor job listing changes over time. Prefer it over generic job board scrapers when cutshort's startup-centric listings are the target source, or when you need pay-per-successful-call pricing (failed/empty runs are free).

## Known failure modes

- Empty result set if no jobs match the provided skills or filters — not charged
- cutshort.io rate limiting or structural changes may cause partial or failed scrapes
- Invalid startUrls (non-cutshort.io URLs) may be silently ignored
- maxPagesPerSource capped at 9 — requests beyond that are truncated
- postedWithinHours only applies to jobs with a visible posting date; undated jobs always pass through

## 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 jobId, title, jobUrl, skills, applyUrl, locations, and optionally descriptionText, descriptionHtml, and company details (website, logo, size, stage, tech stack, founding year).

## 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-2bfeea23/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)
