EURES Jobs Scraper - European Employment Data avatar

EURES Jobs Scraper - European Employment Data

Pricing

from $3.00 / 1,000 results

Go to Apify Store
EURES Jobs Scraper - European Employment Data

EURES Jobs Scraper - European Employment Data

Scrape jobs from the official EURES European employment portal with employer, locations, description, contract, schedule, dates and application contacts.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Ben

Ben

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Search and export current vacancies from EURES, the European Employment Services portal operated for job mobility across the European Union and participating countries. Enter one or more keywords, optionally narrow the search by country, working time, or contract type, and receive normalized job records with titles, employers, locations, descriptions, posting dates, application links, and public contact details.

The Actor reads EURES' official public job-search service directly. It does not need a browser, a job-seeker login, an API key, a paid unblocker, or residential proxy traffic. Results are saved to the default Apify dataset and can be exported as JSON, CSV, Excel, XML, or RSS, called through the API, scheduled, or connected to Make, Zapier, n8n, a database, or a notification workflow.

What does the EURES Jobs Scraper collect?

Each result can include:

  • Stable EURES vacancy ID
  • Job title and full plain-text description
  • Original description HTML for link-aware workflows
  • Employer name, legal ID, size, ownership, website, and sector codes when provided
  • Country codes and EURES location or NUTS codes
  • Number of advertised positions
  • Full-time, part-time, or other working-time codes
  • Direct-hire or other contract-offering code
  • ESCO occupation and job-category identifiers
  • EURES mobility flag
  • Available listing languages and translation type
  • Creation and last-modification timestamps
  • Public application URL or additional linked URLs
  • Public contact email and telephone links found in the vacancy
  • Canonical EURES detail URL
  • Search keyword, rank, total matches, and scrape timestamp

EURES aggregates vacancies from many national services and employers. Not every source supplies every field. The Actor returns null or an empty list when EURES does not publish a value and never invents missing company or contact information.

Why use this Actor?

EURES covers a large and multilingual employment market. Its results are useful, but manually searching every term and country, opening vacancies, cleaning HTML, and reconciling location codes is slow. This Actor creates repeatable records that can be filtered, compared, stored, and monitored.

Common uses include:

  • Cross-border European job alerts
  • Recruitment-market and hiring-demand research
  • Country-by-country vacancy comparisons
  • Employer and role discovery for recruiters
  • Skills and occupation trend analysis
  • Monitoring multilingual job descriptions
  • Building reviewed job newsletters or internal feeds
  • Detecting newly created or recently modified vacancies
  • Finding public application links and employer contacts
  • Feeding a human-qualified recruiting or business-development workflow

Input

Keywords

The default run searches EURES for python and returns up to 10 unique jobs:

{
"keywords": ["python"],
"countryCodes": [],
"workingTimeCodes": [],
"contractTypeCodes": [],
"maxResults": 10
}

Use a narrow phrase when you need a focused feed:

{
"keywords": ["data engineer", "machine learning"],
"maxResults": 25
}

The Actor searches each phrase across EURES titles and descriptions, deduplicates vacancy IDs across queries, and stops when the global maxResults limit is reached.

Country filters

Use two-letter country codes to narrow the results:

{
"keywords": ["software developer"],
"countryCodes": ["DE", "NL", "SE"],
"maxResults": 30
}

Leave countryCodes empty to search all countries available through EURES. Country and location values in the output follow the codes supplied by EURES, which makes them suitable for deterministic filtering and later reference-data enrichment.

Working time and contract filters

EURES exposes normalized filter codes. Typical values include fulltime, parttime, and directhire:

{
"keywords": ["nurse"],
"countryCodes": ["DE"],
"workingTimeCodes": ["fulltime"],
"contractTypeCodes": ["directhire"],
"maxResults": 20
}

The available vocabulary can change with EURES reference data. If an unfamiliar code produces no results, remove that filter and confirm the current option on the EURES portal.

Example output

Values below illustrate the normalized schema. Live vacancies and counts change continuously.

