EU Academic Jobs: PhD, Postdoc & Research Positions avatar

EU Academic Jobs: PhD, Postdoc & Research Positions

Pricing

from $4.00 / 1,000 result returneds

Go to Apify Store
EU Academic Jobs: PhD, Postdoc & Research Positions

EU Academic Jobs: PhD, Postdoc & Research Positions

All PhD, postdoc, professor, and research positions from 9 major EU portals — EURES, DAAD, EuroScienceJobs, UniversityPositions, INOMICS — in one deduplicated dataset. Keyword, country, and date filters; academic-only mode drops corporate noise. Weekly scheduled runs surface only new postings.

Pricing

from $4.00 / 1,000 result returneds

Rating

4.6

(3)

Developer

ScholarStack

ScholarStack

Maintained by Community

Actor stats

5

Bookmarked

127

Total users

17

Monthly active users

3 days ago

Last modified

Share

Find every PhD position, postdoc job, and research vacancy in Europe in one run. This actor aggregates 12 major academic job portals — EURAXESS, EURES, DAAD PhDGermany, EuroScienceJobs, UniversityPositions, INOMICS, AcademicTransfer (NL), jobs.ac.uk (UK), Nature Careers, CNRS Emploi (FR), AcademicPositions, and academics.de (DE/AT/CH) — into a single normalized, deduplicated dataset (JSON / CSV / Excel / XML). Keyword auto-translation finds local-language postings an English-only search misses, and academic-only mode drops the corporate noise that EURES mixes into general "research" searches.

Manually checking nine portals every week takes hours. This actor does it in minutes — and with a scheduled weekly run in incremental mode, you only ever see new postings, for about $0.20/week.

New in v2 (October 2026): EURAXESS (~8,300 EU research jobs) and academics.de are now enabled by default, and every job is enriched with positionType (PhD / Postdoc / Professor …) and disciplineCategory (STEM / Life Sciences / …) — the widest EU academic coverage this actor has shipped. Remove any source from enabledSources to run leaner.

Who is this for?

  • PhD & postdoc job seekers — set up a weekly scheduled run with incrementalMode: true and only see new positions in your field and countries
  • Research groups — monitor hiring across Germany, Netherlands, France, etc.
  • Recruitment platforms & career services — enrich your listings database with structured EU academic job data via the Apify API
  • Data analysts — track hiring trends in specific fields (Physics, CS, Economics) over time

Job portals covered: EURAXESS, EURES, DAAD, jobs.ac.uk, Nature Careers & more

  • EURES — European Employment Services (a general EU job board with millions of listings). With academicOnly on, the actor filters server-side by 155 ESCO academic occupations (lecturers, researchers, scientists, professors) — surfacing thousands of tagged academic jobs, including strong Nordic coverage (SE/NO/DK) other boards miss — and additionally matches your keywords in the job title (euresKeywordScope). The academic filter then drops loosely-tagged corporate noise. This is the main volume source.
  • DAAD PhDGermany — Germany's official PhD position database (Germany only; skipped automatically if you don't request DE).
  • EuroScienceJobs — Science and research jobs across Europe; the actor pulls each country's full listing and filters by keyword in the title/tags.
  • UniversityPositions — University and research-institute positions EU-wide. The actor walks the full paginated catalogue (~300 jobs) plus a server-side keyword search, and extracts structured data including salary ranges, application deadlines, and exact posting dates.
  • INOMICS — Economics, finance, and social-science academic jobs. Because it's economics-focused, non-economics keywords (e.g. biology) will legitimately return few or no results from this source.
  • AcademicTransfer — The official jobs portal of the Dutch research universities, UMCs, and NWO institutes. Strongest single source for Netherlands (NL) coverage. Honours academicOnly to switch between scientific-only and full vacancy lists.
  • jobs.ac.uk — The UK's dominant academic jobs board, ~2,500 live listings. Covers UK universities plus a meaningful share of continental EU postings.
  • Nature Careers — Top-tier science postings from Springer Nature, including Max Planck, EMBL, DKFZ, and other premier research institutes. Smaller volume but high-quality.
  • CNRS Emploi — France's national research org (CNRS) job portal, ~630 positions across all CNRS labs nationwide. Strongest single source for FR research coverage.
  • academics.de — Germany's leading academic & research job board (also lists Austrian & Swiss roles). Deep coverage of professorships, postdocs and PhD positions across German universities and research institutes; the most-recent ~560 listings are scanned per run.

