EURAXESS Scraper avatar

EURAXESS Scraper

Pricing

from $5.00 / 1,000 job detail results

Go to Apify Store
EURAXESS Scraper

EURAXESS Scraper

Scrape job offers from EURAXESS, the EU researcher job portal. Returns title, employer, location, deadline, research fields, career stage, contract type, start date, contact e-mail, apply URL and full description. Pay per event: $0.001 per run, $0.003 per search result, $0.005 per job with details.

Pricing

from $5.00 / 1,000 job detail results

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

EURAXESS Scraper - Research, PhD and Postdoc Jobs Across Europe

Pull job offers from EURAXESS, the European Commission's researcher job portal (roughly 6,400 live job offers across 60+ countries, from universities, research institutes, hospitals and companies). Every row returns the employer, location with coordinates, application deadline, research fields, researcher career stage, contract type, hours, start date, reference number, contact e-mail and phone, the apply URL and the full description as text, HTML and Markdown. No login and no API key.

What you get

FieldDescription
id, job_url, apply_urlEURAXESS job number, the EURAXESS page, and where to apply (the employer or job board link when the job page has one)
title, company_nameOffer title and the hiring organisation
publisher_name, publisher_profile_url, publisher_logo_urlThe EURAXESS organisation profile that posted the offer. This can be a job board such as Academic Positions rather than the employer
location, city, region, country, postal_code, street_address, latitude, longitude, work_locationsFirst work location, plus every work location as a list
posted_at, posted_at_datetime, posted_at_textPosting day as ISO 8601 UTC (the site publishes the day only, so the time is 00:00:00Z)
expires_at, application_deadline, application_deadline_textApplication deadline as ISO 8601 UTC, and as printed on the site
employment_type, contract_type, contract_type_details, working_hours, hours_per_week, start_dateFull-time or Part-time, contract type, hours per week, offer start date
research_fields, category, researcher_profiles, position_level, positionsResearch fields (Parent » Child), career stage R1 to R4, PhD or postdoc position type
education_required, experience_required, languages, requirements, benefits_textRequirements as published
funding_programme, is_research_infrastructure_position, reference_numberEU funding answer, research infrastructure flag, employer reference
contact_email, contact_emails, contact_phone, contact_phones, contact_fax, contact_website, contact_address, company_websiteContact block of the job page
description_full, description_snippet, description_html, description_mdOffer description in four formats
selection_process, eligibility_criteria, additional_comments, additional_sections, attachments, additional_info_urlExtra text blocks and attached files when the employer filled them in
search_query, source, detail_fetched, scraped_atWhich keyword found the row, source tag, whether the job page was opened, scrape time

Not available on EURAXESS, so not in the output: salary, a named contact person, and remote/hybrid status. Salary or benefits sometimes appear inside the description text or in benefits_text.

Quick start

{} works: with no input the actor returns the 50 newest job offers across all countries.

{
"countries": ["Switzerland"],
"searchQueries": ["laboratory technician", "chemistry"],
"researcherProfiles": ["R1", "R2"],
"sortBy": "newest",
"postedWithinDays": 14,
"includeJobDetails": true,
"maxResultsPerQuery": 50,
"maxResults": 100
}

Daily "what is new" run for one country: {"countries": ["Germany"], "sortBy": "newest", "postedWithinDays": 1, "maxResults": 200}.

Input

