# Reed Uk Jobs Extractor (`kawsar/reed-uk-jobs-extractor`) Actor

Scrape complete job postings, salary ranges, and company profiles from Reed.co.uk. Supports bulk search keyword matrices and direct URLs. Features built-in premium network bypass systems to prevent IP blocks and captchas out of the box no proxy configuration required.

- **URL**: https://apify.com/kawsar/reed-uk-jobs-extractor.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 UK Jobs Extractor: Scrape Jobs and Salaries from Reed.co.uk

Reed UK Jobs Extractor is an advanced, production-grade web scraping tool built to collect comprehensive job listings directly from Reed.co.uk. It automates the extraction of employment postings, salary details, location data, company profiles, and application options in bulk.

Whether you are building job feeds, tracking recruiting patterns, collecting leads for your recruiting agency, or conducting programmatic labor market research, this scraper provides clean, structured, and normalized data without requiring any manual intervention.

---

### Key Features

- **Multi-Keyword & Multi-Location Targeting**: Input lists of keywords and locations to perform automated search matrices (cross-product pairing) in a single run.
- **Complete Job Details**: Extract job titles, identifiers, detailed descriptions, expiry dates, and fast application indicators.
- **Salary Intelligence**: Capture minimum and maximum salary ranges alongside normalized text representations, accommodating annual, daily, and hourly recruitment rates.
- **Location Classification**: Extract primary display locations, county-level tags, and modern workspace indicators (Remote, Hybrid, On-site).
- **Independent Seed Queries**: Directly supply target Reed search page URLs or listing links for fine-grained scraping control.
- **Built-In Bypass Layer**: Routes all traffic through a premium, built-in network bypass architecture. This protects the runner from IP blocks and captchas out of the box, guaranteeing long-term scraper reliability.
- **No Configuration Overhead**: Operates entirely out of the box without requiring you to buy, configure, or rotationally manage expensive proxy servers or headless browsers.

---

### How It Works & Cross-Product Queries

The Reed UK Jobs Extractor supports highly customizable, matrix-based searching:

1. **Target Inputs**: You can provide lists of keywords and locations, or direct URLs.
2. **The Cross-Product Matrix**: If you enter multiple keywords (e.g. `["React Developer", "Python Developer"]`) and multiple locations (e.g. `["London", "Manchester"]`), the actor automatically calculates all pairs:
   - *React Developer* in *London*
   - *React Developer* in *Manchester*
   - *Python Developer* in *London*
   - *Python Developer* in *Manchester*
3. **Dedicated Query Boundaries**: The extraction runs through each pair sequentially. To ensure fair data distribution and avoid having a single massive query consume your entire run, the `maxItemsPerQuery` parameter enforces a separate, non-global capping constraint for each query/URL.
4. **Data Acquisition**: For each page, the scraper requests data through the built-in network routing system, parsing the embedded Next.js state JSON (`__NEXT_DATA__`) to avoid unreliable and fragile HTML parsing.
5. **Auto-Pagination**: It tracks the total matching jobs and paginates through the results until your per-query limit is reached or the jobs list is fully exhausted.
6. **Result Deliverables**: Your extracted jobs are stored directly inside the default Apify Dataset, ready for exporting or integration.

---

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchUrls` | array | `[]` | Direct Reed.co.uk search or listing URLs to scrape (one per line). If provided, keywords and locations are ignored. |
| `keywords` | array | `["Software Engineer"]` | Search keywords, job titles, skills, or company names (one per line). |
| `locations` | array | `["London"]` | Town, city, region, or postcode in the United Kingdom (one per line). |
| `maxItemsPerQuery` | integer | `100` | Maximum number of jobs to extract **per individual search query or seed URL** (maximum 1000). |
| `requestTimeoutSecs` | integer | `30` | Network request timeout in seconds for fetching pages. |

#### Example Input

```json
{
    "searchUrls": [],
    "keywords": [
        "React Developer",
        "Data Scientist"
    ],
    "locations": [
        "London",
        "Manchester"
    ],
    "maxItemsPerQuery": 50,
    "requestTimeoutSecs": 30
}
````

***

### Output Data Structure

Each scraped job record is flattened and structured inside your dataset:

```json
{
  "jobId": 56867019,
  "jobTitle": "Senior Software Engineer",
  "jobDescription": "Senior Software Engineer (DevOps) ...",
  "jobUrl": "https://www.reed.co.uk/jobs/senior-software-engineer/56867019",
  "companyName": "Vermillion Analytics",
  "companyUrl": "https://www.reed.co.uk/jobs/vermillion-analytics/p100633",
  "companyLogo": "https://resources.reed.co.uk/profileimages/logos/thumbs/Logo_100633.png",
  "locationName": "London",
  "countyLocation": "London",
  "salaryFrom": 60000,
  "salaryTo": 75000,
  "salaryText": "£60,000 - £75,000 per annum",
  "remoteOption": "Remote",
  "isFullTime": true,
  "isPartTime": false,
  "isEasyApply": true,
  "dateCreated": "2026-05-06T14:09:00.507",
  "dateUpdated": "2026-05-18T14:17:17.513",
  "expiryDate": "2026-06-17T23:59:59",
  "scrapedAt": "2026-06-04T04:22:42.503Z"
}
```

#### Extracted Fields Specification

