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

Scrape CV-Library (UK) job listings by keyword, location and filters, or from search and job URLs. Get title, company, salary (min, max, period and annualised), location with coordinates, applicant count, job type, posting date and optionally the full description and recruiter contact name.
Scrape job listings from CV-Library, one of the UK's largest job boards. Search by keyword and location with the site's own filters, or paste search and job URLs, and get clean rows with title, company, salary (as advertised and annualised), location with coordinates, applicant count, job type and posting date. No login, no browser, and 1,000 jobs arrive in about 10 seconds.
software engineer, registered nurse) and an optional location (London, Manchester, M1).| Field | What it does |
|---|---|
keywords | Job titles, skills or companies. Each keyword is a separate search. |
location | UK town, city, county or postcode. Empty means the whole UK; remote means remote jobs. |
startUrls | CV-Library search pages (/search-jobs?q=..., /nurse-jobs-in-leeds) or job pages (/job/225487441/...). |
maxItems | Maximum jobs to save across all searches (0 = no limit). |
includeDetails | Adds the full description (text and HTML), the salary as advertised, contract length and the recruiter's contact name. |
distance, postedWithin, contractType, workPattern | The site's distance, date, job type and remote/hybrid filters. |
minSalary, maxSalary, salaryPeriod | Salary range per year, day or hour. |
industry, sortBy | Industry (for example healthcare, it) and sort order (relevance, most recent, salary, distance). |
includePartnerJobs | Also include jobs CV-Library imports from partner feeds (off by default, like the site). |
{
"keywords": ["software engineer", "data analyst"],
"location": "Manchester",
"distance": "20",
"postedWithin": "7",
"contractType": "permanent",
"minSalary": 40000,
"maxItems": 200,
"includeDetails": true
}
One row per job. Main fields:
| Field | Example |
|---|---|
jobId, title, url | 225647264, Mechanical Design Engineer, job page link |
company, companyType, companyLogo | Blueprint Recruitment Solutions, Recruitment Agency, logo URL |
location, city, county, region, latitude, longitude | Hyde, Greater Manchester, Hyde, ... |
distanceMiles, distanceKm | Distance from the searched location |
salaryText, salaryMin, salaryMax, salaryPeriod, annualSalaryMin, annualSalaryMax | £45 - £72/hour, 45, 72, hour, 87750, 140400 |
contractType, contractLength | Temporary, 18 months |
applicantCount, easyApply, applyUrl | Applications so far, whether you apply on CV-Library, apply link |
isRemote, isHybrid, isFeatured | Flags from the listing |
categories, industry, jobReference, contactName | Industry tags, the advertiser's reference and contact |
postedAt, description, descriptionHtml | Posting date, description (snippet, or full text with details on) |
Example row from a test run (trimmed, contact name changed):
{
"jobId": "225647264",
"title": "Mechanical Design Engineer",
"company": "Blueprint Recruitment Solutions",
"companyType": "Recruitment Agency",
"companyLogo": "https://www.cv-library.co.uk/logo/big/965597271a724355ad43ebc8d3246ee9",
"location": "Hyde, Greater Manchester",
"city": "Hyde",
"county": "Greater Manchester",
"region": "England",
"country": "GB",
"latitude": 53.4508687,
"longitude": -2.0782603,
"isRemote": true,
"easyApply": true,
"applicantCount": 25,
"salaryText": "£45 - £72/hour",
"salaryMin": 45,
"salaryMax": 72,
"salaryCurrency": "GBP",
"salaryPeriod": "hour",
"annualSalaryMin": 87750,
"annualSalaryMax": 140400,
"contractType": "Temporary",
"contractLength": "18 months",
"categories": ["Engineering", "Mechanical Design Engineer", "Design"],
"industry": "Engineering",
"contactName": "Jane Example",
"jobReference": "#28872_1790256558",
"postedAt": "2026-09-24T13:29:18Z",
"description": "This is an excellent opportunity for an experienced Mechanical Design Engineer to join a multidisciplinary team...",
"url": "https://www.cv-library.co.uk/job/225647264/mechanical-design-engineer",
"searchKeyword": "engineer",
"searchLocation": "Manchester",
"detailFetched": true
}
You pay $1.25 per 1,000 jobs ($0.00125 per job), with or without full details. There is no start fee. Platform usage (compute and proxy traffic) is billed on top at cost and is very small for this actor: a 1,000-job run used less than $0.01 in our tests.
Set a maximum total charge on the run if you want a hard cap; the actor stops cleanly when it is reached.
Is it legal to scrape CV-Library? The actor reads publicly listed jobs that anyone can see without an account. You are responsible for how you use the data, including any personal data such as recruiter names, under the GDPR and CV-Library's terms.
Do I need a login or my own proxy? No. No account is needed. The actor uses UK residential exits by default because they are the most reliable for CV-Library, and the site's answers are small, so proxy traffic costs fractions of a cent. If the proxy is refused, the actor switches to the other proxy pool and then to a hosted browser by itself.
How many results can I get? As many as the site lists. CV-Library serves at most 10,000 results per search, so for bigger pulls split the search by location, keyword or filters; the run tells you when a search hit that ceiling.
Why is a field empty? Advertisers do not always fill everything: many jobs hide the salary, some have no applicant count, and region-wide jobs have no coordinates. The contact name, contract length and full description come only with Include full job details on.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it daily (sorted by most recent), and read results through the API or send them to your tools with integrations and webhooks.
Coming from another CV-Library scraper?
Inputs named query and maxResults are accepted too, and the output uses familiar field names such as title, company, salaryText, annualSalaryMin and postedAt.
contractType.jobIds if you need it.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 to search for, one per line, e.g. software engineer, registered nurse, accountant. Each keyword is searched separately (and in each location).
locationstringOptionalLocation
UK town, city, county or postcode, e.g. London, Manchester, Leeds, M1. Leave empty to search the whole UK. Type 'remote' for remote jobs.
startUrlsarrayOptionalSearch or job URLs
CV-Library search pages copied from your browser (e.g. https://www.cv-library.co.uk/search-jobs?q=nurse&geo=Manchester or https://www.cv-library.co.uk/nurse-jobs-in-leeds; filters in the URL are kept) or single job pages (https://www.cv-library.co.uk/job/225487441/...).
maxItemsintegerOptionaldefault 20Max results
Maximum number of jobs to save across all searches. 0 means no limit (each search can return at most 10,000 jobs).
includeDetailsbooleanOptionaldefault falseInclude full job details
Also read each job's full record: the complete description (text and HTML), the salary as the advertiser wrote it, contract length and the recruiter's contact name. Adds one fast request per job; the price per job stays the same.
distanceenumOptionaldefault "15"Distance from location (miles)
Search radius around the location. Ignored when no location is set.
postedWithinenumOptionaldefault "any"Date posted
Only jobs posted within this period.
contractTypeenumOptionaldefault "any"Job type
Only permanent, contract or temporary jobs.
workPatternenumOptionaldefault "any"Remote or hybrid
Only jobs the advertiser marked as remote or hybrid.
minSalaryintegerOptionalMinimum salary (£)
Only jobs paying at least this much in the salary period below, e.g. 40000 per annum or 15 per hour. Leave empty for no minimum.
maxSalaryintegerOptionalMaximum salary (£)
Only jobs paying at most this much in the salary period below. Leave empty for no maximum.
salaryPeriodenumOptionaldefault "annum"Salary period
The period the minimum and maximum salary refer to.
industrystringOptionalIndustry
Only jobs in this CV-Library industry, e.g. healthcare, it, education, engineering, accountancy. Leave empty for all industries.
includePartnerJobsbooleanOptionaldefault falseInclude partner-feed jobs
Also include jobs CV-Library imports from partner job feeds and applicant-tracking systems. The site's own search pages leave them out, so this is off by default.
sortByenumOptionaldefault "relevance"Sort by
Order of the results. Distance needs a location.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
UK residential exits are the most reliable for CV-Library and its answers are small, so they cost very little. If the chosen pool is refused, the actor switches to the other pool and then to a hosted browser by itself.
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 |
|---|---|---|
| jobId | string | null | |
| title | string | null | |
| company | string | null | |
| location | string | null | |
| url | string | null | |
| salaryText | string | null | |
| salaryMin | number | null | |
| salaryMax | number | null | |
| postedAt | string | 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.0013 |
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/cv-library-scraper').call({
"keywords": [
"software engineer"
],
"location": "London",
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// 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/cv-library-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/cv-library-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 the full description, salary as advertised and recruiter contact name.
Paste search pages from your browser; filters in the URL are kept.
30-mile radius, permanent only, £40,000+ a year, newest first.
Only jobs the advertiser marked as remote.
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.