# UK Jobs Search & Scraper (CV-Library)

> UK Jobs Search & Scraper (CV-Library) 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 and scrapes UK job listings by keyword, location, salary, and filters, returning structured job data from CV-Library.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/cv?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/uk-jobs-search-scraper-cv-library-439ca3e5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_8y8KgZH5eYagp3rVhxsgk

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 uk-jobs-search-scraper-cv-library-439ca3e5 -d '<json body>'
```

Example prompt: Search CV-Library for permanent software engineer jobs within 15 miles of London posted in the last 7 days, salary between 60000 and 90000 GBP, remote or hybrid only, and give me up to 50 unique listings.

## When to prefer this

Use this endpoint when you need structured UK job listing data from CV-Library specifically, with rich filtering by keyword, location radius, employment type, salary band, recency, and remote-working status. Prefer it over generic web scrapers when you want deduplicated, normalised job records without building your own scraping logic. It is pay-per-call with no charge for failed or empty runs, making it low-risk for exploratory job market queries.

## Known failure modes

- No results found for given keywords/location combination — returns empty items array with count 0 and no charge
- Invalid enum value for jobType, postedSince, or distance — likely returns validation error
- Salary filters excluding too many results may yield empty or very small result sets
- Network or scraping failure on CV-Library side — run considered failed and not charged
- maxPagesPerSearch cap reached before maxResults fulfilled — partial results returned

## 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 items, each with fields including job URL, job ID, title, location, city, company name, company URL, and company logo URL. The product field will be 'cv'.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "jobType": {
   "type": "array",
   "items": {
    "enum": [
     "permanent",
     "contract",
     "temporary",
     "part-time"
    ],
    "type": "string",
    "enumTitles": [
     "Permanent",
     "Contract",
     "Temporary",
     "Part-Time"
    ]
   },
   "default": [],
   "description": "Keep only matching employment types after reading the results."
  },
  "distance": {
   "enum": [
    "0",
    "5",
    "10",
    "15",
    "20",
    "30",
    "50",
    "100"
   ],
   "type": "string",
   "default": "15",
   "description": "Search radius around the location; ignored when no location is provided."
  },
  "keywords": {
   "type": "array",
   "default": [],
   "description": "Job titles or skills to search for. Each phrase starts a separate UK jobs search."
  },
  "location": {
   "type": "string",
   "default": "",
   "description": "Town, city, county, or postcode used with each keyword."
  },
  "salaryMax": {
   "type": "integer",
   "minimum": 0,
   "description": "Exclude stated annual salaries whose minimum is above this GBP amount. Jobs without annual salary stay included."
  },
  "salaryMin": {
   "type": "integer",
   "minimum": 0,
   "description": "Exclude stated annual salaries whose maximum is below this GBP amount. Jobs without annual salary stay included."
  },
  "startUrls": {
   "type": "array",
   "default": [],
   "description": "Public search pages or individual job links. May be combined with keywords."
  },
  "maxResults": {
   "type": "integer",
   "default": 50,
   "minimum": 0,
   "description": "Maximum job rows to save across all inputs; 0 means no result cap."
  },
  "remoteOnly": {
   "type": "boolean",
   "default": false,
   "description": "Keep roles whose title, location, or available description indicates remote, hybrid, or home working."
  },
  "postedSince": {
   "enum": [
    "",
    "1",
    "3",
    "7",
    "14"
   ],
   "type": "string",
   "default": "",
   "description": "Request jobs posted within this many days."
  },
  "onlyUniqueJobs": {
   "type": "boolean",
   "default": true,
   "description": "Deduplicate listings across pages and searches by job ID."
  },
  "maxPagesPerSearch": {
   "type": "integer",
   "default": 50,
   "maximum": 500,
   "minimum": 1,
   "description": "Safety limit for paging through each search URL."
  },
  "includeDescription": {
   "type": "boolean",
   "default": false,
   "description": "Fetch each job detail record for full descrip
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "url": null,
    "jobId": null,
    "title": null,
    "location": null,
    "companyUrl": null,
    "companyLogo": null,
    "companyName": null,
    "locationCity": null
   }
  ],
  "product": "cv"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/uk-jobs-search-scraper-cv-library-439ca3e5/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)
