Reed Jobs Scraper - UK Salaries, Remote & Expiry
Pricing
from $3.65 / 1,000 job returneds
Reed Jobs Scraper - UK Salaries, Remote & Expiry
Every job on Reed.co.uk with the salary as two numbers and its real period - per hour, per day or per annum, each confirmed against what the page shows, never guessed. Plus employer, county, remote option, posted and expiry dates. A search with no results says so and is never charged. Unofficial.
Pricing
from $3.65 / 1,000 job returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 hours ago
Last modified
Categories
Share
Pull jobs from Reed.co.uk with the salary as two numbers and its real period - per hour, per day or per annum - plus the employer, the county, the remote-working option, the date it was posted and the date it expires.
Unofficial. This Actor is not affiliated with, endorsed by, or sponsored by Reed. All product names are trademarks of their respective owners.
No API key. Reads the same public listing pages a visitor sees.
Why this one is different
The salary period is confirmed, not guessed
Reed publishes the salary period as a number, not a word: salaryType: 5. Getting that wrong turns a £600 day rate into a £600 salary.
So each code was checked against what the page itself prints, on live listings:
| code | page shows | example |
|---|---|---|
1 | per hour | £20 - £28 per hour |
2 | per day | £600 - £625 per day |
5 | per annum | £80,000 - £100,000 per annum |
Codes that were not seen on a live page are left as salaryPeriod: null - the raw salaryTypeCode is always kept so you can check it yourself. A guess that reads well is worse than an honest null.
A city filter that actually filters
Reed accepts three URL shapes for a city. Measured on 2026-09-03 for developer (3,174 jobs):
| shape | result |
|---|---|
/jobs/developer-jobs-in-london | 1,159 jobs, every location in London ✅ |
/jobs/developer-jobs/london | HTTP 200, 23 of 25 results identical to the unfiltered list ⚠️ |
?location=london | HTTP 200, total unchanged at 3,174 ⚠️ |
This Actor only ever builds the first one. The other two look like they work.
The same job is never charged twice
Reed repeats jobs across pages (measured: 1 of 25 on page 2 was already on page 1) and also shows some of them in its promoted slots. Job ids are tracked across the whole run, so a repeat is dropped rather than delivered again.
Promoted jobs are not added on top - they are already in the results. You get an isPromoted flag instead, so you can see why a job sits high in the list.
An empty search is an answer, not a failure
A keyword Reed has no jobs for returns one no-results row saying so, and it is not charged. A page that could not be read at all is a different row (unreadable) with the HTTP status. You always know which of the two you got.
Input
| Field | Type | Default | Description |
|---|---|---|---|
keyword | string | developer | e.g. software engineer, accountant, nurse |
city | string | — | e.g. london, manchester, milton keynes |
remoteOnly | boolean | false | Measured: narrows developer 3,174 → 493 |
maxJobs | integer | 25 | 1-1000. One job = one row = one charged event |
maxPages | integer | 0 | Safety cap. 0 = decide from maxJobs (25 per page) |
keywords | array | — | Keep only jobs containing one of these words |
keywordMatch | string | any | any or all |
excludeKeywords | array | — | Drop jobs containing one of these |
companyNames | array | — | Keep only these employers (partial match) |
minSalary | integer | 0 | A job with no published salary is kept |
requireSalary | boolean | false | Drop jobs where the employer hid the salary |
postedWithinDays | integer | 0 | 0 = no limit. An unreadable date is kept |
monitoringMode | boolean | false | Return only jobs not returned on a previous run |
resetMonitoringState | boolean | false | One-shot: forget what was already returned |
Filters are applied before you are charged
The filters narrow the jobs already read - nothing extra is fetched from Reed - and a job that does not match is never delivered and never charged. If a search returns jobs but none match your filters you get one unpaid row saying exactly that (no-filter-match), so you can tell "the filter was too tight" apart from "Reed has nothing".
Two of them refuse to guess: a job with no published salary is kept by minSalary (an unknown salary is not a low one), and a job with an unreadable posted date is kept by postedWithinDays. Turn on requireSalary to drop the unknowns.
Monitoring mode turns this into a daily feed
Schedule it with monitoringMode: true and each run returns only the jobs it has not returned before. The first run returns everything and remembers it. Jobs read but filtered out are remembered too, so changing a filter later does not resurrect them as false "new" postings.
The minimal call is an empty input: 25 developer jobs.
Output columns
| Column | Example |
|---|---|
jobId | 57205785 |
url | the job page on Reed |
title | Senior Developer - London |
employer | Norton Rose Fulbright LLP |
location / county | Newcastle Upon Tyne / Tyne and Wear |
salaryFrom / salaryTo | 35000 / 45000 |
salaryPeriod | year, day, hour - or null when the code is not confirmed |
salaryTypeCode | Reed's raw code, always kept |
salaryCurrency | GBP |
remoteWorkingOption | Hybrid |
isFullTime / isPartTime | true / false |
datePosted / dateUpdated / expiryDate | 2026-08-06T14:19:58 / … / 2026-10-05T23:55:00 |
category / subCategory | Developer / … |
isPromoted | true when Reed also shows it in a promoted slot |
isEasyApply / ukOnly | true / false |
descriptionSnippet | the summary Reed shows in the listing |
status / note | only on rows that carry no job, with the reason |
Measured, not estimated
Checked against the live site on 2026-09-03:
developerreturns 3,174 jobs, 25 per page.- Salary codes 1 / 2 / 5 confirmed against the printed "per hour" / "per day" / "per annum" on real listings.
- City filter:
-in-london→ 1,159 jobs; the two other shapes Reed accepts do not filter at all. - Remote filter: 3,174 → 493.
- Page 2 shares 1 job with page 1 - that is why ids are tracked across the run.
- A keyword with no jobs returns 0 results cleanly (not an error).
https://www.reed.co.uk/robots.txtexplicitly allows AnthropicBot, GPTBot and PerplexityBot; the listing pages are not in its Disallow list.
The Actor ships with 13 checks run against saved copies of two real result pages, and a mutation suite of 15 deliberate breakages - all 15 are caught.
Typical uses
- Benchmark UK salaries by role, city and contract type - the numbers and their period are already parsed.
- Track contract day rates separately from permanent salaries (the period tells you which is which).
- Watch a keyword and city for new postings, using
datePostedandexpiryDateto keep the list current. - Feed a job board or a newsletter with fresh UK roles and their employer already attached.
Notes and limits
- Reed lists UK jobs. Salaries are in GBP.
descriptionSnippetis the summary Reed shows in the listing, not the full advert body.- Some listings publish no salary at all; those rows carry
null, never0.
Other tools by NeverEmpty
- Internshala Scraper - India Jobs & Internships, Salary
- Instahyre Scraper - India Tech Jobs & Company Data
- Job Listing API - Career Site Jobs from Any ATS
Support
Found a row that looks wrong? Open an issue on the Actor page with the url from the row - salaryTypeCode is kept precisely so a salary can be checked against the page.