Reed Jobs Scraper (UK) avatar

Reed Jobs Scraper (UK)

Pricing

from $0.28 / 1,000 jobs

Go to Apify Store
Reed Jobs Scraper (UK)

Reed Jobs Scraper (UK)

Scrape reed.co.uk job searches and job ads, with every job a search announces: each search is read in one call (no jobs lost between pages) and searches over Reed's 10,000 limit are split. Salary as shown, company, location, dates, full ad, skills, sector. Pay per job.

Pricing

from $0.28 / 1,000 jobs

Rating

0.0

(0)

Developer

Hexagone Data

Hexagone Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Security

Limited permissions

Share

Scrape job offers from reed.co.uk: paste the search you made on the site, get every job it announces, one record per job, with the salary, location, contract and date exactly as the site shows them and the full job details included.

Why this scraper: you get the whole search, and you can check it.

  • No job lost between pages. Reed shuffles jobs that rank equally every time a page is loaded. Reading a search page by page (25 jobs at a time, as a visitor or most scrapers do) serves some jobs twice and never serves others: on a "nurse" search of 1,330 jobs, page-by-page reading gave 1,330 rows but only 1,295 different jobs (35 lost). This actor reads each search in one call (up to 10,000 jobs): 1,330 of 1,330. Measured again on 2026-10-30 on the UK "nurse" search (about 1,350 jobs): two other public Reed scrapers missed 1.6% and 1.8% of the jobs, in blocks of consecutive ranks; this actor delivered 1,348 of 1,348.
  • Beyond Reed's 10,000 limit. Reed never serves more than 10,000 jobs per search (page 401 repeats page 400). This actor splits bigger searches by sector, then by contract type, and puts the parts back together without duplicates: all jobs in London, 23,048 jobs for 23,043 announced, no duplicate (one run on Apify, 2026-10-30: 38 parts, 11 minutes).
  • Every gap is reported with both numbers. Each start URL ends with a status: done only when every job the site still announced was served (if Reed's total moved by a few jobs meanwhile, TOTAL_CHANGED gives both numbers); otherwise partial_collection with "X of Y" and the reason. A repeated row never counts as a job.
  • Labels as on the website: salary text ("£14 - £15 per hour", "Competitive salary"), card location, "Permanent, full-time", "On-site", "Yesterday" (London time), badges (Featured, New, Easy Apply…). The promoted banner is not delivered as results.
  • Job URLs too: paste a job URL and get its record; an expired job is delivered and marked (isLive: false).

Try it with 20 jobs

  1. Open the actor's input: the start URL is pre-filled with https://www.reed.co.uk/jobs/nurse-jobs-in-london and "Maximum number of jobs" with 20.
  2. Click Start. After a minute you get 20 jobs with their details (about $0.008).
  3. Open Run summary (key-value store, SUMMARY) to see the status of your URL and the number of jobs the site announced.

What to paste

You pasteExampleWhat happens
A search results URL, filters includedhttps://www.reed.co.uk/jobs/nurse-jobs-in-londonThe site itself reads the URL (location, filters); the whole search is collected
A search with site filtershttps://www.reed.co.uk/jobs/it-jobs-in-london?sectorIds=52&workingOption=remote&salaryFrom=50000Same, with the filters you chose on reed.co.uk
A search without keywordhttps://www.reed.co.uk/jobs/jobs-in-london22,000+ jobs: split beyond 10,000 automatically
A job URLhttps://www.reed.co.uk/jobs/aspiring-nurse/57387415That job, with its details

pageno= in a pasted URL is ignored: the search is always read from its first job. Several URLs can overlap: each job is delivered once, and each URL still goes to the end of its own search.

Without start URLs you can fill keyword and location (plus distance, contract types, full/part-time, work location, salary, date posted, posted by, Easy Apply, graduate, visa sponsorship, hide training courses). The actor builds the same URL as the site's search form and lets Reed read it, so the location is resolved exactly as on the website. If Reed understands your location differently (e.g. "Newport" is read as "Newport, Dyfed"), the run summary says so (LOCATION_INTERPRETED); "Remote" becomes the remote-work filter, as on the site; a place Reed does not know gives LOCATION_UNKNOWN and no results.

Output

One record per job. Real record (job 57387415, read on 2026-10-30; the two description fields are cut here, every other field is shown in full):

{
"jobId": "57387415",
"url": "https://www.reed.co.uk/jobs/aspiring-nurse/57387415",
"title": "Aspiring Nurse",
"company": "Academics",
"companyId": "432060",
"companyProfileId": "14099",
"companyUrl": "https://www.reed.co.uk/jobs/academics/p14099",
"companyLogo": "https://resources.reed.co.uk/profileimages/logos/thumbs/Logo_14099.png",
"postedBy": "agency",
"location": "East London, London",
"locationName": "East London",
"county": "London",
"salary": "£21,600 - £25,200 per annum",
"salaryFrom": 21600,
"salaryTo": 25200,
"salaryPeriod": "year",
"salaryCurrency": "GBP",
"salaryFlags": [],
"contractType": "Contract",
"isFullTime": true,
"isPartTime": false,
"jobTypeLabel": "Contract, full-time",
"workingOption": "On-site",
"postedAt": "2026-09-24T11:16:23.503",
"postedAtLabel": "24 September",
"createdAt": "2026-09-24T11:16:23.517",
"updatedAt": "2026-10-06T11:17:17.957",
"expiresAt": "2026-11-05T23:55:00",
"isFeatured": true,
"isPromoted": false,
"isEarlyBird": true,
"isEasyApply": true,
"isTrainingJob": false,
"isSurveyJob": false,
"eligibleUkOnly": false,
"badges": ["Featured", "Early bird", "Easy Apply"],
"snippet": "Aspiring Nurse Location: Newham Are you passionate about supporting children and young people and considering a future career in nursing? We are lo...",
"taxonomy": ["Nurse"],
"sourceUrl": "https://www.reed.co.uk/jobs/nurse-jobs-in-london",
"page": 1,
"position": 1,
"searchPart": null,
"scrapedAt": "2026-10-30T01:11:23Z",
"detailsSource": "jobPage",
"descriptionHtml": "<p><strong>Aspiring Nurse</strong><br><strong>Location: Newham</strong></p><p>Are you passionate about supporting childr…",
"descriptionText": "Aspiring Nurse\nLocation: Newham\nAre you passionate about supporting children and young people and considering a future c…",
"skills": [],
"sector": "Learning Support Assistant",
"sectorId": "311",
"sectorParent": "Education",
"sectorParentId": "68",
"breadcrumbs": ["Education", "Nurse"],
"town": "London",
"countyName": "London",
"region": "South East England",
"country": "United Kingdom",
"countryCode": "GB",
"postcode": null,
"isRemoteJob": false,
"jobPageLocation": "East London, London",
"jobPageSalary": "£21,600 - £25,200 per annum",
"jobPageCompanyName": "Academics",
"companyProfileUrl": null,
"recruiterReference": "12:12",
"recruiterKind": "agency",
"isExternalApply": false,
"isLive": true,
"salaryPerAnnumFrom": 21600,
"salaryPerAnnumTo": 25200,
"isGraduate": false,
"visaRequirement": null,
"jobPageContractType": "Contract"
}
  • Unknown values are null (never an empty string, an invented 0 or false). salary is the text the card shows (Reed's API has another, different text that this actor does not use). salaryFrom/salaryTo are the amounts the card shows (numbers); when the card shows "Competitive salary", "Salary negotiable", "Commission only" or "Training Course", the site hides the amount and they are null, like salaryPeriod, salaryCurrency and salaryPerAnnumFrom/To (the hidden amounts are often placeholder ranges such as 10,000-100,000).
  • Dates are as Reed serves them (UK time, no time zone); postedAtLabel and badges are computed like the site, in London time, at scrapedAt.
  • page/position are the job's rank in the search call this run made (25 per page; Reed reorders on every call, see Known limits). Jobs found only by splitting a search over 10,000 have searchPart set and page/position null.
  • detailsSource is jobPage when the job details were read; if a job's details could not be read (or the job was removed in the meantime), the job is still delivered with listing and the detail fields null, and the run summary counts it.
  • For a pasted job URL, card-only fields that the job page does not give the same way (card location, work location, snippet, taxonomy) are null.

The Jobs overview view shows title, company, location, salary, contract, work location, date and link.

Run summary

Every run writes SUMMARY (readable page) and OUTPUT (JSON) in the key-value store: per start URL, its status, the jobs delivered, the jobs the site announced, the distinct jobs served, the total at the end, repeated rows, split parts, and the reason for anything missing. Statuses:

StatusMeaning
doneEvery job the site still announced was served and delivered (or delivered by an earlier URL); if Reed's total moved by a few jobs between the search page and its search call, TOTAL_CHANGED gives both numbers
partial_collectionSome announced jobs were not served: both numbers and the cause are given
max_items / max_chargeStopped at your maximum number of jobs / maximum charge per run
time_limitStopped cleanly a few minutes before the run timeout (summary written)
no_resultsThe site announces 0 jobs for this search
blocked_by_site, rate_limited, network_error, unrecognized_pageThe site could not be read even after new IPs: not an empty search
job_not_found / job_not_availablePasted job URL: Reed says the job does not exist / answered another job
filter_not_appliedKeyword mode: the site ignored one of your filters; nothing is read, delivered or charged for this search
no_new_jobsEvery job of this URL was already delivered by an earlier start URL
not_processed / interruptedNot reached because the run stopped earlier (maximum, time limit) / stopped while being read
internal_errorUnexpected error on this URL (the other URLs go on)

Warnings (section "Checks") have stable codes: PARTIAL_COLLECTION, PIECE_CAPPED (a split part still over 10,000), NO_RESULTS, TOTAL_CHANGED, LOCATION_INTERPRETED, LOCATION_UNKNOWN, FILTER_NOT_APPLIED, JOB_EXPIRED, JOB_NOT_FOUND, DETAILS_NOT_READ, DETAILS_GONE, DETAILS_STOPPED, UNEXPECTED_DATA, JOBS_SKIPPED, TIME_LIMIT, PROXY_SETTING. A run that delivers no job at all fails, with the cause in its status message. A pasted URL that is the same search as an earlier one (e.g. with ?pageno=2) is read once and listed in mergedUrls.

Pricing

$0.40 per 1,000 jobs, job details included (pay per event: $0.0004 per delivered job). 20 jobs ≈ $0.008; 1,000 jobs = $0.40; a 10,000-job search = $4.00. Nothing else is charged: no start fee, no extra event for details. Apify subscribers pay less automatically: 10% off on the Bronze plan, 20% on Silver, 30% on Gold and above. Only delivered jobs are charged; a job delivered by two overlapping URLs is charged once. Your "maximum charge per run" is respected: no job details are read for a job that could not be paid.

Known limits

  • Speed (measured on Apify, 2026-10-30): 272 jobs with details in 41 s; 1,348 jobs without details in 13 s; all 23,048 London jobs without details in 11 minutes. 10,000 jobs with details: about 25 minutes (estimated from these runs). Turn details off for a faster run (same price).
  • Over 10,000 per part: a part that still holds more than 10,000 jobs after splitting by sector and contract type (or a search whose URL already fixes both) gets only its first 10,000 jobs: PIECE_CAPPED and partial_collection.
  • Order and total change on every call on Reed's side, sometimes a lot: on an "accountant" search in Leeds (2026-10-30), one job ranked 6th in one call and 105th in the next identical call, and the total announced was 246 to 259 for 25 jobs at a time but 269 to 272 for the whole search in one call (so a job or two can be in one call and not in the next; the site's own 10 pages showed only 210 different jobs). page/position are the job's rank in the one call this run made (25 per page): the same job can sit on another page in your browser. When that one call comes back full while Reed announces more, it is made once more, larger.
  • Locations are resolved by Reed, including its own mistakes (e.g. "Newport" → "Newport, Dyfed", the URL path /nurse-jobs-in-stoke-on-trent → "Stoke on Tern"): the run summary says so, the actor never replaces your location.
  • Number of applicants is not available without a Reed account.
  • Access: about a third of Apify datacenter IPs are refused by Reed; refused requests are retried with new IPs, then the run switches to Apify residential proxy (Great Britain), at no extra cost to you.
  • After a platform migration the search being read is called again: the jobs not yet delivered are delivered from that second call (no duplicate, no loss), their page/position coming from it.

Support

Questions, a missing field, a URL that does not work: open an issue on the actor's Issues tab with the start URL and the run ID; the run summary usually says what happened.

Reed and reed.co.uk are trademarks of their owner. This actor is not affiliated with, endorsed or sponsored by Reed. It reads only public pages and the data the public website itself loads, without an account.