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

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.
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.
software engineer, nurse, Krankenpfleger), or paste EURES links: a search page from the EURES job search or single job pages.| Field | What it does |
|---|---|
keywords | Search terms, one search each (* = all jobs) |
startUrls | EURES search links (their filters are kept) or job links |
maxResults | Maximum jobs in total (default 20, 0 = no limit) |
maxResultsPerSearch | Optional cap per search term or link, so every search gets its share |
countries, regionCodes | Countries and NUTS regions, e.g. de, dea, frl0 |
keywordScope | Match terms anywhere, in the title, the description or the employer name |
postedWithin | Last 24 hours, 3 days, 7 days or 30 days |
contractTypes, workingTime, experience, educationLevels, sectors | Site filters |
euresFlagOnly, minPositions | Jobs open to candidates from abroad; minimum number of open positions |
sortBy | Best match or most recent |
includeDetails | Read each job's full record (on by default) |
language | Language of job links, occupation names and multi-language listings |
{
"keywords": ["nurse", "Krankenpfleger"],
"countries": ["de", "at"],
"postedWithin": "LAST_WEEK",
"workingTime": ["fulltime"],
"maxResults": 200
}
| Field | Description |
|---|---|
title, url, identifier | Job title, EURES job page and id |
company, employer_website, employer_size_code, employer_sector_codes | Employer |
occupation, occupation_isco_code, job_category_codes | ESCO occupation name, code and URIs |
location_country_codes, location_region_codes, location_cities, location_postal_codes, location_addresses | Where the job is |
publication_date, last_modification_date, last_application_date | Published, updated, apply-by dates |
position_offering_code, position_schedule_codes, number_of_posts | Contract, working time, open positions |
salary_min, salary_max, salary_currency, salary_interval | Published salary |
required_experiences, required_years_of_experience, position_language_requirements, required_driving_licenses, required_skills, required_education_level_code | Requirements |
description_text, description_html, summary | Full description |
contact_name, contact_email, contact_phone, contacts | Contact persons |
application_instructions, application_url | How and where to apply |
source_system, national_reference | Publishing 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"
}
$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.
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.
de1, dea, frl0); finer NUTS levels return nothing on the site.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.
keywordsarrayOptionalSearch terms
Job titles, skills or employer names, one per line, in any EU language, e.g. 'software engineer', 'nurse', 'Krankenpfleger', 'chef'. Each term is its own search. Use * to list every job (narrow it down with the filters below).
startUrlsarrayOptionalEURES links
Optional. Search links copied from the EURES job search (europa.eu/eures/portal/jv-se/search?...; all filters in the link are kept) or job links (europa.eu/eures/portal/jv-se/jv-details/). Search and job links can be mixed with search terms.
maxResultsintegerOptionaldefault 20Maximum jobs
How many jobs to save in total across all searches and links. 0 = no limit. EURES shows at most 10,000 jobs per search; bigger searches are split automatically by country, region, sector, contract type and working time.
maxResultsPerSearchintegerOptionalMaximum jobs per search
Optional cap for each search term and each search link, so every search gets its share (e.g. 50 per term). Empty or 0 = only the total maximum applies.
countriesarrayOptionalCountries
Only jobs in these countries (EU, EEA and Switzerland). Leave empty for all of Europe.
regionCodesarrayOptionalRegion codes
Optional regions as EURES uses them (NUTS codes, lower case), e.g. 'de1' (Baden-Württemberg), 'dea' (North Rhine-Westphalia), 'frl0' (Provence-Alpes-Côte d'Azur), 'nl3' (West Netherlands). Combined with Countries.
keywordScopeenumOptionalSearch terms match
Where the search terms must appear. Default: anywhere in the job.
postedWithinenumOptionalPublished within
Only jobs published or updated recently.
contractTypesarrayOptionalContract types
Only these types of contract.
workingTimearrayOptionalWorking time
Only full-time, part-time or flexible-hours jobs.
experiencearrayOptionalRequired experience
Only jobs that ask for this much experience (most jobs don't state it).
educationLevelsarrayOptionalEducation level
Only jobs that ask for this level of education (most jobs don't state it).
sectorsarrayOptionalEmployer sectors
Only jobs from employers in these sectors (NACE sections).
euresFlagOnlybooleanOptionalOnly jobs open to candidates from abroad
Only vacancies flagged for EURES: the employer is interested in recruiting workers from other European countries.
minPositionsintegerOptionalMinimum open positions
Only vacancies with at least this many open positions.
sortByenumOptionalSort by
Order of the results. Default: best match (a search link keeps its own order unless you set this).
includeDetailsbooleanOptionaldefault trueInclude job details
Read each job's full record: salary, application deadline, contract period, required experience, skills and languages, contact persons and the apply link. Turn off for a faster export of the search data only.
languageenumOptionalPreferred language
Language of job links, occupation names and, when a job is published in several languages, the version that is saved. Default: English.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to reach EURES. The default (datacenter) works well; the run switches to residential exits on its own if the site ever refuses them.
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 |
|---|---|---|
| identifier | string | EURES vacancy id |
| title | string | null | Job title |
| url | string | null | EURES job page |
| company | string | null | Employer name |
| employer_name | string | null | Employer name |
| employer_legal_id | string | null | Employer registration number when published |
| employer_website | string | null | Employer website |
| employer_sector_codes | string | null | Employer NACE sector codes |
| employer_size_code | string | null | Employer size |
| employer_ownership_type_code | string | null | Employer ownership type |
| employer_description | string | null | About the employer |
| occupation | string | null | Occupation name (ESCO) |
| occupation_isco_code | string | null | ESCO/ISCO occupation code |
| occupations | string | null | All occupation names |
| publication_date | string | null | Published (ISO date) |
| creation_date | number | null | Published (epoch ms) |
| last_modification_date | number | null | Last updated (epoch ms) |
| number_of_posts | number | null | Open positions |
| eures_flag | boolean | null | Flagged for recruitment from abroad |
| position_offering_code | string | null | Contract type |
| position_schedule_codes | string | null | Working time |
| job_category_codes | string | null | ESCO occupation URIs |
| job_category_primary | string | null | Main ESCO occupation URI |
| available_languages | string | null | Languages the job is published in |
| translation_type | string | null | Translation type |
| translation_language | string | null | Language of the listing text |
| translated_title | string | null | Title in the listing language |
| translated_description_text | string | null | Listing text |
| location_country_codes | string | null | Country codes |
| location_region_codes | string | null | NUTS region codes |
| location_cities | string | null | Cities |
| location_postal_codes | string | null | Postal codes |
| location_addresses | string | null | Work addresses |
| remote_work_allowed | boolean | null | Remote work allowed |
| description_html | string | null | Description (HTML) |
| description_text | string | null | Description (plain text) |
| summary | string | null | First 300 characters of the description |
| salary_min | number | null | Minimum salary |
| salary_max | number | null | Maximum salary |
| salary_reference | number | null | Reference salary |
| salary_currency | string | null | Salary currency |
| salary_interval | string | null | Pay interval |
| salary_type | string | null | Remuneration type |
| salary_basis | string | null | Remuneration basis |
| salary_description | string | null | Salary text |
| salary_benefits | string | null | Benefits |
| last_application_date | string | null | Application deadline (ISO date) |
| employment_period_start | string | null | Start date |
| employment_period_end | string | null | End date |
| employment_period_description | string | null | Employment period |
| immediate_start | boolean | null | Immediate start |
| required_education_level_code | string | null | Required education level |
| required_years_of_experience | number | null | Required years of experience |
| required_experiences | string | null | Required experience |
| required_skills | string | null | Required ESCO skills |
| required_skill_count | number | null | Number of required skills |
| working_language_codes | string | null | Working languages |
| position_language_requirements | string | null | Language requirements with level |
| required_driving_licenses | string | null | Driving licences |
| application_instructions | string | null | How to apply |
| application_url | string | null | Apply link |
| contact_name | string | null | Contact person |
| contact_email | string | null | Contact email |
| contact_phone | string | null | Contact phone |
| contacts | array | null | Contact persons (name, emails, phones, addresses) |
| national_reference | string | null | Reference at the national employment service |
| source_system | string | null | National employment service that published the job |
| detail_language | string | null | Language of the detail record |
| details_fetched | boolean | null | Full job record was read |
| source | string | null | EURES |
| source_url | string | null | Data endpoint |
| search_url | string | null | EURES search page |
| search_query | string | null | Search term |
| scraped_at | string | null | Scraped at (UTC) |
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 EURES job vacancy. | $0.0007 |
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/eures-scraper').call({
"keywords": [
"software engineer"
],
"maxResults": 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/eures-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/eures-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.
Ten nursing jobs in Germany with employer, location, full description, contact persons and apply links.
Full-time jobs in Spain published in the last 7 days, all occupations.
Paste a EURES job search link: here the newest developer jobs in France.
60 chef jobs from the search results only, the fastest and lightest mode.
Jobs with 'Koch' in the title in Austria, with German occupation names and links.
Two search terms in two countries, five jobs per term.
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.