Disclosure: I built this. I built the Apify Actor used in this post. It is pay-per-use and the prices are listed below, along with what rivals charge, so you can compare before you try anything.
Reed.co.uk is one of the biggest UK job boards, and it is a good source if you want to track salaries, build a "new jobs" feed or collect hiring-company lists. Reed does offer a free official API (key required, with its own terms and limits); this post covers a no-key route that also returns per-year salary estimates and works on a schedule. This post shows how to pull jobs with salary filters into a dataset using a few lines of code.
What you get
Each job comes back as one row with the title, employer, location, salary range, contract type, working pattern and posting date. Hourly, daily, weekly and monthly pay also gets a per-year estimate (salaryFromPerYearEst, est.: 40 h x 50 weeks, 250 days) so you can sort a mixed list.
Real rows from a run (trimmed, taken from the Actor's sample-output.json):
| Title | Company | Location | Salary from | Salary to | Period | Contract | Posted |
|---|---|---|---|---|---|---|---|
| Senior Python Software Engineer - Security Cleared | Searchability NS&D | London | 65000 | 100000 | per annum | Permanent | 2026-10-23 |
| Python Software Engineer - SC Cleared | Searchability NS&D | London | 40000 | 50000 | per annum | Permanent | 2026-10-23 |
| Technical Lead Python Engineer | Spectrum IT Recruitment | London | 90000 | 100000 | per annum | Permanent | 2026-10-20 |
| Senior Full-Stack Engineer - Python / React | Bond Williams | London | 70000 | 90000 | per annum | Permanent | 2026-10-22 |
Run it from Python
Install the client with pip install apify-client and put your Apify API token in the APIFY_TOKEN environment variable.
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {
"keywords": ["python developer"],
"locations": ["London"],
"minSalary": 50000, # GBP per year
"hideJobsWithoutSalary": True,
"permanent": True,
"maxAgeDays": 7, # exact posting-date cut-off
"maxItems": 50, # hard cap on cost
}
run = client.actor("scrapefy/reed-jobs-scraper-uk").call(run_input=run_input)
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], "|", job["company"], "|", job["salaryFrom"], "-", job["salaryTo"], job["salaryPeriod"])
Run it from JavaScript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('scrapefy/reed-jobs-scraper-uk').call({
keywords: ['python developer'],
locations: ['London'],
minSalary: 50000,
hideJobsWithoutSalary: true,
permanent: true,
maxAgeDays: 7,
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const job of items) {
console.log(job.title, '|', job.company, '|', job.salaryFrom, '-', job.salaryTo, job.salaryPeriod);
}
You can also paste any Reed search URL into startUrls instead of using keywords and places, which is handy if you have already set up the filters in your browser.
The filters that matter
-
Salary:
minSalary,maxSalaryandhideJobsWithoutSalary. Reed applies the salary filter itself, so a 40-50k job can show up for a 50k minimum because the ranges overlap. If you need a strict cut, filter again onsalaryFromPerYearEstin your own code. -
Contract:
permanent,contract,temp,fullTime,partTime. -
Working pattern:
workingOptionisremote,hybridoroffice. -
Who posts it:
directEmployersOnlyoragencyOnly. -
Freshness:
maxAgeDaysis checked against each job's own posting date, not only Reed's date bucket. -
Descriptions:
includeDetailsfetches the full description, sector, skills and reference for each job. It costs an extra event per job.
A daily new-jobs feed
Set onlyNew to true and schedule the Actor once a day in Apify. It remembers the job IDs it has already returned and skips them, and skipped jobs are not charged. Point a webhook at your own endpoint, or an integration such as Google Sheets, n8n or Make, and you have an alert for new matching jobs.
What it costs, and what rivals charge
Current Actor pricing checked via the Apify API on 29 Oct 2026. Pay per event: $0.0006 per job, $0.002 per detail page if you switch details on, and $0.00005 per run start. 1,000 jobs is $0.60 (about $2.60 with descriptions). You are not charged for duplicates, jobs filtered out by age or only-new mode, or anything past maxItems. If Reed blocks a run and nothing comes back, the run fails instead of finishing "successfully" with zero rows.
Other Reed scrapers on the Apify Store, from our own benchmark (Store API data pulled 2026-10-22; prices as listed then, so check the pages for current ones; we did not run the rivals):
| Actor | Users (30 days) | Charges (free tier) |
|---|---|---|
| scrapersdelight/reed-jobs-scraper | 141 | $0.0005 per job, plus monitor/alert events |
| santamaria-automations/reed-uk-scraper | 31 | start $0.001 + $0.003 per result + $0.005 per detail |
| shahidirfan/Reed-Job-Scraper | 28 | start $0.005 + $0.001 per result |
| memo23/reed-jobs-scraper | 25 | start $0.007 + $0.001 per result + extras |
| fetch_cat/reed-co-uk-jobs-scraper | 24 | start $0.005 + $0.0000575 per item |
| scrapefy/reed-jobs-scraper-uk (ours) | new | $0.0006 per job, $0.00005 start |
The most-used rival is cheaper per job than we are. Ours is a small-run and filters story: the per-run start fee is nearly zero and the salary, date and only-new filters are applied before you are charged. If you are pulling hundreds of thousands of jobs and only price matters, compare the numbers above.
Limits and legal notes
- Only publicly visible job-ad data is collected: no logins, no applying, and recruiter contact details are not collected.
- Posting times are Reed's UK local time, so a date check can be off by up to an hour in summer.
- Use the data in line with Reed's terms and UK/EU data-protection law. Job ads are mostly company data, but check before you build anything that stores personal details.
Try it
The Actor page, with the full input list and a free-tier run: https://apify.com/scrapefy/reed-jobs-scraper-uk
A runnable copy of the code above, with sample output, is in the example repo for this post: https://github.com/scrapifyhq/reed-uk-jobs-example. If something breaks or a field is missing, open an issue on the Actor's Issues tab with the run link and I will look at it.
Top comments (0)