Skip to content

EURES Job Scraper

Try for free

Export job vacancies from EURES, the European Job Mobility Portal: millions of jobs from public employment services in 31 countries. Search by keyword, country, region, contract, working time, sector and date, or paste EURES links. Get employer, location, salary, deadline, requirements, description, contacts and apply links. No login needed.

🇪🇺 EURES Job Scraper

Export job vacancies from EURES, the European Job Mobility Portal run by the European Commission, which lists about 2 million jobs from the public employment services of 31 European countries. Search by keyword, country, region, contract type, working time, sector or publication date, or paste EURES links, and get clean rows with employer, location, salary, application deadline, requirements, the full description, contact persons and the apply link. No login, no browser, and $0.70 per 1,000 jobs.

✨ Why use EURES Job Scraper?

  • 🌍 All of Europe in one dataset: the EU, Norway, Iceland, Liechtenstein and Switzerland, as published by national public employment services such as Germany's Bundesagentur für Arbeit and France Travail.
  • ⚡ Fast: reads the portal's own JSON data. 1,000 jobs with full details took about 1.5 minutes in our tests; a 10-job search finishes in about 5 seconds.
  • 📇 Contacts and apply links: contact person names, emails and phone numbers when the employer publishes them, plus the direct application link.
  • 🧭 Rich filters: countries, NUTS regions, contract types, full- or part-time, experience, education, employer sector, jobs open to candidates from abroad, and how recently a job was published.
  • 📈 No 10,000-result wall: EURES shows at most 10,000 jobs per search, so bigger searches are split automatically by country, region, sector, contract and working time, with duplicates removed.
  • 🏷️ Readable occupations: ESCO occupation names and codes next to the raw URIs.

🎯 Use cases

  • 👩‍💼 Recruitment and staffing: find employers hiring nurses, drivers, engineers or seasonal staff in any European region, with the recruiter's contact details.
  • 📊 Labour-market research: track vacancies by country, region, occupation, contract type and salary across Europe.
  • 🔔 Job alerts and aggregators: schedule daily runs with Published within: last 24 hours and feed new jobs into your job board or CRM.
  • 🧳 Mobility and relocation services: list jobs flagged as open to candidates from other European countries.
  • 💶 Salary benchmarking: collect published salary ranges with currency and pay interval.

🚀 How to use

  1. Enter one or more Search terms (for example software engineer, nurse, Krankenpfleger), or paste EURES links: a search page from the EURES job search or single job pages.
  2. Optionally pick Countries and other Filters.
  3. Set Maximum jobs (0 = no limit).
  4. Click Start. Rows appear in the dataset as they are scraped.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
keywordsSearch terms, one search each (* = all jobs)
startUrlsEURES search links (their filters are kept) or job links
maxResultsMaximum jobs in total (default 20, 0 = no limit)
maxResultsPerSearchOptional cap per search term or link, so every search gets its share
countries, regionCodesCountries and NUTS regions, e.g. de, dea, frl0
keywordScopeMatch terms anywhere, in the title, the description or the employer name
postedWithinLast 24 hours, 3 days, 7 days or 30 days
contractTypes, workingTime, experience, educationLevels, sectorsSite filters
euresFlagOnly, minPositionsJobs open to candidates from abroad; minimum number of open positions
sortByBest match or most recent
includeDetailsRead each job's full record (on by default)
languageLanguage of job links, occupation names and multi-language listings
{
  "keywords": ["nurse", "Krankenpfleger"],
  "countries": ["de", "at"],
  "postedWithin": "LAST_WEEK",
  "workingTime": ["fulltime"],
  "maxResults": 200
}

📤 Output