| Field Name | Type | Description |
|------------|------|-------------|
| `jobId` | integer | Unique identifier of the job post on Reed.co.uk. |
| `jobTitle` | string | Normalized job title. |
| `jobDescription` | string | Detailed job description, requirements, and responsibilities. |
| `jobUrl` | string | Full, direct link to the job listing page. |
| `companyName` | string | Name of the hiring company or recruitment agency. |
| `companyUrl` | string | Full link to the company's profile page on Reed.co.uk. |
| `companyLogo` | string | Full URL to the company logo thumbnail image. |
| `locationName` | string | Display name of the primary location. |
| `countyLocation` | string | Regional county location where the job is based. |
| `salaryFrom` | integer | Minimum salary range boundary. |
| `salaryTo` | integer | Maximum salary range boundary. |
| `salaryText` | string | Human-readable salary with currency symbol and type suffix. |
| `remoteOption` | string | Workspace option (Remote, Hybrid, On-site). |
| `isFullTime` | boolean | `true` if the position is full-time, otherwise `false`. |
| `isPartTime` | boolean | `true` if the position is part-time, otherwise `false`. |
| `isEasyApply` | boolean | `true` if the listing supports fast application, otherwise `false`. |
| `dateCreated` | string | ISO timestamp representing when the job was posted. |
| `dateUpdated` | string | ISO timestamp of the last listing update. |
| `expiryDate` | string | ISO timestamp of when the listing will expire. |
| `scrapedAt` | string | ISO timestamp when the scraper processed this record. |

***

### Use Cases & Integration Potential

- **Job Board Aggregation**: Feed a centralized job portal or vertical job search engines with fresh, high-quality UK job posts.
- **Hiring Demand Analysis**: Feed HR business intelligence tools to track regional skills demands and recruitment velocities.
- **Salary Auditing & Benchmarking**: Conduct research on UK compensation models, comparing pay rates for similar roles across different locations or remote work arrangements.
- **Agency Lead Generation**: Automatically identify UK companies and agencies actively hiring for specific skill sets and reach out to offer specialized recruitment solutions.
- **Continuous Integration**: Connect scraped data with platform webhooks to automatically forward records to CRMs (like Salesforce or HubSpot), databases, or automation tools (like Zapier, Make, and Google Sheets).

***

### FAQ

**Do I need to purchase a separate proxy plan or configure an account?**\
No. The actor operates completely independently. All network requests are automatically routed through our premium, built-in bypass infrastructure which prevents rate limiting and IP blocks.

**How is `maxItemsPerQuery` different from a global limit?**\
A global limit stops the entire run once a certain total is reached, which often means only the first few queries get processed. `maxItemsPerQuery` applies to each individual search string or direct URL separately, allowing you to fetch an equal number of jobs (e.g. 50 jobs for React, 50 jobs for Python) in a balanced manner.

**Can I run this actor continuously?**\
Yes. You can schedule the actor to run daily, weekly, or hourly using Apify's scheduling tool, and receive only the latest jobs.

# Actor input Schema

## `searchUrls` (type: `array`):

Enter Reed.co.uk job search or listing URLs directly (one URL per line). If provided, keywords and locations list are ignored.

## `keywords` (type: `array`):

Enter job titles, skills, or company names to search for (one per line). Only used if Direct URLs list is empty.

## `locations` (type: `array`):

Towns, cities, or postcodes in the UK (one per line). Only used if Direct URLs list is empty.

## `maxItemsPerQuery` (type: `integer`):

Maximum number of jobs to extract for each separate search query or direct URL.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds for accessing pages.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.reed.co.uk/jobs/software-engineer-jobs-in-london",
    "https://www.reed.co.uk/jobs?keywords=data+analyst&location=manchester"
  ],
  "keywords": [
    "Software Engineer",
    "Data Analyst"
  ],
  "locations": [
    "London",
    "Manchester",
    "Bristol"
  ],
  "maxItemsPerQuery": 100,
  "requestTimeoutSecs": 30
}
```

# 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 = {
    "searchUrls": [
        "https://www.reed.co.uk/jobs/software-engineer-jobs-in-london"
    ],
    "keywords": [
        "Software Engineer"
    ],
    "locations": [
        "London"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/reed-uk-jobs-extractor").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 = {
    "searchUrls": ["https://www.reed.co.uk/jobs/software-engineer-jobs-in-london"],
    "keywords": ["Software Engineer"],
    "locations": ["London"],
}

# Run the Actor and wait for it to finish
run = client.actor("kawsar/reed-uk-jobs-extractor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchUrls": [
    "https://www.reed.co.uk/jobs/software-engineer-jobs-in-london"
  ],
  "keywords": [
    "Software Engineer"
  ],
  "locations": [
    "London"
  ]
}' |
apify call kawsar/reed-uk-jobs-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kawsar/reed-uk-jobs-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Reed Uk Jobs Extractor",
        "description": "Scrape complete job postings, salary ranges, and company profiles from Reed.co.uk. Supports bulk search keyword matrices and direct URLs. Features built-in premium network bypass systems to prevent IP blocks and captchas out of the box no proxy configuration required.",
        "version": "0.0",
        "x-build-id": "liqwT6JR87ghMVXDC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kawsar~reed-uk-jobs-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kawsar-reed-uk-jobs-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kawsar~reed-uk-jobs-extractor/runs": {
            "post": {
                "operationId": "runs-sync-kawsar-reed-uk-jobs-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kawsar~reed-uk-jobs-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-kawsar-reed-uk-jobs-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchUrls": {
                        "title": "Direct Search or Job Listing URLs",
                        "type": "array",
                        "description": "Enter Reed.co.uk job search or listing URLs directly (one URL per line). If provided, keywords and locations list are ignored.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "keywords": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Enter job titles, skills, or company names to search for (one per line). Only used if Direct URLs list is empty.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Towns, cities, or postcodes in the UK (one per line). Only used if Direct URLs list is empty.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItemsPerQuery": {
                        "title": "Max jobs per URL / query",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of jobs to extract for each separate search query or direct URL.",
                        "default": 100
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Per-request timeout in seconds for accessing pages.",
                        "default": 30
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