EURAXESS is now enabled by default in v2 — the European Commission's official researcher-mobility portal, ~8,300 jobs across all EU member states — is the single largest academic source. Without proxy it collects up to ~750 listings and stops gracefully the moment the euraxess.fr per-IP rate limit kicks in, keeping everything gathered so far. With Apify RESIDENTIAL proxy (proxyConfiguration.useApifyProxy: true, RESIDENTIAL group) rotating IPs lift that limit and the full catalogue becomes reachable, with country filters applied server-side for fast targeted runs. AcademicPositions (academicpositions.com, ~1,150 European jobs; the deepest source for Belgium, Sweden, Switzerland, and Luxembourg) is opt-in — add "academicpositions" to enabledSources to try it, but it sits behind a Cloudflare challenge that usually returns 403 even with a residential proxy. To run leaner, remove any source from enabledSources.

By running these sources you confirm you have the right to access the target site's data per its terms of service in your jurisdiction.

  1. Click Try for free on the Apify page.
  2. Adjust keywords (e.g. ["postdoc", "PhD"]) and countries (e.g. ["DE", "NL"]).
  3. Leave academicOnly = true unless you specifically want corporate R&D as well.
  4. Click Start. Download results as JSON / CSV / Excel / XML from the Output tab.

Quick-start input — copy and paste this:

{
"keywords": ["research"],
"countries": ["DE", "NL", "FR"],
"academicOnly": true,
"translateKeywords": true,
"maxResultsPerSource": 500,
"postedWithinDays": 30,
"incrementalMode": false
}

Set up a weekly job alert (scheduled runs + incremental mode)

The strongest way to use this actor — a personal academic job alert that costs ~$0.20/week:

  1. Run the actor once with your keywords and countries to seed the baseline.
  2. In Apify Console, open Schedules and schedule the actor weekly with the same input plus incrementalMode: true.
  3. Every scheduled run now returns only jobs not seen in previous runs — your weekly "new positions" digest.
  4. Optional: attach an Apify integration (email, Slack, webhook) to get the new postings delivered automatically.

Filter by keyword, country, and posting date

FieldDescriptionDefault
keywordsSearch terms, combined with OR — a job matching any keyword is kept (results are merged fairly across keywords). Use a multi-word entry like "machine learning" to match that phrase. Each portal matches the keyword in the job title (EURES title scope, and title/tags on the curated boards), so add several related terms if you want broader recall.["research"]
countriesISO country codes. Leave empty to search all of Europe.[] (all EU)
translateKeywordsAuto-expand keywords into the languages of the selected countries (e.g. research → recherche (FR), Forschung (DE), ricerca (IT)). Surfaces local-language jobs an English-only search misses — French results jumped from ~2 to 50+ in testing. Unrecognised keywords are searched as-is.true
academicOnlyKeep only genuine academic / research roles. On EURES this also activates a server-side filter on 155 ESCO academic occupations, surfacing thousands of tagged academic jobs. Drops corporate and staffing-agency postings (e.g. "Research Associate" at a GmbH / AG / CRO / Personalservice) while keeping universities and research institutes — including those legally registered as a GmbH (Helmholtz, Forschungszentrum Jülich, etc.).true
euresKeywordScopeHow EURES matches keywords. title = keyword must be in the job title (precise, recommended). everywhere = match anywhere in the listing (broad but noisy — machine learning matches 200k+ jobs). Only affects EURES.title
maxResultsPerSourceCap per portal (after the academic filter). Raise it for more results — portals like EURES have thousands of listings.500 (max 5000)
maxTotalResultsOverall cap after dedup. 0 = no cap.0
enabledSourcesWhich portals to query.all 11
postedWithinDaysOnly return jobs posted within N days. 0 = all.0
incrementalModeOnly return jobs not seen in previous runs.false
proxyConfigurationOptional Apify proxy.disabled
debugShow detailed diagnostic logs (per-request URLs, page-by-page progress). Off by default for a clean run log; enable only for troubleshooting.false

