# Reed.co.uk Job Scraper $0.9/1K (`ahmed_jasarevic/reed-co-uk-job-scraper`) Actor

Scrape UK job listings from Reed.co.uk. Extracts title, employer, location, county, salary (min/max/currency/period), contract type, remote option, sector, posted/expiry dates, full description and apply URL. For recruiters, aggregators and labour-market research.

- **URL**: https://apify.com/ahmed\_jasarevic/reed-co-uk-job-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Jobs, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Reed.co.uk Job Scraper

### What does Reed.co.uk Job Scraper do?

This Actor scrapes **UK job listings from [Reed.co.uk](https://www.reed.co.uk)** — one of the UK's largest job boards. It extracts **job title, employer, location, county, salary (min/max/currency/period), contract type, remote option, sector, posted/expiry dates, the full job description and the apply URL** for every listing.

It works by reading Reed's own server-rendered data layer (`__NEXT_DATA__`), so it is fast, cheap and reliable — no browser needed. Runs on the Apify platform with **API access, scheduling, proxy rotation and monitoring** built in.

### Why use Reed.co.uk Job Scraper?

- **Recruitment agencies** — monitor new vacancies, track competitor hiring and build candidate pipelines.
- **Staffing platforms & job aggregators** — ingest structured UK job data at scale.
- **Labour-market researchers** — analyse salary bands, contract types, remote-work adoption and sector trends.
- **Salary benchmarking tools** — feed clean salary min/max/period data into benchmarking models.

Reed lists ~100,000 live UK jobs, and this Actor turns them into clean, structured JSON.

### How to use Reed.co.uk Job Scraper

1. Open the Actor on Apify Console and click **Start**.
2. Optionally enter **keywords** (e.g. `software developer`) and a **location** (e.g. `London`).
3. Set **Max items** (how many jobs to scrape) and whether to include **full descriptions**.
4. Click **Start** and wait for the run to finish.
5. Download the results as **JSON, CSV, Excel or HTML** from the dataset.

You can also call it via the [Apify API](https://docs.apify.com/api/v2) or schedule it to run daily.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `keywords` | string | Job search keywords, e.g. `software developer`. Empty = all jobs. |
| `location` | string | Location filter, e.g. `London`. Empty = all UK. |
| `maxItems` | integer | Max jobs to scrape (default 100, max 5000). |
| `includeFullDescription` | boolean | Fetch each job's detail page for the full description (default `true`). |
| `maxConcurrency` | integer | Parallel requests (default 4). |
| `proxy` | object | Apify Proxy configuration. Residential IPs recommended. |

Example input:

```json
{
  "keywords": "nurse",
  "location": "Manchester",
  "maxItems": 50,
  "includeFullDescription": true
}
```

### Output

Each dataset item is one job. Example:

```json
{
  "jobId": 57205630,
  "jobTitle": "Software Engineer",
  "employer": "Vermillion Analytics",
  "postedBy": "employer",
  "location": "London",
  "county": "London",
  "region": "South East England",
  "country": "United Kingdom",
  "salaryMin": 35000,
  "salaryMax": 45000,
  "salaryCurrency": "GBP",
  "salaryPeriod": "per annum",
  "salaryDisplay": "£ 35,000 - £ 45,000 per annum",
  "contractType": "Permanent",
  "employmentHours": "full-time",
  "remoteOption": "hybrid",
  "sector": "Analyst Prog/Dev",
  "sectorParent": "IT & Telecoms",
  "postedDate": "2026-08-06T12:54:07.11",
  "expiryDate": "2026-09-17T23:59:59",
  "description": "<strong>Software Engineer</strong><p>...</p>",
  "applyUrl": "https://www.reed.co.uk/jobs/software-engineer/57205630#/apply",
  "jobUrl": "https://www.reed.co.uk/jobs/software-engineer/57205630",
  "isAgency": false,
  "isEmployer": true,
  "isReed": false,
  "taxonomy": "Occupation/KD: Information Technology/Engineer/Software Engineer"
}
```

You can download the dataset in various formats such as **JSON, HTML, CSV, or Excel**.

### Data table

| Field | Description |
|-------|-------------|
| `jobId` | Reed's internal job ID |
| `jobTitle` | Job title |
| `employer` | Hiring company / recruiter name |
| `postedBy` | `agency`, `employer` or `reed` |
| `location` | Town/city of the job |
| `county` | County (e.g. `Isle of Wight`) |
| `region` | Region (e.g. `South East England`) |
| `country` | Country |
| `salaryMin` / `salaryMax` | Salary range in the job's currency |
| `salaryCurrency` | Currency code (e.g. `GBP`) |
| `salaryPeriod` | `per annum`, `per hour`, `per day`, etc. |
| `salaryDisplay` | Reed's formatted salary string |
| `contractType` | `Permanent`, `Temporary` or `Contract` |
| `employmentHours` | `full-time`, `part-time` or both |
| `remoteOption` | `Remote`, `Hybrid`, `On-Site` or `NotSpecified` |
| `sector` / `sectorParent` | Reed's sector taxonomy |
| `postedDate` / `expiryDate` | Listing dates |
| `description` | Full HTML description (or snippet if disabled) |
| `applyUrl` / `jobUrl` | Apply and canonical job URLs |

### Pricing / Cost estimation

**How much does it cost to scrape Reed.co.uk?**

Costs depend on the number of jobs and whether full descriptions are fetched:

- **Search-only mode** (`includeFullDescription: false`): ~1 request per 25 jobs — very cheap.
- **Full mode** (default): ~1 request per job + 1 request per 25 jobs for search pages.

A 1,000-job run in full mode uses roughly **1,040 requests**, which typically costs well under **$1** on Apify's pay-per-use pricing. Free users get a capped preview of 10 jobs per run.

### Tips / Advanced options

- **Speed vs completeness**: disable `includeFullDescription` for fast, cheap bulk runs; enable it when you need the full ad text.
- **Scale safely**: keep `maxConcurrency` modest (4-8). Reed is Cloudflare-protected; the Actor routes through the Apify proxy (residential recommended) to avoid rate-limiting.
- **Scheduling**: use Apify's scheduler to run daily and track new postings via the `postedDate` field.
- **Salary benchmarking**: filter on `salaryPeriod = "per annum"` and `salaryCurrency = "GBP"` for clean annual figures.

### FAQ, disclaimers and support

**Is scraping Reed.co.uk legal?** Scraping publicly available job listings for commercial analysis is generally acceptable, but you should review Reed's Terms of Service and robots.txt before large-scale use. This Actor respects robots.txt conventions and rate-limits politely.

**Known limitations**: Reed occasionally serves a Cloudflare challenge; the Actor retries and uses residential proxies to mitigate this. Salary fields can be `null` when an employer does not disclose a salary.

For issues or feature requests, open a ticket on the [Issues tab](https://console.apify.com/actors/ahmed_jasarevic/reed-co-uk-job-scraper/issues). Need a custom version (e.g. specific sectors, saved searches, or CSV delivery)? Contact the author for a tailored solution.

# Actor input Schema

## `keywords` (type: `string`):

Job search keywords, e.g. 'software developer' or 'nurse'. Leave empty to search all jobs.

## `location` (type: `string`):

Location filter, e.g. 'London' or 'Manchester'. Leave empty for all of the UK.

## `maxItems` (type: `integer`):

Maximum number of jobs to scrape.

## `includeFullDescription` (type: `boolean`):

Fetch each job's detail page to get the full description. Disable for faster and cheaper runs (the description field will then contain only the snippet).

## `maxConcurrency` (type: `integer`):

Number of parallel requests. Keep modest to avoid rate-limiting.

## `proxy` (type: `object`):

Apify Proxy with Residential IPs is recommended to avoid blocking.

## Actor input object example

```json
{
  "keywords": "software developer",
  "location": "London",
  "maxItems": 100,
  "includeFullDescription": false,
  "maxConcurrency": 4,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": "software developer",
    "location": "London",
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/reed-co-uk-job-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": "software developer",
    "location": "London",
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/reed-co-uk-job-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": "software developer",
  "location": "London",
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ahmed_jasarevic/reed-co-uk-job-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/reed-co-uk-job-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rVfYidydfF3NelP6W/builds/GjfZsYsWruzqcOaaP/openapi.json
