Hays Jobs Scraper: 8 Countries, Salary, Descriptions avatar

Hays Jobs Scraper: 8 Countries, Salary, Descriptions

Pricing

from $3.00 / 1,000 serp job results

Go to Apify Store
Hays Jobs Scraper: 8 Countries, Salary, Descriptions

Hays Jobs Scraper: 8 Countries, Salary, Descriptions

Scrape Hays jobs from 8 country sites (UK, US, CA, IE, NL, ES, PT, AE). Returns title, location, salary parsed from the advert text, full description, work arrangement, employment type and industry. Search by keyword, URL or job link. Filter by job type, working pattern, industry.

Pricing

from $3.00 / 1,000 serp job results

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Hays Scraper - UK, US, CA, IE, NL, ES, PT, AE Jobs

Pull live job listings from Hays, one of the largest specialist recruitment agencies, by keyword, search URL or direct job URL. Each row has the title, canonical job URL, location, structured salary (min, max, currency, period), employment and contract type, industry, publish and expiry dates, and the full description as text, HTML and Markdown. No API key, no login.

Supported Hays sites: United Kingdom, United States, Canada, Ireland, Netherlands, Spain, Portugal and the United Arab Emirates. These are the sites that run the Hays job portal; each was tested against the live site.

Sample output

{
"id": "4831598",
"title": "Management Accountant",
"job_url": "https://www.hays.co.uk/job-detail/management-accountant-warrington_4831598",
"company_name": "Hays",
"location": "Warrington",
"city": "Warrington",
"region": "North West",
"country": "GB",
"employment_type": "Full-time",
"contract_type": "permanent",
"industry": "Manufacturing & Production",
"category": "Part Qualified Accountant",
"salary_text": "£30,000 - £35,000",
"salary_min": 30000,
"salary_max": 35000,
"salary_currency": "GBP",
"salary_period": "year",
"salary_source": "text",
"work_arrangement": "hybrid",
"remote_option": "hybrid",
"description_snippet": "Management Accountant Location: Warrington (Hybrid Working) ...",
"description_md": "Management Accountant\nLocation: Warrington (Hybrid Working)\n...",
"posted_at_datetime": "2026-09-29T00:00:00Z",
"posted_at_text": "2026-09-29",
"expires_at": "2026-12-27",
"headline": "Manufacturing Accountant | Warrington | £35K + Study Support | Hybrid",
"contact_name": "Lauren Taylor",
"contact_office": "Liverpool, Part 2nd Floor, 5 St Paul’s Square",
"job_status": "online",
"source_platform": "hays",
"search_query": "accountant"
}

Pricing

EventPrice
Actor start$0.001 per run start
Search result (every job returned)$0.003 per job returned (about $3 per 1,000)
Detail result (added when the description was parsed)+$0.005 per job enriched with full details (about $8 per 1,000 jobs with details)

Every returned job is billed the search result. A job whose description was parsed is billed the detail result on top of it. Jobs dropped by the strict keyword match are not billed.

New to Apify? Every account gets a $5 free monthly platform credit, enough for hundreds of results before you commit to paying anything. Test with a small maxResults first.

Input

FieldTypeDescriptionExample
searchQueriesarrayJob title or skill keywords. Each runs as its own search and rows are tagged with search_query.["accountant", "site manager"]
searchUrlsarrayHays search URLs. The keyword (q=) and location are read from the URL, the country from the domain.["https://www.hays.co.uk/job-search?q=accountant"]
directUrlsarrayHays job-detail URLs for still-alive checks or specific vacancies. Removed vacancies come back as offline rows and are not billed.["https://www.hays.co.uk/job-detail/management-accountant-warrington_4831598"]
countrystringSite for keyword searches: uk, us, ca, ie, nl, es, pt, ae. Default uk."uk"
locationstringCity or region, for example Manchester. Empty searches the whole country."Manchester"
jobTypestringany (default), permanent, contract or temporary. Applied by the Hays search."permanent"
workingPatternstringany (default), flexible, fullTime or partTime. Applied by the Hays search."flexible"
industrystringClient industry exactly as the site labels it, for example Accountancy Firms. Labels differ per country site."Accountancy Firms"
sortBystringnewest (default, publish date descending), relevance or title."newest"
postedWithinDaysnumberOnly jobs published in the last N days. Empty means no limit.7
maxResultsintegerTotal cap across everything. Default 10, 0 means no cap.100
maxResultsPerQueryintegerCap per keyword or URL. Default 50, 0 means no cap.50
scrapeDetailsbooleanInclude the full description in four formats. Default true.true
strictKeywordMatchbooleanTitle-first relevance filter: keep only jobs where every keyword word (stemmed) appears in the title. Single-word keywords also match the category. Description-only matches are dropped. Default true.true
maxPagesintegerSafety limit on result pages per keyword (10 jobs per page). Default 50.50
maxConcurrencyintegerKeywords or URLs processed in parallel, each with its own session. Default 3.3

An empty input ({}) browses the newest 10 jobs on the UK site.

Example

{
"searchQueries": ["accountant", "nurse"],
"country": "uk",
"sortBy": "newest",
"postedWithinDays": 14,
"maxResults": 100,
"maxResultsPerQuery": 50
}

Output fields

