
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape reed.co.uk job listings by keyword, location and filters, or from search and job URLs. Get title, recruiter, parsed salary, location, contract type, sector, dates and the full description.
Scrape job listings from reed.co.uk, one of the UK's largest job boards, by keyword, location and the site's own filters, or straight from Reed search and job URLs. Every job comes with a parsed salary (min, max, period and yearly figures), the recruiter, location down to town, region and postcode, contract type, sector, dates and the full description. No login, no browser, and full details are included in one low per-job price.
salary_min, salary_max, period (per annum, per day, per hour), Reed's own yearly figures for day and hourly rates, plus negotiable, OTE and pro-rata flags.developer, registered nurse) and, optionally, a location such as Manchester.| Field | Description |
|---|---|
keywords | Job titles or skills, one search per keyword. |
location | UK town, city, county or postcode. Empty = the whole UK. |
startUrls | Reed search, recruiter or job URLs. |
maxItems | Max jobs per search (default 20, 0 = all). |
fetchDetails | Full description and job record (on by default, included in the price). |
proximity | Radius in miles around the location (0, 1, 3, 5, 10, 15, 20, 30 or 50; other values are rounded down). |
salaryFrom / salaryTo | Yearly salary band in £. |
datePosted | anytime, today, lastthreedays, lastweek, lasttwoweeks. |
jobTypes | permanent, contract, temporary, fullTime, partTime. |
workingOption | remote, hybrid or onSite. |
postedBy | agency, direct (employers) or reed. |
sectors | Reed sectors, e.g. IT & Telecoms, Health & Medicine. |
graduateOnly, easyApplyOnly, visaSponsorship | Extra filters. |
hideNoSalaryJobs, hideTrainingJobs, hideSurveyJobs | Skip adverts without a salary, training courses or paid surveys. |
{
"keywords": ["software developer", "data analyst"],
"location": "Manchester",
"proximity": 20,
"maxItems": 50,
"salaryFrom": 40000,
"jobTypes": ["permanent"],
"workingOption": "hybrid",
"datePosted": "lastweek"
}
One row per job. The main fields:
| Field | Description |
|---|---|
job_id, job_url, title | Reed job id, link and title. |
recruiter_name, recruiter_type, recruiter_reference | Who posted the job (agency, employer or Reed) and their own reference. |
recruiter_profile_url, recruiter_logo, recruiter_id | Recruiter profile, logo and id. |
salary_min, salary_max, salary_period, salary_currency | Parsed salary. |
salary_min_per_annum, salary_max_per_annum | Reed's yearly figures (also for day and hourly rates). |
salary_display, salary_negotiable, salary_ote, salary_pro_rata | Salary text and flags as shown on the job. |
location, town, county, region, country, postcode | Where the job is. |
location_type, remote_working, is_remote | Remote, hybrid or on-site. |
contract_type, is_permanent, is_contract, is_temp, is_full_time, is_part_time | Job type. |
sector, sector_parent, taxonomy_l1, taxonomy_l2, breadcrumbs, skills | Classification. |
description_text, description_html, description_snippet | The job description. |
posted_date, created_date, updated_date, expiry_date | Dates. |
is_easy_apply, is_external_redirect, external_url, is_graduate, is_promoted, is_featured, is_training_job | Flags. |
search_keywords, search_location, search_url | Which search found the job. |
Example from a real run (trimmed):
{
"job_id": "57432643",
"job_url": "https://www.reed.co.uk/jobs/registered-manager/57432643",
"title": "Registered Manager",
"recruiter_name": "Cherry Trees",
"recruiter_type": "employer",
"recruiter_reference": "63278087093",
"recruiter_profile_url": "https://www.reed.co.uk/company-profile/cherry-trees",
"location": "Liphook",
"town": "Liphook",
"county": "Hampshire",
"region": "South East England",
"country": "United Kingdom",
"postcode": "GU30",
"salary_min": 45000,
"salary_max": 50000,
"salary_currency": "GBP",
"salary_period": "per annum",
"salary_display": "£ 45,000 - £ 50,000 per annum",
"salary_min_per_annum": 45000,
"salary_max_per_annum": 50000,
"location_type": "onSite",
"contract_type": "Permanent",
"is_full_time": true,
"sector": "Registered Manager",
"sector_parent": "Social Care",
"breadcrumbs": ["Health And Social Care", "Manager", "Registered Manager"],
"skills": ["Budgeting Skills", "Leadership and Management (Certhe)", "Residential Home Care", "Team Management"],
"description_text": "Registered Manager – Children's Residential Home\nGoldcrest Lodge, Passfield Common, Liphook ...",
"posted_date": "2026-10-07T13:58:39.083",
"expiry_date": "2026-10-30T23:55:00",
"is_easy_apply": false,
"is_external_redirect": true,
"details_fetched": true,
"search_keywords": "manager"
}
You pay $0.40 per 1,000 jobs ($0.0004 per job), with the full details included, plus a small amount of platform usage (compute and proxy traffic).
Is it legal to scrape Reed? The scraper reads only public job adverts that anyone can see without an account. Job adverts can name recruiters or contacts, so make sure your use of the data follows UK GDPR and Reed's terms.
Do I need a Reed account, API key or proxy? No. Datacenter proxies are used by default and work well. Switch to residential only if your runs get blocked.
How many jobs can I get? Reed lists at most 10,000 results per search. Set Max jobs per search to 0 and larger searches (for example all UK jobs) are read sector by sector, so you can go beyond that.
Why is a field empty? Fields are empty when Reed doesn't publish them for that job, for example the postcode, skills or a salary the employer hides. Salary amounts of 0 are returned as empty.
Can I schedule it or use the API? Yes. Schedule runs (e.g. daily with Date posted = Today) and read the results through the API, webhooks or integrations.
Can I scrape a specific recruiter's jobs?
Yes: paste the recruiter's Reed jobs page (e.g. https://www.reed.co.uk/jobs/<recruiter>/p12345) into Search or job URLs.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
keywordsarrayOptionalKeywords
Job titles, skills or companies, one per line, exactly as you would type them on reed.co.uk (e.g. software developer, registered nurse, accountant). Each keyword is its own search. Leave empty to list every job in the location.
locationstringOptionalLocation
UK town, city, county or postcode (e.g. London, Manchester, Leeds, SW1A). Used with every keyword. Leave empty for the whole UK.
startUrlsarrayOptionalSearch or job URLs
Reed search pages copied from your browser (https://www.reed.co.uk/jobs/nurse-jobs-in-leeds?salaryFrom=30000, every filter in the URL is kept), recruiter job pages, or single job pages (https://www.reed.co.uk/jobs/senior-developer/57418295).
maxItemsintegerOptionaldefault 20Max jobs per search
Maximum number of jobs to save for each keyword or search URL. 0 means every job the search has (searches over 10,000 jobs are read sector by sector).
fetchDetailsbooleanOptionaldefault trueFull job details
Add each job's full description (text and HTML), yearly salary, town, region, postcode, sector, skills, recruiter reference and more. Included in the price; turn off only for the fastest listing-only runs.
The site's own search filters. They apply to keyword searches and are added to search URLs.
proximityintegerOptionalDistance from location (miles)
Search radius around the location in miles. The site supports 0, 1, 3, 5, 10, 15, 20, 30 and 50; other values are rounded down. Leave empty for the site default (10). Ignored when no location is set.
salaryFromintegerOptionalMin salary (£ per year)
Only jobs paying at least this annual salary in GBP. Leave empty for no minimum.
salaryTointegerOptionalMax salary (£ per year)
Only jobs paying at most this annual salary in GBP. Leave empty for no maximum.
datePostedenumOptionaldefault "anytime"Date posted
Only jobs posted within this period.
jobTypesarrayOptionalJob type
Only these job types. Leave empty for every type.
workingOptionenumOptionaldefault "any"Remote / on-site
Only remote, hybrid or on-site jobs.
postedByenumOptionaldefault "any"Posted by
Only jobs posted by recruitment agencies, by employers directly, or by Reed.
sectorsarrayOptionalSectors
Only jobs in these sectors. Leave empty for every sector.
graduateOnlybooleanOptionaldefault falseGraduate jobs only
Only jobs suitable for graduates.
easyApplyOnlybooleanOptionaldefault falseEasy Apply only
Only jobs with Reed's one-click Easy Apply.
visaSponsorshipbooleanOptionaldefault falseVisa sponsorship only
Only jobs that offer visa sponsorship.
hideNoSalaryJobsbooleanOptionaldefault falseHide jobs without a salary
Skip jobs that don't show a salary.
hideTrainingJobsbooleanOptionaldefault falseHide training courses
Skip training-course adverts listed as jobs.
hideSurveyJobsbooleanOptionaldefault falseHide paid surveys
Skip paid-survey adverts listed as jobs.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work well for Reed. Switch to residential only if your runs get blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| job_id | string | null | |
| job_url | string | null | |
| title | string | null | |
| recruiter_name | string | null | |
| location | string | null | |
| town | string | null | |
| county | string | null | |
| region | string | null | |
| country | string | null | |
| country_code | string | null | |
| postcode | string | null | |
| salary_currency | string | null | |
| salary_period | string | null | |
| salary_display | string | null | |
| description_snippet | string | null | |
| description_text | string | null | |
| description_html | string | null | |
| posted_date | string | null | |
| created_date | string | null | |
| updated_date | string | null | |
| expiry_date | string | null | |
| remote_working | string | null | |
| location_type | string | null | |
| contract_type | string | null | |
| recruiter_type | string | null | |
| recruiter_reference | string | null | |
| recruiter_profile_url | string | null | |
| recruiter_logo | string | null | |
| recruiter_tier | string | null | |
| taxonomy_l1 | string | null | |
| taxonomy_l2 | string | null | |
| external_url | string | null | |
| sector | string | null | |
| sector_parent | string | null | |
| search_keywords | string | null | |
| search_location | string | null | |
| search_url | string | null | |
| scraped_at | string | null | |
| salary_min | number | null | |
| salary_max | number | null | |
| salary_min_per_annum | number | null | |
| salary_max_per_annum | number | null | |
| recruiter_id | number | null | |
| sector_id | number | null | |
| sector_parent_id | number | null | |
| salary_negotiable | boolean | null | |
| salary_ote | boolean | null | |
| salary_pro_rata | boolean | null | |
| salary_has_benefits | boolean | null | |
| is_remote | boolean | null | |
| is_permanent | boolean | null | |
| is_contract | boolean | null | |
| is_temp | boolean | null | |
| is_full_time | boolean | null | |
| is_part_time | boolean | null | |
| is_easy_apply | boolean | null | |
| is_external_redirect | boolean | null | |
| is_promoted | boolean | null | |
| is_featured | boolean | null | |
| is_early_bird | boolean | null | |
| is_graduate | boolean | null | |
| is_training_job | boolean | null | |
| is_survey_job | boolean | null | |
| eligible_uk_only | boolean | null | |
| has_uk_work_eligibility_requirement | boolean | null | |
| details_fetched | boolean | null | |
| breadcrumbs | array | null | |
| skills | array | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved job listing, full details included. | $0.0004 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/reed-jobs-scraper').call({
"keywords": [
"developer"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/reed-jobs-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/reed-jobs-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Keyword and location search with full job details.
Paste search pages from your browser; their filters are kept.
Salary, job type, remote and date filters together.
Two keywords at once, job cards only.
Sector filter for a whole area, no keyword needed.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.