# ZipRecruiter API — live job search, job details & jobs-by-company from ZipRecruiter (ziprecruiter.co.uk / .ie / .de), no login required

> Search live ZipRecruiter job listings by keyword and location, with pagination and an optional remote-only filter. Each result includes the title, company, location, salary (when posted), posting date, a snippet, the on-site job URL and the apply link. Covers the United Kingdom (ziprecruiter.co.uk), Ireland (ziprecruiter.ie) and Germany (ziprecruiter.de).
> ReefAPI engine `ziprecruiter` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/ziprecruiter/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /ziprecruiter/v1/search — 1 credit
Search live ZipRecruiter job listings by keyword and location, with pagination and an optional remote-only filter. Each result includes the title, company, location, salary (when posted), posting date, a snippet, the on-site job URL and the apply link. Covers the United Kingdom (ziprecruiter.co.uk), Ireland (ziprecruiter.ie) and Germany (ziprecruiter.de).

**Parameters:**
- `query` (string, required) — Free-text job keyword: job title or skill — e.g. 'software engineer', 'registered nurse', 'marketing manager'. Matched against the whole posting (title + description), so 'python' finds Python roles.
- `location` (string, optional) — City or region to search in (e.g. 'London', 'Dublin', 'Berlin'). Leave empty to search the whole country.
- `country` (enum, optional, default "gb") — ZipRecruiter country edition to search. gb (United Kingdom), ie (Ireland) and de (Germany) are fully live (bare-DC SSR). us (United States) is not yet available — the US site is a JavaScript app behind an anti-bot wall (a us call returns a clear TARGET_BLOCKED). Other two-letter codes are passed through as-is. [one of: gb, ie, de, us]
- `page` (integer, optional, default 1) — Result page to start from, beginning at 1 (20 jobs per page). Use this to page through results — it is the single pagination control.
- `max_results` (integer, optional, default 20) — How many job listings to return, paging internally from `page` (1–200).
- `remote` (boolean, optional, default false) — If true, keep only remote / work-from-home listings. ZipRecruiter's country sites expose no server-side remote filter, so this is applied by matching each listing's title and location (the engine pages further to still fill `max_results`).

**Returns:** jobs[]{job_id, title, company, location, salary{min,max,currency,period}, posted_date, snippet, url, apply_url, sponsored, source}, count, total_estimate, query, location, country

**Example request body:**
```json
{
  "query": "software engineer",
  "location": "London",
  "country": "gb",
  "max_results": 20
}
```

### POST /ziprecruiter/v1/job_detail — 1 credit
Full ZipRecruiter job posting by job ID (or URL): title, company, location, salary range, employment type, remote flag, posting & expiry dates, the full description, an extracted requirements list and the apply link.

**Parameters:**
- `job_id` (string, required) — ZipRecruiter numeric job ID — the `job_id` returned by the search action (or the number in a ziprecruiter.co.uk/jobs/<id> URL). Provide job_id OR url.
- `url` (string, optional) — Full ZipRecruiter job URL — alternative to job_id (the ID is extracted automatically).
- `country` (enum, optional, default "gb") — ZipRecruiter country edition to search. gb (United Kingdom), ie (Ireland) and de (Germany) are fully live (bare-DC SSR). us (United States) is not yet available — the US site is a JavaScript app behind an anti-bot wall (a us call returns a clear TARGET_BLOCKED). Other two-letter codes are passed through as-is. [one of: gb, ie, de, us]

**Returns:** job{job_id, title, company, location, location_structured, employment_type, salary{min,max,currency,period}, remote, posted_date, valid_through, description, requirements[], apply_url, url, source}

### POST /ziprecruiter/v1/jobs_by_company — 1 credit
List a specific employer's open jobs on ZipRecruiter. Pass a company name; the engine searches and keeps only listings whose employer matches (ZipRecruiter's country sites have no dedicated company page, so this is a best-effort name match over the search results). Optionally narrow by location.

**Parameters:**
- `company` (string, required) — Employer name to list open jobs for (e.g. 'Amazon', 'NHS', 'Deloitte').
- `location` (string, optional) — City or region to search in (e.g. 'London', 'Dublin', 'Berlin'). Leave empty to search the whole country.
- `country` (enum, optional, default "gb") — ZipRecruiter country edition to search. gb (United Kingdom), ie (Ireland) and de (Germany) are fully live (bare-DC SSR). us (United States) is not yet available — the US site is a JavaScript app behind an anti-bot wall (a us call returns a clear TARGET_BLOCKED). Other two-letter codes are passed through as-is. [one of: gb, ie, de, us]
- `page` (integer, optional, default 1) — Result page to start from, beginning at 1 (20 jobs per page). Use this to page through results — it is the single pagination control.
- `max_results` (integer, optional, default 20) — How many job listings to return, paging internally from `page` (1–200).

**Returns:** company, jobs[]{job_id, title, company, location, salary, posted_date, snippet, url, apply_url, sponsored}, count, query, location, country

## More
- Try it live, no code: https://reefapi.com/playground?engine=ziprecruiter
- Human docs page: https://reefapi.com/docs/ziprecruiter
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
