Reed Jobs Scraper · UK Vacancies, Salaries & Employers avatar

Reed Jobs Scraper · UK Vacancies, Salaries & Employers

Pricing

from $1.30 / 1,000 job returneds

Go to Apify Store
Reed Jobs Scraper · UK Vacancies, Salaries & Employers

Reed Jobs Scraper · UK Vacancies, Salaries & Employers

Reed Jobs Scraper to extract UK job listings and vacancies from Reed.co.uk. Filter by keyword, location, salary, contract type, remote work, and date posted. Export clean UK job market data.

Pricing

from $1.30 / 1,000 job returneds

Rating

0.0

(0)

Developer

Tarek Etman

Tarek Etman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

reapX — public sources in, addressable records out

Reed Jobs Scraper · UK Vacancies, Salaries & Employers

Reed Jobs Scraper (Reed.co.uk job scraper) extracts UK job listings and vacancies from Reed.co.uk. Search UK jobs by keyword, location, town, county, salary range, contract type, remote status, and posting date.

Maintained by reapX. Every row cites the Apify run that produced it — nothing is inferred, modelled or filled in, and a field absent from the source is absent from the row. The extracted archive for this source is browsable at reapx.dev/data/reed-jobs-scraper/ and mirrored as an open dataset on Hugging Face and Kaggle. Questions: reapxdev@proton.me

Extract job title, hiring employer, job ID, location, advertised salary, job type, full job description, and application URLs. Ideal for recruitment, hiring analytics, labor market insights, and job board aggregation. Fast HTTP extraction with no login or API key required.

Reed Jobs Scraper features

  • Reed.co.uk UK Jobs Scraper: Extract 100,000+ live UK job vacancies with full details.
  • UK Job Search & Salary Filters: Filter by keyword, town/county, minimum/maximum salary, contract type, and remote status.
  • Structured Recruitment Data: Returns title, employer, salary breakdown, posting date, full job text, and apply link.

What this Reed scraper returns

One row per vacancy:

FieldWhat it gives you
jobId, jobTitle, jobUrlThe vacancy and a permanent link to it
employer, employerIdWho is hiring, with a stable advertiser ID
location, countyWhere the role sits
salaryFrom, salaryTo, salaryPeriod, hasSalaryAdvertised pay and the period it is quoted in
jobType, isFullTime, isPartTimePermanent, Contract or Temporary, and the working pattern
remoteWorkingOptionOn-Site, Hybrid, Remote or NotSpecified
category, subCategoryReed's own sector classification
postedAt, updatedAt, expiresAtFreshness and how long the listing stays open
descriptionSnippet, isEasyApply, isFeatured, eligibleUkOnlyListing detail

Five named dataset views ship with it: Jobs, Salaries, Employers, Remote & flexible and Freshness.

How to scrape Reed jobs

  1. Put a job keyword in - python developer, registered nurse, hgv driver. Leave it empty to search everything.
  2. Add a location - any UK town, city or county.
  3. Narrow by salary, contract type, remote working, part time or posting date.
  4. Set Max jobs. You are charged once per job returned, so that is your cost cap.

Filters

Salary, contract type, remote working, part time, agency exclusion and posting date are applied by Reed itself, so they narrow the search rather than fetching rows and discarding them:

  • Posted within - today, 3 days, a week or 2 weeks. These are the only four windows Reed supports; any other value is silently ignored by the site, so the actor refuses it and says so rather than returning unfiltered results that look filtered.
  • Minimum / maximum salary in £/year - postings quoted hourly, daily or monthly are excluded from an annual comparison rather than being converted with a guess.
  • Only jobs that advertise a salary - Reed marks some postings with a filter band rather than real pay, and those are treated as having no salary.
  • Contract type - Permanent, Contract or Temporary.
  • Part-time only - independent of contract type, because on Reed it is a separate flag.
  • Remote and hybrid only, direct employers only, employer name contains.

What you can build with it

  • UK salary benchmarking - advertised pay by role, county and seniority, refreshed daily.
  • Hiring-demand tracking - vacancy counts per keyword over time show which skills are heating up.
  • Competitor headcount signals - everything one employer is advertising, by employerId.
  • Recruitment market analysis - agency versus direct-employer share of a sector.
  • Remote-work research - how the on-site / hybrid / remote split moves by role and region.
  • Job-board aggregation - clean, deduplicated rows with a stable ID and a permanent URL.
  • Candidate alerting - a narrow search on a short posting window, scheduled hourly.

Input configuration

Every field is optional. The prefilled values below are what runs if you press Start without changing anything.

What and where

Leave both empty and the run returns the newest vacancies across all of Reed.

FieldTypeAcceptsWhat it does
whatstringfree textJob title or skill, exactly as you would type it into Reed's own search box. Leave empty to search every vacancy on the site. Prefilled with "python developer".
wherestringfree textUK town, city, county or region. Reed matches its own location vocabulary, so "london", "greater-manchester" and "west-midlands" all work.