InputServer-side or client-sideNotes
searchQueriesServer-sideKeyword search, one search per keyword. Rows are tagged in search_query and de-duplicated across keywords. Empty list lists everything that matches the other filters
countriesServer-sideSeveral countries are OR-combined. Empty means all countries
locationServer-side for a country name, otherwise client-sideA country name acts like countries. Any other text (a city such as Zurich) is matched against the location text of each search result
researcherProfilesServer-sideR1 first stage (PhD level), R2 recognised (postdoc), R3 established, R4 leading, other (technicians and administration)
positionTypesServer-sidephd, postdoc, master, bachelor, undergraduate, research_support, other
organisationTypesServer-sideHigher education, public research institution, research laboratory, SME and start-up, large enterprise, and more
euFundingServer-sideHorizon Europe (ERC, MSCA, COFUND, EIC), Horizon 2020, Erasmus+, Interreg, LIFE, or not_eu_funded
researchFieldsServer-sideNames as on EURAXESS (for example Chemistry, Computer science) or numeric ids. A top-level field also matches its sub-fields
sortByServer-sidenewest (posting date, newest first), relevance (the site's default order), deadline (soonest deadline first)
postedWithinDays, maxAgeHoursClient-side cutoffEURAXESS has no date filter. With sortBy: newest the crawl stops at the first older job, so recent-only runs read only a page or two. With other sorts every page is read and older jobs are dropped
titleFilterClient-sideComma-separated terms, case-insensitive match on the title. Applied before job pages are opened, so jobs dropped by the filter are not charged
maxResults, maxResultsPerQueryActorTotal cap (default 50) and per-keyword cap (default: same as maxResults)
includeJobDetailsActorOn (default): opens each job page. Off: search-result fields only (title, publisher, location text, deadline, research fields, profile, short teaser)
searchUrls, directUrls, startUrlsn/aPaste EURAXESS search URLs (filters and sort in the URL are honoured), job URLs, or a mix
maxConcurrencyActorParallel job-page fetches, 1 to 4 (default 2)

Notes on how EURAXESS behaves:

  • Only job offers are returned (the site also lists funding and hosting offers, which are excluded).
  • The posting date has day precision only. maxAgeHours and postedWithinDays keep a job when any part of its posting day is inside the window.
  • sortBy: relevance is the site's own default order, which is close to newest-first but not strictly by date.
  • Some job pages carry no description (the employer only linked out). Those rows still have title, employer, deadline and apply URL.
  • Speed: about 30 jobs per minute with job pages on (a 200-job run takes roughly 6 minutes, 100 jobs about 2 to 3 minutes). Search-only runs (includeJobDetails: false) read 10 jobs per request and are faster. EURAXESS limits how fast one visitor may read it, so very large runs (thousands of jobs) take proportionally longer; the actor handles this on its own and needs no setup.

Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

Configure the MCP server with EURAXESS Scraper preconfigured at mcp.apify.com?tools=santamaria-automations/euraxess-scraper.

{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.apify.com/?tools=santamaria-automations/euraxess-scraper",
"--header",
"Authorization: Bearer <YOUR_API_TOKEN>"
]
}
}
}

For per-tool schemas and copy-paste snippets for MCP clients, see the MCP tab.

See the auto-generated API tab for language-specific examples (cURL, JS, Python, .NET, Ruby, PHP).

Example prompt once connected:

"Use euraxess-scraper to find PhD and postdoc positions in chemistry in Switzerland posted in the last 14 days. Return employer, deadline, contact e-mail and apply URL as a table."

Why this actor

  • Real server-side filtering for country, keyword, career stage, position type, organisation type, EU funding and research field, so you only pay for rows you asked for.
  • Newest-first with stop-early: daily runs with postedWithinDays read only the first page or two.
  • Employer, contact e-mail, phone, reference number, work-location coordinates, requirements and benefits as separate fields, not buried in a description blob.
  • Detail pages that fail to load are billed as search-level rows, not as full detail rows.

Output example

{
"id": "471116",
"title": "Associate professor / Assistant professor pecialised in biochemistry",
"job_url": "https://euraxess.ec.europa.eu/jobs/471116",
"company_name": "University of Ostrava",
"company_website": "http://www.osu.cz",
"location": "Ostrava, Czech Republic",
"city": "Ostrava",
"country": "Czech Republic",
"posted_at_datetime": "2026-10-07T00:00:00Z",
"application_deadline": "2026-11-07T22:59:59Z",
"employment_type": "Part-time",
"contract_type": "Temporary",
"hours_per_week": 8,
"start_date": "2026-11-01",
"research_fields": ["Medical sciences"],
"researcher_profiles": ["Recognised Researcher (R2)"],
"languages": ["Czech (Excellent)", "English (Good)"],
"education_required": "PhD or equivalent",
"funding_programme": "Not funded by a EU programme",
"contact_emails": ["personalnilf@osu.cz"],
"description_full": "The Dean of the Faculty of Medicine, University of Ostrava, announces a selection procedure for the position of: ..."
}

Pricing

Pay per event, no subscription:

EventPriceWhen
Run start$0.001Once per run
Job Detail Result$0.005Each job row with the full job page (default)
Job Search Result$0.003Each job row from search results only (includeJobDetails: false)

A detail page that fails to load is billed as a search result, not as a detail result. Duplicates across keywords are removed before billing. 100 jobs with details cost about $0.50 plus the start fee.

Common use cases

  • Weekly feed of new PhD and postdoc openings for a university research office or recruiter.
  • Lab technician and research support job alerts for one country (researcherProfiles: ["other"]).
  • Funding-aware search: MSCA, ERC and COFUND positions only.
  • Feed company_website and contact e-mails into an outreach or CRM workflow.

Support

  • Questions or issues? Email contact@nanoscrape.com, we typically reply within 6 hours. You can also open a ticket in the Issues tab on the actor page.
  • Feature request for this actor? Open a ticket in the Issues tab or email contact@nanoscrape.com with the field you need and, if possible, a URL that shows the data live.
  • Need a scraper for a job board we don't cover yet? Email contact@nanoscrape.com with the target site and your rough usage volume.