Output: what each job record contains

Each item is a flat JSON object. Example:

{
"id": "daad_d5366ddc0d43c536",
"title": "PhD Student (f/m/d) ImmunoFLASH: CAR T immunotherapy with FLASH radiotherapy",
"institution": "Helmholtz-Zentrum Dresden-Rossendorf",
"department": "Institute of Radiooncology – OncoRay",
"country": "DE",
"city": "Dresden",
"deadline": "2026-06-30",
"postedDate": "2026-05-12",
"salaryInfo": null,
"salaryMonthlyEur": null,
"contractDuration": "01.10.2026",
"workingLanguage": "German, English",
"jobType": "Full PhD",
"requiredDegree": "Master, Diplom",
"field": "Medicine",
"fundingSource": "Helmholtz Association",
"applicationUrl": "https://www.daad.de/en/.../phd-student-fmd-immunoflash-...",
"sourcePortal": "DAAD",
"scrapedAt": "2026-05-14T17:24:18.823Z"
}

You can download the dataset in JSON, CSV, Excel, or XML from the Output tab or via the Apify API.

Data fields

FieldTypeNotes
idstringFormat: {sourceCode}_{md5hash}. Cross-source duplicates dedupe to one row; the kept id is the first source seen.
titlestringJob title
institutionstringHiring organization
departmentstring|nullLab / faculty if available
countrystring|nullISO-2 code (e.g. DE, NL)
citystring|nullCity or region name; NUTS region codes resolved to human-readable names
deadlinestring|nullISO date when available
postedDatestring|nullISO date
salaryInfostring|nullRaw salary text when explicitly stated on the listing (rare; most listings don't expose structured salary).
salaryMonthlyEurnumber|nullNormalized monthly gross EUR — best-effort parse from salaryInfo. Frequently null.
contractDurationstring|nullSchedule ("Full-time" / "Part-time" from EURES & UniversityPositions) OR start date from DAAD.
workingLanguagestring|nullDAAD only
jobTypestring|nulle.g. "Full PhD", "Structured programme"
requiredDegreestring|nullDAAD only
fieldstring|nullInferred research field (Physics, CS, Medicine, etc.)
positionTypestring|nullInferred role type: PhD, Postdoc, Professor, Lecturer, Fellowship, Researcher
disciplineCategorystring|nullBroad grouping derived from field: STEM, Life Sciences, Social Sciences, Humanities
remoteOrHybridstring|nullRemote / Hybrid when the listing explicitly says so; otherwise null (most academic roles are on-site)
fundingSourcestring|nullFunding agency OR research-consortium affiliation when mentioned in the listing. Examples: "DFG", "ERC", "Horizon Europe", "MSCA", "BMBF", "Helmholtz Association", "Max Planck Society", "Leibniz Association", "Fraunhofer". Heuristic — verify on the source page if critical.
tagsarray|nullEuroScienceJobs / UniversityPositions tag chips
descriptionRawstring|nullEURES/INOMICS/UniversityPositions: first ~400 chars, HTML stripped. DAAD: synthetic summary from metadata fields. EuroScienceJobs: not populated. Emails and IBANs always redacted.
applicationUrlstring|nullDirect link to the posting
sourcePortalstringEURES / DAAD / EuroScienceJobs / UniversityPositions / INOMICS / AcademicTransfer / JobsAcUk / NatureCareers / CNRS / Euraxess / AcademicPositions / Academics.de
scrapedAtstringISO timestamp

How much does it cost to scrape EU academic jobs?

Pay-per-result: $4.00 per 1,000 results.

Concrete examples:

  • 200 academic jobs across all 11 sources = $0.80
  • A weekly incremental run that surfaces ~50 new jobs = $0.20/week

Incremental mode is free to enable and significantly reduces cost on recurring runs.

For recruitment platforms and career services: API access

Everything works programmatically through the Apify API — start runs with your own keyword/country matrix, fetch normalized JSON, and feed it into your own job board, CRM, or analytics pipeline. Combine schedules, incrementalMode, and webhooks to keep a continuously fresh EU academic jobs feed without re-paying for unchanged listings.

Tips

  • Non-English countries: leave translateKeywords on — searching research across ["FR","DE","IT"] automatically also matches recherche, Forschung, ricerca, so you don't need to know the local words. (In testing this took France from ~2 results to 50+.)
  • More results vs. more precision: the default matches your keyword in the job title (precise). For broader recall, add related keywords (e.g. ["biology", "molecular", "genetics"]) or set euresKeywordScope: "everywhere" (more results from EURES, but noisier).
  • Want more total results? Raise maxResultsPerSource (up to 5000). For the maximum haul, run with empty keywords and academicOnly: true — EURES then returns its full occupation-tagged academic inventory (thousands of jobs EU-wide, auto-partitioned per country). The specialist boards are smaller and are already returned in full.
  • Turn academicOnly off only if you specifically want corporate R&D positions from EURES.
  • Use postedWithinDays: 14 for fresh-only feeds.
  • Combine incrementalMode: true with a scheduled run to build a deduplicated weekly digest.
  • For large multi-country crawls, enable proxyConfiguration to avoid IP rate-limiting on INOMICS / EuroScienceJobs.
  • Countries must be ISO-2 codes ("DE", "NL", "FR") — full country names are not supported.

FAQ

How do I get notified about new PhD positions every week?

Schedule the actor weekly in Apify Console with incrementalMode: true — each run returns only postings not seen before. Attach an email or Slack integration to deliver them automatically. Typical cost: ~$0.20/week.

Does it find jobs posted in German, French, or Dutch?

Yes — with translateKeywords on (the default), your keywords are auto-expanded into the languages of the selected countries, so local-language postings are found without you knowing the local terms.

Which countries are supported?

Any European country by ISO-2 code. Verified with DE; the other sources expose NL, FR, AT, CH, BE, SE, DK, FI, NO, IT, ES, PL, IE, GR and more. DAAD only covers Germany; other sources cover broader EU.

Can I get only university positions, no company jobs?

Yes — that's the default (academicOnly: true). It drops corporate and staffing-agency postings while keeping universities and research institutes, including those legally registered as a GmbH (Helmholtz, Forschungszentrum Jülich, etc.).

Why are some salaryInfo / deadline fields null?

Not all portals expose them. EURES doesn't return deadlines via API; salary is rarely structured. We extract what's available.

Why don't I get all the jobs a portal's website shows?

Two reasons. First, the website count is unfiltered — with academicOnly on, the actual academic share is much smaller. Second, EURES's search API only serves the first 10,000 results of any single query (a fixed result-window limit, unrelated to proxies or your plan); for narrower keyword searches this is never a problem since they return well under 10,000.

The Actor only fetches publicly-listed job postings. It respects rate limits, identifies itself, and redacts emails / IBANs from descriptions. You are responsible for downstream use complying with each portal's terms.

How do I scrape EURAXESS research jobs?

EURAXESS is enabled by default in v2. Leave enabledSources at its default (or include "euraxess"), set your countries, and run. Without a proxy you get up to ~750 listings; add an Apify RESIDENTIAL proxy to walk the full ~8,300-job catalogue.

Is there a postdoc jobs API for Europe?

Yes — every run is available through the Apify API as JSON, CSV, Excel or XML. Set keywords: ["postdoc"] with your target countries, schedule it, and pull a fresh normalized postdoc feed into your own app, job board, or email alerts.

Support / bugs

Use the Issues tab on this Actor page to report problems or request features.

Similar actors by ScholarStack

Building a broader data pipeline? These companion actors pair well with this one:

See all tools on the ScholarStack profile, and read the Apify API docs to automate a recurring EU academic jobs feed.

Disclaimer

The Actor scrapes third-party websites whose layouts may change without notice. Results are best-effort; verify critical details (deadlines, salaries) on the source page before applying. This is an independent, unofficial tool — not affiliated with or endorsed by EURES, DAAD, EuroScienceJobs, UniversityPositions, INOMICS, AcademicTransfer, jobs.ac.uk, Nature Careers, CNRS, Euraxess, or AcademicPositions.