How much to fetch

Reed serves 25 vacancies per page, so this decides both the runtime and the price of the run.

FieldTypeAcceptsWhat it does
maxJobsinteger1 to 2000Hard cap on how many vacancies the run returns. This is also your cost cap: you are charged once per job returned. Prefilled with 100.

Filters

Salary, contract type, remote working and posting date are applied by Reed itself, so they narrow the search rather than discarding rows afterwards.

FieldTypeAcceptsWhat it does
postedWithinDaysstring1, 3, 7, 14How recently the vacancy was posted. Reed supports exactly these four windows; any other value is ignored by the site and would silently return everything, so only these are offered.
minSalaryGbpinteger0 to anyOnly vacancies advertising at least this annual salary. Postings quoted hourly, daily or monthly are excluded, because they are not comparable to an annual figure.
maxSalaryGbpinteger0 to anyOnly vacancies advertising at most this annual salary.
onlyWithSalarytrue/falsecheckboxDrop vacancies with no published pay. Reed marks some postings with a filter band rather than real pay; those are treated as having no salary.
jobTypestringPermanent, Contract, TemporaryLimit to one kind of engagement. Part time is not a contract type on Reed; use the part-time filter below instead.
onlyPartTimetrue/falsecheckboxKeep only vacancies Reed marks as part time. This is independent of contract type, so a part-time permanent role and a part-time contract both qualify.
onlyRemotetrue/falsecheckboxDrop vacancies Reed marks as on-site only.
excludeAgenciestrue/falsecheckboxExclude recruitment agency listings and keep only vacancies posted by the hiring employer.
employerstringfree textKeep only vacancies whose employer name contains this text, matched case-insensitively.

Pricing

Pay per event. The primary event is Job returned (job-returned), charged at $0.002 per event on the free plan, falling to $0.0008 on the highest tier.

Charged once per complete job vacancy written to the default dataset. A blocked source, a changed page shape and a search that matches nothing are never charged.

Minimum charge cap per run: $0.002.

Tiered discounts apply automatically on every paid Apify plan. Platform usage is absorbed by the Actor, so the per-event price is the whole price.

Usage examples

The prefilled run, which is what Start does with nothing changed

{
"what": "python developer",
"maxJobs": 100
}

Filter by job keyword

{
"what": "registered nurse",
"maxJobs": 100
}

Filter by location

{
"what": "python developer",
"maxJobs": 100,
"where": "manchester"
}

Filter by posted within

{
"what": "python developer",
"maxJobs": 100,
"postedWithinDays": "7"
}

Filter by minimum salary (£/year)

{
"what": "python developer",
"maxJobs": 100,
"minSalaryGbp": 50000
}

Output example

One row, exactly as the actor wrote it to the dataset:

{
"jobId": "56969524",
"jobTitle": "Sales and Service",
"employer": "Appcast Enterprise",
"employerId": "674264",
"location": "Stretford, Leominster",
"county": "Herefordshire",
"hasSalary": false,
"jobType": "Permanent",
"isFullTime": true,
"isPartTime": false,
"remoteWorkingOption": "NotSpecified",
"category": "Services",
"subCategory": "Service Sales",
"isEasyApply": false,
"isFeatured": false,
"eligibleUkOnly": true,
"postedAt": "2026-06-02T08:10:26",
"updatedAt": "2026-08-03T05:12:52"
}

That row carries 22 fields in total; 18 are shown.

Fields on every row

FieldTypeWhat it is
categorystringReed’s top-level sector for the vacancy.
countystringCounty or region the vacancy sits in.
descriptionSnippetstringOpening of the job description as shown on the results page.
eligibleUkOnlytrue/falseWhether applicants must already have UK work eligibility.
employerstringHiring employer or, for agency listings, the recruiter.
employerIdstringReed’s identifier for the advertiser, stable across their vacancies.
expiresAtstringTimestamp the listing closes.
hasSalarytrue/falseWhether the posting advertises real pay rather than a filter band.
isEasyApplytrue/falseWhether the vacancy accepts Reed’s one-click application.
isFeaturedtrue/falseWhether the employer paid to feature the listing.
isFullTimetrue/falseWhether the vacancy is full time.
isPartTimetrue/falseWhether the vacancy is part time.
jobIdstringReed’s own vacancy identifier. Stable, unique, and how the row is addressed downstream.
jobTitlestringVacancy title as advertised.
jobTypestringPermanent, Contract or Temporary. Part time is not a contract type on Reed - see isPartTime.
jobUrlstringPermanent Reed page for the vacancy.
locationstringTown or city as Reed displays it.
postedAtstringTimestamp the vacancy was first published.
remoteWorkingOptionstringOn-Site, Hybrid, Remote or NotSpecified, as Reed classifies it. Many employers leave it unspecified.
retrievedAtstringUTC ISO 8601 timestamp of this run.
salaryFromnumberBottom of the advertised pay range, in the period given by salaryPeriod. Omitted when the posting advertises no real pay.
salaryPeriodstringPeriod the salary figures are quoted in.
salaryTonumberTop of the advertised pay range. Omitted when the posting advertises no real pay.
subCategorystringReed’s second-level classification.
updatedAtstringTimestamp the vacancy was last edited.

