EURES Cross-Border Job Search & Vacancy Lookup
Search EURES's cross-border EEA job vacancy index by keyword, country, region, sector, contract type, education level and more, or fetch full detail - salary, benefits, contacts - for specific vacancy IDs.
Open in Apify Store$0.99 / 1K on Free
Short answer
EURES Cross-Border Job Search & Vacancy Lookup is an Apify Store Actor that returns 7 published output fields, including title, employerName, countries, positionScheduleCodes. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 21 input settings; one is required (mode). Last updated Nov 14, 2026.
From the public Store listing and published build schema, synced 2026-11-14.What it returns
7 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
titleemployerNamecountriespositionScheduleCodespositionOfferingCodepublicationDatesourceUrl
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | Yes | search | What to fetch. |
| searchQuery | string | No | developer | Free-text keyword to search for (mode=search). Matches job title, description and employer name depending on `searchIn`. |
| searchIn | string | No | EVERYWHERE | Where the search query is matched. |
| jobIds | array | No | [] | EURES job vacancy IDs or full detail-page URLs, as found in the `jobId` or `sourceUrl` output field, e.g. `MzQwNDYwIDU` or `https://europa.eu/eures/portal/jv-se/jv-details/MzQwNDYwIDU`. |
| countries | array | No | [] | Restrict results to job locations in these countries. Leave empty for all EEA countries. |
| regionCodes | array | No | [] | Restrict results to job locations in these region codes (finer-grained than `countries`), e.g. `deb` for Berlin (Germany) or `no0b` for Trondelag (Norway). Find a region's code in the `nutsRegionCodes` output field of a previous run, or on the EURES advanced-search location picker. Finer NUTS codes |
| sectors | array | No | [] | Restrict results to these NACE Rev.2 business sectors. |
| positionOfferingCodes | array | No | [] | Restrict results to these contract/position offering types. |
| positionScheduleCodes | array | No | [] | Restrict results to these work schedules. |
| educationLevels | array | No | [] | Restrict results to these required education levels. |
Show the other 11 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| experienceLevels | array | No | [] | Restrict results to these required-experience bands. |
| languageSkills | array | No | [] | Restrict results to jobs requiring at least basic proficiency in these languages. |
| occupationUris | array | No | [] | Restrict results to jobs classified under these ESCO occupation URIs or broader ISCO group URIs. Copy occupation values from the `occupationUris` field of a previous search result, e.g. `http://data.europa.eu/esco/occupation/f2b15a0e-e65a-438a-affb-29b9d50b77d1`; an ISCO URI such as `http://data.eur |
| skillUris | array | No | [] | Restrict results to jobs requiring these ESCO skill URIs. Copy values from the `requiredSkills` field of a previous `mode=byIds` result, e.g. `http://data.europa.eu/esco/skill/ccd0a1d9-afda-43d9-b901-96344886e14d`. |
| benefitCodes | array | No | [] | Restrict results to jobs that explicitly advertise these extra (non-salary) benefits. Note: most EURES listings do not disclose extra-benefit information at all, so this filter narrows results significantly -- leave empty to include all jobs regardless of disclosed benefits. |
| euresFlagOnly | boolean | No | false | Only return jobs explicitly flagged as cross-border EURES vacancies (employer welcomes candidates from other EEA countries). |
| includeDetails | boolean | No | false | Also fetch each search result's detail record — salary, benefits, contacts, application link and full location. One extra request per emitted record; off by default for fast, low-cost searches. |
| publicationPeriod | string | No | – | EURES's own recency filter: only return vacancies received or last re-synced within this window (output field `lastModifiedDate`). This is not the original employer posting date (`publicationDate`) -- national employment services periodically re-sync unchanged listings, so an older vacancy can appea |
| minNumberOfPosts | integer | No | – | Only return job vacancies offering at least this many open posts/positions (useful for finding bulk-hiring vacancies). |
| sortBy | string | No | BEST_MATCH | Order of returned results. `MOST_RECENT` orders by each listing's last-synced/last-modified timestamp in EURES's own index (output field `lastModifiedDate`), which usually but not always matches `publicationDate` -- national employment services periodically re-sync unchanged listings, which refreshe |
| maxItems | integer | No | 50 | Hard cap on emitted records. |
Example input
Built from the input form's published example values and defaults.
{
"mode": "search",
"searchQuery": "developer",
"searchIn": "EVERYWHERE",
"jobIds": [],
"countries": [],
"regionCodes": [],
"sectors": [],
"positionOfferingCodes": [],
"positionScheduleCodes": [],
"educationLevels": [],
"experienceLevels": [],
"languageSkills": [],
"occupationUris": [],
"skillUris": [],
"benefitCodes": [],
"euresFlagOnly": false,
"includeDetails": false,
"sortBy": "BEST_MATCH",
"maxItems": 3
} Inputs for real jobs and stated limits
From the README of the Actor's latest build, read 2026-11-14.
Keyword search in one country
{
"mode": "search",
"searchQuery": "warehouse",
"countries": [
"de"
],
"maxItems": 100
} Bulk-hiring full-time roles in a region, recently active
{
"mode": "search",
"searchQuery": "",
"regionCodes": [
"deb"
],
"positionScheduleCodes": [
"fulltime"
],
"minNumberOfPosts": 5,
"publicationPeriod": "LAST_WEEK",
"maxItems": 200
} Full detail for known vacancy IDs
{
"mode": "byIds",
"jobIds": [
"MzQwNDYwIDU"
]
} Nurse roles requiring specific experience and languages
{
"mode": "search",
"searchQuery": "nurse",
"sectors": [
"q"
],
"experienceLevels": [
"between_1_and_2_years"
],
"languageSkills": [
"de",
"en"
],
"maxItems": 150
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "search",
"searchQuery": "developer",
"searchIn": "EVERYWHERE",
"jobIds": [],
"countries": [],
"regionCodes": [],
"sectors": [],
"positionOfferingCodes": [],
"positionScheduleCodes": [],
"educationLevels": [],
"experienceLevels": [],
"languageSkills": [],
"occupationUris": [],
"skillUris": [],
"benefitCodes": [],
"euresFlagOnly": False,
"includeDetails": False,
"sortBy": "BEST_MATCH",
"maxItems": 3
}
run = client.actor("vexaloom-labs/eures-cross-border-job-search-and-vacancy-lookup").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "search",
"searchQuery": "developer",
"searchIn": "EVERYWHERE",
"jobIds": [],
"countries": [],
"regionCodes": [],
"sectors": [],
"positionOfferingCodes": [],
"positionScheduleCodes": [],
"educationLevels": [],
"experienceLevels": [],
"languageSkills": [],
"occupationUris": [],
"skillUris": [],
"benefitCodes": [],
"euresFlagOnly": false,
"includeDetails": false,
"sortBy": "BEST_MATCH",
"maxItems": 3
};
const run = await client.actor("vexaloom-labs/eures-cross-border-job-search-and-vacancy-lookup").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/vexaloom-labs~eures-cross-border-job-search-and-vacancy-lookup/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"search","searchQuery":"developer","searchIn":"EVERYWHERE","jobIds":[],"countries":[],"regionCodes":[],"sectors":[],"positionOfferingCodes":[],"positionScheduleCodes":[],"educationLevels":[],"experienceLevels":[],"languageSkills":[],"occupationUris":[],"skillUris":[],"benefitCodes":[],"euresFlagOnly":false,"includeDetails":false,"sortBy":"BEST_MATCH","maxItems":3}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=vexaloom-labs/eures-cross-border-job-search-and-vacancy-lookup",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
Free n8n workflow and agent skill for this tool
No code: the eURES Cross-Border job search n8n workflow runs this Actor with a starter input, dedupes the rows and can append them to Google Sheets. Import it from its URL into n8n.
For Claude Code, Codex, Cursor and other agents, the agent skill installs in one line:
npx skills add https://scraperfinder.com --skill eures-cross-border-job-search-and-vacancy-lookup What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
What people use it for
- search cross-border vacancies
- review job details
Similar Actors
Ashby Job Board Compensation & Openings Scraper
Scrape public Ashby job boards for any company hiring on jobs.ashbyhq.com. Get every open role with title, department, team, location, remote…
Greenhouse ATS Job Board Lookup by Company
Pull every open role from one or more Greenhouse company boards, or look up specific postings by job ID, with location, department, employment…
Himalayas Remote Job Finder with Salary & Tech Stack
Search Himalayas remote job listings by keyword or company and get salary range, employment type, tech stack and job page link for each role.
Hiring.cafe Job Listings & Salary Filter Scraper
Pull job postings aggregated by hiring.cafe and narrow them by salary range, seniority, workplace type, security clearance, required tech stack,…
Lever Job Board Postings by Company Slug
Pull open job postings from one or more Lever.co company boards, or fetch specific postings by ID, with location, team, salary range,…
Workday Careers Site Job Listings Extractor
Pull job postings from any company's Workday careers site: title, location, requisition ID, posting and start dates, time type, remote status and…
Questions people ask
How much does EURES Cross-Border Job Search & Vacancy Lookup cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does EURES Cross-Border Job Search & Vacancy Lookup return?
Its published output schema lists 7 fields: title, employerName, countries, positionScheduleCodes, positionOfferingCode, publicationDate, sourceUrl. A listed field is not guaranteed to be filled in every row.
What input does EURES Cross-Border Job Search & Vacancy Lookup need?
Required: mode. Optional settings include searchQuery, searchIn, jobIds, countries, regionCodes, sectors.
How do I run EURES Cross-Border Job Search & Vacancy Lookup from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("vexaloom-labs/eures-cross-border-job-search-and-vacancy-lookup").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("vexaloom-labs/eures-cross-border-job-search-and-vacancy-lookup").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/vexaloom-labs~eures-cross-border-job-search-and-vacancy-lookup/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- EURES Cross-Border Job Search & Vacancy Lookup on Apify Store
- Published build with input and output schema (JSON)
Cite this page
Scraper Finder. "EURES Cross-Border Job Search & Vacancy Lookup." https://scraperfinder.com/catalogue/eures-cross-border-job-search-and-vacancy-lookup/ (data checked 2026-11-14).
Run EURES Cross-Border Job Search & Vacancy Lookup
$0.99 per 1,000 results. Paste the example input above, set your target query, then export the dataset.