Europe Jobs Scraper — EURES, EURAXESS + 12 More Boards
Pricing
from $1.20 / 1,000 job results
Europe Jobs Scraper — EURES, EURAXESS + 12 More Boards
All Europe-focused job sources behind one endpoint: LinkedIn Europe, AI Jobs, EURES, EURAXESS, AcademicPositions, WTTJ, JustJoin.it, NoFluffJobs, InfoJobs, Tecnoempleo, jobs.ac.uk and university boards. One merged, deduped dataset.
Europe Jobs Scraper - 14 Sources in One
Claude / Codex skill to describe and setup this actor: SKILL.md
One call for Europe-focused job data. This bundle runs 14 job sources, merges their results, dedupes within the run by normalized identity and URL, and returns one canonical six-root dataset of live European postings.
This is an unofficial scraper bundle. It is not affiliated with LinkedIn, EURES, EURAXESS, AcademicPositions, Welcome to the Jungle, JustJoin.it, NoFluffJobs, InfoJobs, Tecnoempleo, jobs.ac.uk, Ikerbasque, the University of Copenhagen, Universitat de Barcelona, or AI Jobs.
Sources included
| Source key | Coverage |
|---|---|
linkedin | LinkedIn jobs, default location: European Union |
ai_jobs_net | AI, ML and data jobs with Europe bias enabled |
eures | EU job mobility portal |
euraxess | EU research jobs |
academicpositions | EU, UK and Switzerland academic jobs |
wttj | Welcome to the Jungle jobs across EU countries |
justjoinit | Polish tech and IT jobs |
nofluffjobs | Poland and CEE IT jobs with salary data |
infojobs | Spain job board |
tecnoempleo | Spain IT jobs |
jobs_ac_uk | UK academic, postdoc and research jobs |
ikerbasque | Basque research jobs in Spain |
math_ku_phd | University of Copenhagen PhD and research jobs |
ub_doctoral | Universitat de Barcelona doctoral vacancies |
Company ATS Actors like Greenhouse, Lever, Ashby and Workable are not included because they require buyer-supplied company lists. Global sources with no reliable Europe filter are also left out so the default run stays aligned with the Europe promise.
How the bundle works
This is a bundle Actor. Thirteen sources run in-process. EURAXESS uses its
lifecycle-free fleet-v2 adapter; legacy collectors retain their source behavior
and are conservatively mapped to the canonical contract at the outer boundary.
AcademicPositions is the only separate child Actor and is off by default.
Each source fails open independently and reports bounded evidence in
RUN-SUMMARY.
Use sources to run a cheaper subset, keyword to filter sources that support free-text search, and location to override the default European Union text for LinkedIn and AI Jobs.
Local integration status
The fleet-v2 bundle described here is a local, unreleased mixed-fleet integration. These files are not evidence that the Store Actor has been deployed or migrated. Dedupe is limited to records in the current run; cross-run inventory and dedupe remain disabled and deferred.
The shared runtime is installed from the checked-in
nomad-job-scraper-core==1.1.22 wheel, whose exact SHA-256 is pinned in
requirements.lock; no Actor-local core source copy is shipped.
Input example
{"keyword": "data engineer","location": "European Union","maxItemsPerSource": 10,"maxItems": 50}
Output fields
Breaking fleet-v2 output: every dataset item uses the canonical six-root
nomad-agent-job-v1 contract. Flat rows and diagnostic pseudo-jobs are not
emitted.
Abbreviated root layout (actual data objects contain every canonical field):
{"schemaVersion": "nomad-agent-job-v1","identity": {"source": "eures", "externalId": "123456", "url": "https://example.com/job/123456"},"data": {"title": "Software Engineer", "company": {"name": "Example GmbH"}},"custom": null,"llm": {"status": "not_requested", "requestedFields": [], "filledFields": [], "provider": null, "model": null, "promptVersion": null, "completedAt": null},"raw": {"description": "Complete posting body...", "descriptionHtml": null}}
Unknown fields are null; empty arrays are used only for source-established
emptiness. Run status and per-source counters are persisted as RUN-SUMMARY.
Python client
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/europe-jobs-bundle").call(run_input={"keyword": "engineer","maxItems": 50,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(len(items), items[:1])
cURL
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~europe-jobs-bundle/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"keyword":"engineer","maxItems":50}'
Cost note
The 13 default sources run inside the bundle and incur only the bundle's
configured charges. Selecting the opt-in AcademicPositions source also starts
that separate Actor, so its independently configured start/result fees are added
to the bundle charges. Use sources, maxItemsPerSource and maxItems to
control spend.
Related Actors
Need just one board, with deeper filters and cheaper per-result pricing? Each source is also a standalone Actor:
- InfoJobs Scraper — Ofertas de Trabajo y Empleo España — AI skill tags and structured salary
- Tecnoempleo Scraper — Spain IT & Tech Jobs
- EURES Job Scraper — EU Job Mobility Portal
- EURAXESS Research Jobs Scraper
From the maker of Oink — an open-source, AI-powered job-search bot for Telegram that runs on these Actors. Try the free bot, get a managed instance at oinkjobsearch.com, or browse the full catalog of 50+ Actors.