FieldDescription
title, url, identifierJob title, EURES job page and id
company, employer_website, employer_size_code, employer_sector_codesEmployer
occupation, occupation_isco_code, job_category_codesESCO occupation name, code and URIs
location_country_codes, location_region_codes, location_cities, location_postal_codes, location_addressesWhere the job is
publication_date, last_modification_date, last_application_datePublished, updated, apply-by dates
position_offering_code, position_schedule_codes, number_of_postsContract, working time, open positions
salary_min, salary_max, salary_currency, salary_intervalPublished salary
required_experiences, required_years_of_experience, position_language_requirements, required_driving_licenses, required_skills, required_education_level_codeRequirements
description_text, description_html, summaryFull description
contact_name, contact_email, contact_phone, contactsContact persons
application_instructions, application_urlHow and where to apply
source_system, national_referencePublishing employment service and its reference

Example row from a test run (description shortened, contact person replaced with a fictional one):

{
  "identifier": "MTAwMDEtMTAwMzc1MDgxMi1TIDE",
  "title": "Study Nurse (m/w/d) (Study-Nurse)",
  "url": "https://europa.eu/eures/portal/jv-se/jv-details/MTAwMDEtMTAwMzc1MDgxMi1TIDE?lang=en",
  "company": "Universitätsklinikum Bonn AöR",
  "employer_website": "http://www.ukbonn.de",
  "employer_size_code": "largeenterprise",
  "occupation": "medical records clerk",
  "occupation_isco_code": "3252.1",
  "publication_date": "2026-09-23T20:25:53.435Z",
  "number_of_posts": 1,
  "position_offering_code": "temporary",
  "position_schedule_codes": "parttime",
  "location_country_codes": "DE",
  "location_region_codes": "DEA22",
  "location_cities": "Bonn",
  "location_postal_codes": "53127",
  "description_text": "Das UKB verbindet als eines der leistungsstärksten Universitätsklinika Deutschlands …",
  "employment_period_start": "2026-10-14T00:00:00.000Z",
  "contact_name": "Anna Beispiel",
  "contact_email": "anna.beispiel@example.com",
  "application_url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/10001-1003750812-S",
  "source_system": "DE001",
  "national_reference": "10001-1003750812-S",
  "details_fetched": true,
  "source": "EURES"
}

💰 Pricing

$0.70 per 1,000 jobs ($0.0007 per saved job), charged only for jobs saved to the dataset. Platform usage (compute and proxy traffic) is billed on top and is small: about $0.01 per 1,000 jobs with details on the default datacenter proxy in our tests. So 1,000 jobs ≈ $0.71 and 100 jobs ≈ $0.07. You can cap the cost of any run with the maximum charge setting; the run stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape EURES? EURES is a public portal and the vacancies are published for job seekers without a login. Job ads can contain personal data such as recruiter names and contact details; you are responsible for using them in line with the GDPR and the rules that apply to you.

Do I need an account, cookies or a proxy? No account or cookies. The default datacenter proxy works well; if the site ever refuses it, the run switches to European residential exits on its own.

How many jobs can I get? As many as EURES lists. One search on the site shows at most 10,000 jobs, so larger searches are split automatically. Set Maximum jobs to 0 for no limit.

Why are some fields empty? Each national employment service publishes different fields. Salary, deadline, experience and contacts are only filled when the job ad contains them. Turning off Include job details also leaves the detail-only fields empty.

Can I paste a search from the EURES website? Yes. Copy the address of a EURES job search page; its search terms and filters are kept, and the filters you set in the input are added when the link has none.

Can I schedule runs or use the API? Yes. Schedule the actor (for example daily with Published within: last 24 hours) and read the dataset through the API or integrations.

⚠️ Limits

  • EURES shows at most 10,000 jobs per search. Searches are split by country, region, sector, contract type and working time; a single slice that still has more than 10,000 jobs after every split is cut at 10,000 and the status message says so.
  • Region filters accept the codes EURES itself uses (countries and the regions it lists under them, e.g. de1, dea, frl0); finer NUTS levels return nothing on the site.
  • Published within follows the site, which also counts recently updated jobs.
  • Descriptions are kept as published; some services send plain text without line breaks.
  • Job-seeker features that need a EURES account (saved searches, CV matching) are not covered.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

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.

No credit card. No setup calls.