Eures Job Scraper avatar

Eures Job Scraper

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Eures Job Scraper

Eures Job Scraper

Scrape EURES job listings across 30+ EU countries. Extract salaries, companies, job titles, and employment data in seconds. Perfect for job aggregators, recruitment agencies, and career platforms. Automate European job market analysis with zero coding.

Pricing

from $0.80 / 1,000 results

Rating

5.0

(3)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

2

Bookmarked

88

Total users

17

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

What does EURES Job Scraper do?

EURES Job Scraper collects structured job vacancy data from EURES, the European employment portal operated for job mobility across the EU and participating countries. Start with a keyword, a location, or a complete EURES search URL, set a result limit, and receive detailed vacancy records with employer data, locations, descriptions, salary ranges, application deadlines, education and experience requirements, and direct vacancy links.

The dataset is built for recruitment research, hiring intelligence, job aggregation, labor market analysis, employer research, salary benchmarking, and recurring vacancy monitoring across European countries. Results can be exported from Apify as JSON, CSV, Excel, or XML, or delivered to other systems through the Apify API, webhooks, and integrations.

Why use EURES Job Scraper?

  • European vacancy coverage - Collect vacancies published through EURES from many national employment services and employers in one consistent dataset.
  • Three ways to search - Use a keyword, a location or country, or an EURES search URL that already contains your filters.
  • Detailed vacancy context - Capture salary ranges, application deadlines, education levels, required experience, skills, working languages, employment periods, and structured city and postal data.
  • Application links - Keep direct application URLs when the vacancy publishes one.
  • Readable descriptions - Use description_text for analysis and description_html when the original formatting matters.
  • Clean datasets - Duplicate vacancies are skipped, empty values are removed, and records are saved as each page completes.
  • Repeatable collection - Use result and page limits for quick tests, scheduled monitoring, or larger research runs.
  • Resilient runs - Temporary request failures are retried, detail failures never discard a job record, and the actor keeps working when the portal changes how it serves data.

What data can you extract from EURES?

Each record can include the vacancy title, employer, location, publication context, full description, salary, requirements, and application information. EURES does not publish every field for every vacancy, so some values can be empty.

Core vacancy fields

FieldTypeDescription
identifierStringEURES vacancy identifier.
titleStringJob or vacancy title.
urlStringDirect EURES vacancy detail URL.
companyStringHiring company or organization.
employer_nameStringEmployer name when published separately.
employer_legal_idStringEmployer legal identifier when available.
employer_websiteStringEmployer website when available.
employer_sector_codesStringComma-separated employer sector codes.
employer_size_codeStringEmployer organization size code.
employer_ownership_type_codeStringEmployer ownership type code.
employer_descriptionStringPlain-text employer description from the vacancy detail.
publication_dateStringISO publication date derived from the vacancy creation timestamp.
creation_dateNumberSource creation timestamp in epoch milliseconds.
last_modification_dateNumberSource last update timestamp in epoch milliseconds.
number_of_postsNumberNumber of advertised positions.
eures_flagBooleanWhether the vacancy is EURES-flagged.
position_offering_codeStringContract or offering code, such as direct hire or temporary.
position_schedule_codesStringComma-separated working time codes, such as full time.
job_category_codesStringComma-separated ESCO or ISCO occupation codes.
job_category_primaryStringPrimary occupation code.
available_languagesStringComma-separated listing language codes.
translation_typeStringTranslation type reported by EURES.
translation_languageStringLanguage code of the alternate translation.
translated_titleStringAlternate translated title when available.
translated_description_textStringPlain-text alternate translated description.
location_country_codesStringComma-separated country codes.
location_region_codesStringComma-separated NUTS region codes.
location_citiesStringComma-separated city names when published.
location_postal_codesStringComma-separated postal codes when published.
description_htmlStringVacancy description with safe formatting preserved.
description_textStringPlain-text vacancy description.
summaryStringShort text summary derived from the description.
sourceStringSource label, normally EURES.
source_urlStringData service URL used for the run.
search_urlStringPortal search URL used for the run.

Salary, requirements, and application fields

