EURAXESS Jobs Scraper — EU Research Positions
Pricing
Pay per usage
EURAXESS Jobs Scraper — EU Research Positions
Extract research vacancies from EURAXESS, the European Commission's researcher mobility portal: PhD positions, postdocs, research fellowships and faculty roles across Europe. Each record carries title, institution, country, field and apply URL. No login required.
Fetch open research positions — PhD, postdoc, fellowship and faculty — from EURAXESS, the EU's official researcher mobility portal.
What EURAXESS jobs data does this scraper extract?
Each result is one flat JSON record per job posting:
| Field | Meaning |
|---|---|
id | Stable source-side identifier (EURAXESS node id) |
title | Job title as posted |
company | Hiring institution / organisation |
location | City + country where stated, else country only |
country | Posting country (EURAXESS highlight label) |
url | Direct link to the posting |
postedAt | Posting date (YYYY-MM-DD), null if not stated |
field | Research discipline tag(s), e.g. "Medical sciences » Health sciences"; multiple tags joined with ; , null if untagged |
deadline | Application deadline as an ISO 8601 timestamp, null if the posting has none |
snippet | Short description excerpt |
How to scrape EURAXESS jobs with this Actor
- Click Try for free / Run — no login to the target site, no cookies, no proxies to configure.
- Adjust the input (keyword, filters,
maxItems) or keep the defaults. - Run it and export the dataset as JSON, CSV or Excel, or read it over the API.
Run it from your own code:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("nomad-agent/euraxess-scraper").call(run_input={"maxItems": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], "—", item["company"], item["url"])
Or a single HTTP call that runs the Actor and returns items in one response:
curl -X POST \"https://api.apify.com/v2/acts/nomad-agent~euraxess-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"maxItems": 50}'
Input
| Field | Type | Default | Notes |
|---|---|---|---|
keyword | string | "" | Free-text search across job titles and descriptions (e.g. "machine learning", "postdoc biology"). Leave empty to return all current job offers. |
countryFilter | string | "" | Optional case-insensitive substring match on the posting country, applied client-side. E.g. "germany", "france", "spain". |
postedSince | integer | 0 | Only return job offers posted within this many days (client-side, applied after fetch). 0 = no freshness filter. |
maxItems | integer | 100 | Maximum number of job offers to return. Each returned job is a billed result. 0 = no limit (the source exposes roughly 500 current offers per query). |
requestTimeoutSecs | integer | 30 | (Advanced) How many seconds to wait for the EURAXESS website to answer before giving up on that page. |
cacheTtlSeconds | integer | 1800 | (Advanced) Reuse a page already fetched from EURAXESS for this many seconds instead of downloading it again on a quick re-run. 0 disables caching. |
Output example
{"id": "449831","title": "University Professor","company": "State University of Applied Sciences in Przemyśl","location": "podkarpackie, Poland","country": "Poland","url": "https://euraxess.ec.europa.eu/jobs/449831","postedAt": "2026-07-02","field": "Medical sciences » Health sciences","deadline": "2026-08-18T21:05:49+00:00","snippet": "State University of Applied Sciences in Przemyśl announces a competition for the position of University Professor at the Institute of Physiotherapy..."}
Integrations
Export the dataset as JSON, CSV or Excel from the Console, pull it over the Apify API (run-sync-get-dataset-items for a single-call run), wire it into Make/Zapier/n8n, or call it from AI agents via the Apify MCP server.
Pricing
Pay per event: $0.05 per Actor start and $0.004 per job returned. 100 jobs ≈ $0.45. No subscription, no rental — you pay only for what you fetch.
Use cases
- Academic job boards and PhD-alert bots
- University career services
- Research-mobility analytics across EU countries
- Grant and fellowship deadline tracking
FAQ
Is it legal to scrape EURAXESS jobs? This Actor reads only publicly available job postings — data any visitor can see without logging in. No personal data behind authentication is touched. Review the target site's terms and your local regulations for your specific use case.
Do I need an account on the target site? No. Postings are fetched from public pages/APIs — no login, cookies or session tokens.
How fresh is the data?
Every run fetches live listings. Results are cached for cacheTtlSeconds (default 30 min, set 0 to always hit the source live).
How many jobs can I get?
maxItems caps the run (set 0 where supported for no cap). Most sources paginate from newest to oldest.
Something broken or missing? Open an issue on the Actor's Issues tab — it is monitored and reliability fixes ship fast.