5 named dataset views ship with it: Jobs, Salaries, Employers, Remote & flexible, Freshness. They drive the Output tab in Console and the Output block on the Actor's .md page.

FAQ

How do I scrape jobs from Reed.co.uk?

Run this actor with a job keyword and optionally a location. It reads Reed's public job-search pages, which publish their results as structured data in the page itself, so there is no HTML guesswork and no browser.

Do I need a Reed API key?

No. Reed's Jobseeker API needs a registered key, and Reed's robots.txt disallows /api/ to crawlers, so this actor deliberately does not touch it. It reads the public /jobs/ pages, which robots.txt allows for every agent, and it never uses the query parameters Reed asks crawlers to avoid.

How recent can I make the results?

Reed offers four posting windows - today, last 3 days, last week and last 2 weeks - and this actor offers exactly those. Any other number is ignored by Reed's own site and would quietly return everything, so the actor reports that instead of pretending the filter worked.

Why do some jobs have no salary?

Because the employer did not advertise one. Reed also attaches a wide filter band to some postings that is not real pay - measured over 250 postings, those bands run a median £90,000 wide, with entries like "Night Warehouse Operative £25,000-£100,000". Those are reported as having no salary rather than published as if they were genuine figures. Turn on Only jobs that advertise a salary to drop them entirely.

What is the difference between contract type and part time?

On Reed they are separate. Contract type is Permanent, Contract or Temporary; part time is its own flag, so a part-time permanent role and a part-time contract both exist. Use Contract type for the first and Part-time only for the second.

How many jobs can one run return?

Up to 2,000 per search. Reed serves 25 vacancies per page, so a 500-job run is 20 page requests. Split a bigger job across keywords or locations.

How do I track one employer's hiring?

Put their name into Employer name contains. Every row also carries employerId, Reed's stable advertiser identifier, so you can group across runs even if the display name changes.

How often should I re-run it?

Daily is enough for market research; hourly suits candidate alerting on a narrow search with Posted within: Today. Rows are keyed by jobId, so diffing runs is straightforward.

Can an AI agent call this actor?

Yes. Every input and output field carries a title, description and example, and every row is addressed by Reed's jobId, so an agent can fill the input and chain the output without extra prompting.


Unofficial - not affiliated with Reed. Collects public data only. reapx. Contact reapxdev@proton.me.

The full published archive

Each archive page carries Dataset JSON-LD, a canonical URL and the identifiers used, so an agent can resolve an entity without running anything. Nothing on those pages is estimated or modelled.

🧪 Example input

A real, runnable configuration — this is an actual input this Actor has run with.

{
"what": "pharmacist",
"where": "",
"maxJobs": 250,
"onlyWithSalary": false,
"onlyRemote": false,
"onlyPartTime": false,
"excludeAgencies": false
}

📄 Sample output

One real row from a real run of this Actor, unedited.

{
"jobId": "57043673",
"jobTitle": "Pharmacist",
"employer": "ASDA",
"employerId": "403212",
"location": "Kirkcaldy",
"county": "Fife",
"hasSalary": false,
"jobType": "Permanent",
"isFullTime": false,
"isPartTime": true,
"remoteWorkingOption": "On-Site",
"category": "Pharmacist",
"isEasyApply": false,
"isFeatured": true,
"eligibleUkOnly": true,
"postedAt": "2026-06-22T13:58:43",
"updatedAt": "2026-08-03T00:12:27",
"expiresAt": "2026-09-14T23:55:00",
"descriptionSnippet": "Job Title Pharmacist Location Kirkcaldy Employment Type Part time Contract Type Permanent Shift Pattern Work Shift: Days Hours per Week 27 Salary Competitive salary plus benefits Category Pharmacy, Retail Healthcare Closing Date 4 September 2026 Y...",
"jobUrl": "https://www.reed.co.uk/jobs/pharmacist/57043673",
"retrievedAt": "2026-08-03T12:21:08Z"
}

How it works

  1. You set the filters below, or none at all.
  2. The Actor calls the source's own public endpoint and pages through the results.
  3. Every row is pushed to the dataset as it is built, not buffered to the end — so a run that hits its time limit still returns everything it collected up to that point.
  4. You are charged per row returned, so the maximum-results field is also your cost cap.

💬 Your feedback

Found a bug, or need a field this does not return yet? Open an issue on the Actor's Issues tab, or write to reapxdev@proton.me. Bugs get fixed and reasonable field requests get added.