{
"source": "EURES",
"id": "MzI2ODIwNDA3MzYgNg",
"title": "Python Developer, Vývojáři softwaru",
"employer_name": "Resistant AI s.r.o.",
"country_codes": ["CZ"],
"location_codes": ["CZ010"],
"number_of_posts": 1,
"working_time_codes": ["fulltime"],
"contract_type_code": "directhire",
"available_languages": ["cs"],
"created_at": "2026-05-25T00:28:35.267000+00:00",
"application_url": null,
"contact_email": null,
"url": "https://europa.eu/eures/portal/jv-se/jv-details/MzI2ODIwNDA3MzYgNg?lang=en",
"search_keyword": "python",
"rank": 1,
"total_matching": 12172,
"scraped_at": "2026-07-11T09:00:00+00:00"
}

description contains cleaned readable text. description_html preserves the source markup when your workflow needs application links or original formatting. application_urls, contact_emails, and contact_phones retain all public links extracted from the description, while the singular fields contain the first available value for table exports.

Build a repeatable job-monitoring workflow

For recurring alerts, keep the query narrow and save the EURES id as the stable key. On each scheduled run:

  1. Run the Actor with the same keyword and filters.
  2. Compare returned IDs with the prior dataset or your database.
  3. Keep only unseen vacancies or records whose modified_at changed.
  4. Apply your own relevance, language, employer, or location rules.
  5. Send the shortlist to email, Slack, Telegram, a CRM, or a human review queue.

Do not notify on every row in every run. State and deduplication belong in the downstream workflow because different teams define “new” and “relevant” differently.

The same design works for market research: append daily snapshots, retain total_matching, and analyze direction over time. A total count is a source observation, not a guarantee that every underlying vacancy is unique, current, or suitable.

Pricing

The Actor uses transparent pay-per-event pricing:

  • $0.00005 when the Actor starts
  • $0.003 for each job saved to the default dataset

A successful 10-job run costs about $0.03005 in Actor charges before ordinary Apify platform usage. Use maxResults to bound both the dataset and the result charge. Queries that produce no saved row are not charged as result events.

Reliability and implementation

The Actor calls the official public EURES job-search endpoint over direct HTTP. It uses bounded retries, explicit timeouts, a maximum of 50 records per API page, a hard 20-page safety limit, global deduplication, and a maximum input result limit of 500.

Every successful row is written once to the default dataset. A run that returns no useful jobs fails explicitly instead of reporting an empty success. This matters for schedules: a source or extractor failure should be visible in monitoring.

The Actor also strips HTML into readable text while preserving the original HTML, public links, and source codes. It does not translate job descriptions or infer company attributes that EURES did not provide.

Responsible use

Use EURES data for legitimate employment research and follow the portal's terms, applicable privacy and labor law, database rights, and your organization's compliance policies. Public employer or applicant-contact details are not automatic consent for bulk marketing. Keep outreach relevant, lawful, proportionate, and reviewed by a person.

Vacancies can expire, change, be duplicated across national feeds, or contain source errors. Confirm the role, employer, eligibility, salary, relocation terms, and application instructions on the current EURES or employer page before making decisions.

FAQ

Does the Actor require an EURES account?

No. It reads the official public job-search service and returns public vacancy data.

Does it need a proxy or browser?

No. The current implementation uses direct HTTP and a small 512 MB runtime.

Can I search several countries?

Yes. Add two-letter codes to countryCodes, or leave the field empty for all countries.

Can I search several keywords?

Yes. Results are deduplicated by EURES vacancy ID and the global maxResults limit applies across all queries.

Does the Actor translate descriptions?

No. It returns the public title, description, available language codes, and translation metadata supplied by EURES. Automated translation should be a separate, explicit downstream step.

Why are application or contact fields empty?

Some vacancy providers keep applications on EURES, omit public contact details, or publish instructions only in free text. The Actor extracts public hyperlinks, mailto: links, tel: links, and visible email patterns when present.

How do I report a problem?

Open an issue on the Actor page with the run ID, input, expected field, and a public example vacancy. Never post account credentials or private applicant information.

If the Actor saves you time, please leave a Store review. Reviews help prioritize maintenance and help other users assess the tool.

You might also like

Keywords

EURES scraper, EURES jobs API, Europe jobs scraper, EU employment data, European job vacancies, cross-border jobs, EURES vacancy export, European recruitment data, job market research, EURES automation, jobs JSON, jobs CSV, employer leads, EURES monitoring, Apify jobs scraper