
Google Ads Scraper
scrape.ly/store/querystone/google-ads-scraperLead generationSEO tools
4 monthly users

Export Hays job listings from 25 country sites (UK, Germany, Australia, France, US, Japan and more). Search by keyword, location, contract type and date, or paste Hays search and job links. Get title, location, contract, salary, full description, recruiter name, email and phone, dates and links. No login needed.
Export job listings from Hays, one of the world's largest recruiters, across 25 country sites: the UK, Germany, Australia, France, the US, Japan and more. Every job comes with the full description, contract type, salary range, location with coordinates and the recruiter's name, email and phone. No login, no browser, and 10 jobs arrive in a few seconds.
data engineer, accountant) and pick one or more countries.London, Sydney or Berlin, and filters like contract type or "posted within".| Field | What it does |
|---|---|
searchQueries | Keywords, one per line. Each one is searched in every selected country. * lists every job. |
countries | Country sites to search (GB, IE, US, CA, DE, AT, CH, FR, BE, NL, LU, ES, PT, IT, PL, HU, DK, BR, AE, AU, NZ, SG, MY, HK, JP). |
location | Optional city, region or postcode. |
startUrls | Optional Hays search pages or job pages. |
maxResults | Most jobs to save in the run (0 = no limit). maxResultsPerSearch caps each single search. |
contractTypes | permanent, contract, temporary (plus internship and apprenticeship in DE, AT, CH, DK). |
postedWithinDays, sortBy | Only recent jobs; relevance or newest first. |
partTimeOnly, flexibleWorkingOnly | Part-time or flexible/hybrid roles only (all countries except DE, AT, CH, DK). |
radiusKm | Search radius around the location. |
language | English, French or Dutch listings where a site offers several languages. |
includeDetails | DE, AT, CH, DK: open each job page for the full posting (on by default). |
{
"searchQueries": ["software engineer", "data engineer"],
"countries": ["GB", "DE", "AU"],
"location": "",
"contractTypes": ["permanent"],
"sortBy": "newest",
"postedWithinDays": 14,
"maxResults": 100
}
One row per job. The main fields:
| Field | Example |
|---|---|
title | Financial Accountant |
company | Hays (the recruiter; client names are not published by Hays) |
location, region, area, postalCode, countryCode | City of London, South East, London, GB |
latitude, longitude | 51.51, -0.09 |
contractType, employmentType, partTime, flexibleWorking | Permanent, FULL_TIME, false, false |
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod | Competitive Salary, 50000, 55000, GBP, yearly |
industry, specialism | Insurance, Part Qualified Accountant |
summary, description, descriptionHtml | Headline and the full job text |
responsibilities, requirements, benefits | Separate sections (Germany, Austria, Switzerland, Denmark) |
contactName, contactEmail, contactPhone, contactOffice | The Hays recruiter for the role |
postedDate, expiryDate, startDate | 2026-09-04, 2026-12-02 |
url, applyUrl | Job page and apply link |
jobId, referenceNumber, market, language, searchQuery | Ids and where the job came from |
Example (from a test run; recruiter details replaced with fictional ones):
{
"jobId": "JOB_5413015",
"referenceNumber": "4825478",
"title": "Financial Accountant",
"company": "Hays",
"location": "City of London",
"region": "South East",
"area": "London",
"countryCode": "GB",
"latitude": 51.5134404,
"longitude": -0.0912413,
"contractType": "Permanent",
"employmentType": "FULL_TIME",
"partTime": false,
"flexibleWorking": false,
"industry": "Insurance",
"specialism": "Part Qualified Accountant",
"salaryText": "Competitive Salary",
"salaryMin": 50000,
"salaryMax": 55000,
"salaryCurrency": "GBP",
"salaryPeriod": "yearly",
"summary": "Financial Accountant | Part-Qualified | Insurance Experience Essential | London | Hybrid |",
"description": "Financial Accountant | Part Qualified / Finalist (Active Studier) | City of London | Insurance | Hybrid Working\n\nYour new company\n\nA growing insurance organisation is seeking a Financial Accountant to join its London finance team...",
"contactName": "Jane Example",
"contactEmail": "jane.example@hays.com",
"contactPhone": "02000000000",
"contactOffice": "London-City",
"postedDate": "2026-09-04",
"expiryDate": "2026-12-02",
"url": "https://www.hays.co.uk/job-detail/financial-accountant-city-of-london_4825478",
"applyUrl": "https://www.hays.co.uk/job-detail/JOB_5413015",
"market": "GB",
"marketName": "United Kingdom",
"language": "en",
"searchQuery": "accountant",
"scrapedAt": "2026-10-22T05:34:40Z"
}
$1.50 per 1,000 jobs ($0.0015 per saved job), charged only for jobs that are saved. Example: 1,000 jobs ≈ $1.50 plus platform usage.
Platform usage (compute and proxy traffic) is billed on top and is small. Measured on our test runs: about $0.001 per 100 UK jobs and about $0.012 per 100 German jobs (each German job page is opened). A typical 100-job run therefore costs about $0.15 to $0.16 in total. Set a maximum charge per run and the actor stops cleanly when it is reached.
Is it legal to scrape Hays? The actor reads publicly available job listings, the same pages anyone can open without an account. Recruiter contact details are personal data: make sure your use complies with the GDPR and similar laws, and with Hays' terms.
Do I need a login or my own proxy? No. No account or cookies are needed. By default the actor uses residential exits in each searched country (fastest, and the traffic per job is small). The datacenter proxy group works too.
How many jobs can I get? As many as a search has: there is no built-in cap. The UK site alone lists several thousand jobs. Use Maximum jobs to control the run size and cost.
Why is a field empty?
Hays does not fill every field for every job. Salaries are often shown only as text (or not at all), postal codes are rare outside Germany, and the German, Austrian, Swiss and Danish sites do not offer part-time or flexible-working filters. Empty values are returned as null.
Can I schedule it or use the API? Yes. Schedule daily runs (for example newest first with "posted within 1 day") and read the dataset through the API or integrations.
Can I paste a link from my browser?
Yes. Search pages and single job pages from any supported Hays site work, for example https://www.hays.co.uk/job-detail/... or https://www.hays.de/jobsuche/stellenangebote-jobs?q=SAP.
company is Hays itself: Hays rarely names its client companies in listings.salaryMin/salaryMax) come from the job portal countries; DACH sites provide salary only as text.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.
searchQueriesarrayOptionalSearch keywords
Job titles, skills or keywords, one per line. Each keyword is searched in every selected country. Use * to list every job (for example together with a location).
countriesarrayOptionaldefault ["GB"]Countries
Hays country sites to search. Pick one or several; each keyword is searched in each country.
locationstringOptionalLocation
Optional city, region or town, for example London, Sydney or Berlin. Leave empty for the whole country.
startUrlsarrayOptionalHays search or job links
Optional. Paste search result pages or single job pages from any supported Hays site, for example https://www.hays.co.uk/job-detail/... or https://www.hays.de/jobsuche/stellenangebote-jobs?q=SAP.
maxResultsintegerOptionaldefault 20Maximum jobs
Most jobs to save in this run, across all keywords, countries and links. 0 means no limit.
maxResultsPerSearchintegerOptionalMaximum jobs per search
Optional cap for each single search (one keyword in one country, or one link). Empty or 0 means only the overall maximum applies.
contractTypesarrayOptionalContract types
Keep only these contract types. Internship and apprenticeship exist on the German, Austrian, Swiss and Danish sites only.
postedWithinDaysintegerOptionalPosted within (days)
Keep only jobs posted or refreshed in the last N days. Turns on newest-first order so each search stops at the first older job.
partTimeOnlybooleanOptionaldefault falsePart-time jobs only
Keep only part-time jobs (all countries except Germany, Austria, Switzerland and Denmark).
flexibleWorkingOnlybooleanOptionaldefault falseFlexible / hybrid jobs only
Keep only jobs marked as flexible working (all countries except Germany, Austria, Switzerland and Denmark).
radiusKmintegerOptionaldefault 20Radius around the location (km)
How far around the location to search. Germany, Austria, Switzerland and Denmark use the nearest of 10, 20, 40, 60, 80 or 100 km. Other countries first match the location by name (for example London) and use the radius when the name matches no listing (suburbs, postcodes, Australian and Asian cities).
sortByenumOptionaldefault "relevance"Sort by
Order in which jobs are collected.
languageenumOptionaldefault "default"Site language
Language of the listings where a country site offers several (Belgium, Canada, Netherlands, Luxembourg, Poland, Hungary, Japan). Default uses each site's main language.
includeDetailsbooleanOptionaldefault trueOpen each job page (Germany, Austria, Switzerland, Denmark)
On hays.de, hays.at, hays.ch and hays.dk, open every job page for the full description, salary info, recruiter, address and coordinates. Turn off for faster, lighter runs with the search-card data only. Other countries always return the full job.
includeDescriptionHtmlbooleanOptionaldefault trueInclude description HTML
Also save the original HTML of the job description next to the plain-text description.
descriptionMaxLengthintegerOptionaldefault 0Description max length
Cut the plain-text description to this many characters. 0 keeps the full text.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Proxy servers used to reach the Hays sites. Residential (default) uses exits in each searched country, which makes the German, Austrian, Swiss and Danish sites about twice as fast; traffic is small. Datacenter also works.
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 | |
| referenceNumber | string | null | |
| title | string | null | |
| company | string | null | |
| location | string | null | |
| region | string | null | |
| area | string | null | |
| postalCode | string | null | |
| countryCode | string | null | |
| latitude | number | null | |
| longitude | number | null | |
| contractType | string | null | |
| employmentType | string | null | |
| partTime | boolean | null | |
| flexibleWorking | boolean | null | |
| industry | string | null | |
| specialism | string | null | |
| salaryText | string | null | |
| salaryMin | number | null | |
| salaryMax | number | null | |
| salaryCurrency | string | null | |
| salaryPeriod | string | null | |
| summary | string | null | |
| description | string | null | |
| responsibilities | string | null | |
| requirements | string | null | |
| benefits | string | null | |
| contactName | string | null | |
| contactEmail | string | null | |
| contactPhone | string | null | |
| contactOffice | string | null | |
| postedDate | string | null | |
| expiryDate | string | null | |
| startDate | string | null | |
| url | string | null | |
| applyUrl | string | null | |
| market | string | null | |
| marketName | string | null | |
| language | string | null | |
| siteDomain | string | null | |
| searchQuery | string | null | |
| searchLocation | string | null | |
| searchUrl | string | null | |
| scrapedAt | 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 Hays job listing with full description, salary and recruiter details. | $0.0015 |
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/hays-jobs-scraper').call({
"searchQueries": [
"software engineer"
],
"countries": [
"GB"
],
"maxResults": 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/hays-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/hays-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 plus city with a 20 km radius on hays.de; each job page is opened for the full posting and recruiter.
Keyword plus city on hays.com.au, searched around the place.
French listings, permanent contracts only, newest first.
UK keyword and location with the contract-type filter.
Search pages copied from hays.co.uk and hays.de, 5 jobs each.
Two countries in one run with English-language listings, 5 jobs each.

Scrape Google Maps places for any search term and city, with no code or with one API call. A real run, its output, its log and its exact cost, plus the limits and the legal side.
Read the article
Paste an Amazon search or product URL into a ready-made Actor and get one row per product with price, ASIN, rating and review count. This guide covers the no-code steps, the API, ZIP code pricing, a real run and its cost.
Read the article
Scrape Google search results by query and country and get each results page as JSON: organic results with positions, People Also Ask and related searches. Run it without code or from Python, with a real run, the cost per page and Google's terms.
Read the articleScrape.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.