FieldTypeDescription
salary_minNumberMinimum salary when published.
salary_maxNumberMaximum salary when published.
salary_referenceNumberReference salary when published.
salary_currencyStringSalary currency code, such as EUR.
salary_intervalStringPay interval, such as year, month, or hour.
salary_typeStringRemuneration type, such as base pay.
salary_basisStringRemuneration basis, such as salaried.
salary_descriptionStringPlain-text salary description.
salary_benefitsStringBenefit descriptions returned with the remuneration package.
last_application_dateStringISO application deadline when published.
employment_period_startStringISO employment start date when published.
employment_period_endStringISO employment end date when published.
employment_period_descriptionStringEmployment period description.
immediate_startBooleanWhether the employer marks the role for immediate start.
required_education_level_codeStringRequired education or qualification level code.
required_years_of_experienceNumberRequired years of experience when published.
required_experiencesStringExperience requirement descriptions.
required_skillsStringComma-separated ESCO skill identifiers.
required_skill_countNumberNumber of required skills reported.
required_driving_licensesStringComma-separated required driving license categories.
working_language_codesStringComma-separated working language codes.
position_language_requirementsStringLanguage codes with required or desired levels, such as en(B1).
application_instructionsStringPlain-text application instructions.
application_urlStringApplication link extracted from the vacancy instructions.
travel_willingnessBooleanWhether travel is required or accepted.
travel_percentageNumberTravel percentage when published.
detail_languageStringLanguage of the vacancy detail profile used for enrichment.

How to use EURES Job Scraper

  1. Open the Actor on Apify Store.
  2. Choose a search mode: enter a keyword, enter a location or country, or paste a complete EURES search URL.
  3. Optionally set the sort order, result limit, and page limit.
  4. Keep vacancy details enabled for salary, deadlines, and requirement fields.
  5. Run the Actor and review the dataset preview.
  6. Export the dataset or connect it to your workflow.

Search precedence is simple and predictable:

  • A supplied keyword is used first.
  • Location and country codes narrow a keyword search. If only location or country is supplied, the search runs without a keyword.
  • When no keyword or location is supplied, the start URL is used.
  • A keyword or location search ignores the start URL completely, including its query filters.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringNoEURES software engineer search URLComplete EURES search results URL. Used only when no keyword, location, or country is supplied.
keywordStringNo-Search term matched across vacancy fields. Takes precedence over the start URL.
locationStringNo-EURES location or NUTS codes, such as de, fr, or fi1b. Comma-separated values are supported.
countryStringNo-ISO country codes, such as de, fr, or fi. Combined with location codes.
sortStringNoBEST_MATCHSort order for keyword and location searches. Accepted values are BEST_MATCH and MOST_RECENT.
results_wantedIntegerNo20Maximum number of vacancy records to save. Range: 1 to 1000.
max_pagesIntegerNo10Maximum number of result pages to request. Range: 1 to 200.
include_detailsBooleanNotrueFetch each vacancy detail to add salary, deadlines, requirements, and structured locations.
proxyConfigurationObjectNo{}Optional Apify Proxy or custom proxy settings for repeated or large runs.

Usage Examples

Collect recent software engineering vacancies across Europe.

{
"keyword": "software engineer",
"sort": "MOST_RECENT",
"results_wanted": 50,
"max_pages": 5
}

Collect vacancies in Germany without a keyword.

{
"location": "de",
"sort": "MOST_RECENT",
"results_wanted": 100,
"max_pages": 10
}

Search with a country filter

Combine a keyword with a country code to narrow the results.

{
"keyword": "nurse",
"country": "nl",
"results_wanted": 40,
"max_pages": 4
}

Complete EURES search URL

Reuse a search that you already configured on the EURES portal.

{
"startUrl": "https://europa.eu/eures/portal/jv-se/search?page=1&resultsPerPage=50&orderBy=BEST_MATCH&keywordsEverywhere=data%20analyst&lang=en",
"results_wanted": 100,
"max_pages": 5
}

Faster runs without detail enrichment

Use core listing data only when you do not need salary or application deadline fields.

{
"keyword": "developer",
"results_wanted": 200,
"max_pages": 10,
"include_details": false
}

Sample Output