Core

  • id, job_ref: Hays job reference number, unique per posting.
  • title: Job title.
  • headline: Advert headline shown above the description, for example "Manufacturing Accountant | Warrington | £35K + Study Support | Hybrid".
  • job_url: Canonical Hays job page URL. source_url carries the same value.
  • apply_url: Apply link on the Hays site.
  • company_name: Always "Hays". Hays advertises on behalf of its clients and normally does not name the hiring company. company is a deprecated duplicate.
  • source_platform: Always "hays".
  • search_query: Keyword that produced the row. Null for browse runs and direct URLs.
  • job_status: online, or offline for direct URLs that no longer exist.
  • scraped_at: ISO timestamp.

Location

  • location, city, region (duplicates removed; state is a duplicate), country (ISO alpha-2), latitude, longitude.

Role

  • employment_type: Full-time, Part-time, Temporary or Contract.
  • contract_type: permanent, contract or temporary.
  • flexible_working: True when Hays marks the job as flexible.
  • industry: Client industry from Hays.
  • work_arrangement and remote_option (same value): remote, hybrid or onsite, detected from the headline, the flexible working flag and the description. Null when nothing is stated.
  • category: Hays specialism, for example "Senior Finance Qualified".

Salary

  • salary_text: Salary text as displayed on the site.
  • salary_min, salary_max: Numeric bounds parsed from salary_text (handles k, ranges, "up to", per hour, day or year), in salary_period units. "Up to" adverts have only a max. Text without numbers ("Competitive", "To £££") gives null.
  • salary_source: text when the numbers come from salary_text, band when the advert has no salary text and the Hays internal band is used.
  • salary_currency: ISO 4217 code such as GBP, USD, EUR.
  • salary_period: hour, day, week, month or year. Taken from the salary text ("per hour", "per day", "per annum", "p/h"), otherwise inferred from the amount scale.

Description (when scrapeDetails is true)

  • description_full: Full plain text.
  • description_snippet: First 300 characters, including the trailing ellipsis.
  • description_html: Full description as HTML.
  • description_md: Full description as Markdown.

Dates and contact

  • posted_at_datetime, posted_at_text: Publish date. posted_at is a duplicate of the text form. The site publishes a date, so the time part is always midnight UTC.
  • expires_at: Posting expiry date.
  • contact_name, contact_email, contact_phone, contact_office: The Hays consultant named on the job page and their office (city and address), when shown.

Deprecation notes

company, state, source_url and posted_at are legacy aliases kept for one year (until 2027-09-29). Migrate to company_name, region, job_url and posted_at_text. Both forms are emitted in every row during the window.

Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

Configure the MCP server with the Hays Scraper preconfigured at mcp.apify.com?tools=santamaria-automations/hays-scraper.

{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.apify.com/?tools=santamaria-automations/hays-scraper",
"--header",
"Authorization: Bearer <YOUR_API_TOKEN>"
]
}
}
}

For per-tool schemas and copy-paste snippets for MCP clients, see the MCP tab.

See the auto-generated API tab for language-specific examples (cURL, JS, Python, .NET, Ruby, PHP).

Why this actor

  • Reads the same data feed the Hays job pages use, so descriptions are complete and salary bands are structured rather than parsed from text.
  • Eight Hays country sites behind one input, with sort by newest and a posted-within-days cutoff for scheduled runs.
  • Strict keyword match is title-first: it removes the jobs the Hays search adds only because the words appear in the description, and you are not billed for them.
  • Consultant contact name, email and phone on every row where Hays shows them.

Common use cases

  • Refresh a daily list of new finance, tax or technology vacancies in a UK region and push them to a CRM.
  • Track day-rate and hourly contract pay for a skill across Hays UK, IE and NL.
  • Feed job descriptions into an LLM pipeline for skills extraction.
  • Check whether saved Hays vacancies are still online with direct URLs.

Notes and limits

  • Hays search returns loosely related jobs for some keywords. With strictKeywordMatch on (default) only jobs whose title contains every keyword word are kept (stemmed, so "accountant" matches "accounting"; single-word keywords also match the category), so rare keywords can return fewer rows than maxResults. A nonsense keyword returns nothing.
  • Jobs are advertised by Hays. The end client is normally not named, so company_name is always "Hays".
  • Salary numbers are read from the salary text shown on the advert, because the Hays internal band often contradicts it. The band is used only when an advert has no salary text.
  • Sites that do not run the Hays job portal (Germany, Austria, Switzerland, France, Australia and others) are not supported. Search URLs from those sites are skipped with a warning.
  • Offline direct URLs are returned with job_status: "offline", the id taken from the URL, and are not billed.
  • Filters the Hays site shows but this actor does not offer: minimum and maximum pay (minPay, maxPay) and the pay-type facet are not applied by the Hays search backend (the result count does not change), so they are not supported. sortType and the other filter parameters in a pasted search URL are ignored too: use the sortBy, jobType, workingPattern and industry inputs instead.

Support

  • Questions or issues? Email contact@nanoscrape.com, we typically reply within 6 hours. You can also open a ticket in the Issues tab on the actor page.
  • Feature request for this actor? Open a ticket in the Issues tab or email contact@nanoscrape.com with the field you need and, if possible, a URL that shows the data live.
  • Need a scraper for a job board we don't cover yet? Email contact@nanoscrape.com with the target site and your rough usage volume. We ship new boards regularly.