{
"identifier": "NWQzODU2YzItNmEwMS1jOTM0LWUwNjMtNjg5M2IyMGE0ZjNlIDQy",
"title": "Software Engineer (H/F)",
"url": "https://europa.eu/eures/portal/jv-se/jv-details/NWQzODU2YzItNmEwMS1jOTM0LWUwNjMtNjg5M2IyMGE0ZjNlIDQy?lang=en",
"company": "Example Technologies SAS",
"employer_name": "Example Technologies SAS",
"employer_website": "https://example.com",
"publication_date": "2026-10-16T05:44:59.000Z",
"creation_date": 1760593499000,
"last_modification_date": 1761198299000,
"number_of_posts": 2,
"eures_flag": false,
"position_offering_code": "directhire",
"position_schedule_codes": "fulltime",
"job_category_codes": "http://data.europa.eu/esco/occupation/f2b15a0e-e65a-438a-affb-29b9d50b77d1",
"location_country_codes": "FR",
"location_region_codes": "FRJ13",
"location_cities": "Marseille",
"location_postal_codes": "13008",
"salary_min": 40000,
"salary_max": 45000,
"salary_currency": "EUR",
"salary_interval": "year",
"salary_type": "basepay",
"last_application_date": "2026-11-07T00:00:00.000Z",
"immediate_start": true,
"required_education_level_code": "6",
"required_years_of_experience": 3,
"required_skills": "http://data.europa.eu/esco/skill/6d97bf55-6fb6-4795-8282-3ef915ae0bb8",
"working_language_codes": "fr,en",
"position_language_requirements": "fr(C1),en(B2)",
"application_url": "https://example.com/careers/apply/12345",
"application_instructions": "Send your application through the employer website.",
"description_html": "<p>We are looking for a software engineer to join our platform team.</p>",
"description_text": "We are looking for a software engineer to join our platform team.",
"summary": "We are looking for a software engineer to join our platform team.",
"available_languages": "fr,en",
"translation_type": "FIRST_LANGUAGE",
"detail_language": "fr",
"source": "EURES",
"source_url": "https://europa.eu/eures/api/jv-searchengine/public/jv-search/search",
"search_url": "https://europa.eu/eures/portal/jv-se/search?lang=en&keywordsEverywhere=software%20engineer"
}

Tips for Best Results

  • Start with 20 to 50 results to check the fields for your target country and occupation.
  • Use MOST_RECENT when you monitor new vacancies and BEST_MATCH when you search a specific role.
  • Keep include_details enabled when you need salary, deadlines, education, experience, or application links.
  • Use comma-separated country codes when you want to compare several labor markets in one run.
  • Empty optional fields mean EURES did not publish the value for that vacancy. They do not indicate a failed run.
  • Use max_pages together with results_wanted to control the size and duration of large runs.
  • For recurring monitoring, schedule the Actor with MOST_RECENT and a small result limit.

Integrations

  • Google Sheets - Send vacancy datasets to spreadsheets for review and reporting.
  • Webhooks - Trigger your own workflow after each run.
  • Make or Zapier - Connect vacancy data to no-code automations.
  • API - Read datasets programmatically from your applications.
  • Data warehouses - Export to CSV, JSON, or Excel for analytics and salary benchmarking.
  • Notification workflows - Send new matching vacancies to email, Slack, or a CRM.

Frequently Asked Questions

Can I export EURES job data to CSV or Excel?

Yes. Apify datasets can be downloaded as CSV, Excel, JSON, XML, and other supported formats.

Can I run this Actor on a schedule?

Yes. You can schedule it in Apify Console to run hourly, daily, weekly, or at another interval. Use MOST_RECENT for change monitoring.

Do I need an EURES account or API key?

No. The Actor collects publicly available vacancy data and does not require an EURES login or API key.

Can I search several countries in one run?

Yes. Use comma-separated values in country or location, such as de,fr,nl, or place multiple location codes in a single EURES search URL.

Why are salary or deadline fields missing?

EURES only publishes those values when the employer or national employment service supplies them. The Actor never invents missing salary or contact information.

Why does a location-only search ignore my start URL?

A keyword or location search is treated as the active search mode and the start URL is ignored completely. Clear the keyword and location fields if you want to run the start URL exactly as supplied.

Does the Actor keep job records when a detail request fails?

Yes. Listing data is saved even when optional detail enrichment fails, and enrichment pauses automatically after repeated failures so the run can finish.

Is this Actor suitable for non-technical users?

Yes. It runs from the Apify Console with form-based inputs, and the dataset can be downloaded without writing code.

The Actor is intended for legitimate collection of publicly available vacancy data. You are responsible for complying with applicable laws, EURES terms of use, and privacy rules in your jurisdiction.

Support

For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.

This Actor is designed for legitimate data collection from publicly available sources. Users are responsible for using the data responsibly and complying with applicable laws and website terms.