EURAXESS Jobs Scraper — Research & Academic Jobs avatar

EURAXESS Jobs Scraper — Research & Academic Jobs

Pricing

from $0.90 / 1,000 euraxess job results

Go to Apify Store
EURAXESS Jobs Scraper — Research & Academic Jobs

EURAXESS Jobs Scraper — Research & Academic Jobs

Search EURAXESS PhD, postdoc, fellowship, research, and faculty vacancies. Get structured records with complete descriptions, requirements, funding, deadlines, contacts, and locations when published.

Pricing

from $0.90 / 1,000 euraxess job results

Rating

0.0

(0)

Developer

Nomad Dev

Nomad Dev

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Categories

Share

Search public EURAXESS PhD, postdoctoral, fellowship, research, and faculty vacancies and receive consistent, source-linked records with complete job descriptions, requirements, funding, deadlines, contacts, and locations when EURAXESS publishes them.

Optional features can expand a keyword across major European languages, fill missing description-backed facts, or translate selected output fields to English. Source facts always win over optional enrichment.

This is an independent Actor. It is not affiliated with or endorsed by EURAXESS or the European Commission.

Ready-made resources: Agent skill · output contract · Python parser · n8n, Make, Airtable, MCP, API, and webhook integrations

Why use this Actor

  • Research-focused coverage: PhD, postdoc, fellowship, research, and academic vacancies from the EURAXESS portal.
  • One stable schema: every job uses nomad-agent-job-v1, the same envelope used by other normalized Nomad Agent job sources.
  • Rich research-job details: research fields, seniority, requirements, education, experience, funding, benefits, deadlines, application channels, contacts, and all explicit locations when available.
  • Source-faithful data: EURAXESS taxonomy stays distinct from applicant requirements, missing facts stay unknown, and optional enrichment never overwrites source facts.
  • Multilingual search and output: optionally expand an exact keyword across major EURAXESS languages or translate selected display fields to English.
  • Alert-friendly delivery: strict normalized filters and built-in cross-run deduplication support scheduled feeds without title-based guessing.
  • Integration-ready: use the same n8n, Make, Airtable, MCP, REST API, webhook, parser, and Claude/Codex skill surfaces documented for LinkedIn.

What each result contains

Every item has exactly six top-level fields:

FieldMeaning
schemaVersionAlways nomad-agent-job-v1
identityEURAXESS source, posting ID, and canonical job URL
dataNormalized job, organisation, research, location, employment, application, requirement, benefit, funding, compensation, and constraint fields
customVersioned EURAXESS-only facts, including source academic-level taxonomy
llmStatus and provenance for optional description-backed enrichment
rawComplete description text and source HTML when includeRaw is true; otherwise null

All declared fields are present. null means unknown or unavailable. [] means EURAXESS explicitly established an empty collection.

Important accuracy rules:

  • EURAXESS Positions or academic-level labels stay in custom.data.academicLevelRaw; they are not converted into applicant education requirements;
  • a city, country, facility, or address does not by itself prove onsite;
  • only named people are returned as hiring contacts;
  • the EURAXESS posting URL and a separate application URL or email remain distinct;
  • optional AI fills only allowlisted fields that remain null after source parsing;
  • raw HTML is untrusted source content and must be sanitized before rendering.

Dataset rows remain one nomad-agent-job-v1 record per job. Separately, the Actor writes a nomad-agent-run-summary-v4 record to the default key-value store under RUN-SUMMARY. Use it to read the run outcome, delivered count, whether results were limited, and any bounded retry recommendation.

Input

FieldDefaultPurpose
schemaVersionrequiredMust be nomad-agent-job-search-input-v1
keyword""Job title, discipline, skill, or research term
location""Text matched against the location and country published by EURAXESS
euraxessSearchomittedOptional translations of the exact keyword across major EURAXESS languages; never similar-title expansion
postedWithin"24h"24h, 7d, 30d, or any
workArrangementsomittedAny combination of explicitly stated remote, hybrid, and onsite
filtersomittedVersioned filters over normalized job fields
maxItems100Maximum returned jobs; 0 requests the bounded 200-item window
dedupeenabledSuppress jobs already delivered in the same scope
aiEnrichmentdisabledFill selected missing facts from the complete description
translateToEnglishfalseTranslate selected normalized display fields
includeRawtrueInclude complete description text and HTML
analyticsEnabledfalseShare privacy-preserving aggregate operational analytics

Unknown input fields are rejected. This prevents misspelled or retired options from silently changing the meaning of a run.

{
"schemaVersion": "nomad-agent-job-search-input-v1",
"keyword": "postdoctoral machine learning",
"location": "Germany",
"postedWithin": "30d",
"maxItems": 25,
"dedupe": {"enabled": false, "key": ""},
"aiEnrichment": {"enabled": false, "accuracy": "silver"},
"translateToEnglish": false,
"includeRaw": false,
"analyticsEnabled": false
}

EURAXESS publishes posting dates as calendar dates rather than exact timestamps. 24h therefore includes the current and previous UTC calendar date. It is not an exact rolling 24-hour window.

Disable cross-run deduplication for repeatable one-off searches. Leave it enabled for scheduled alerts, using a stable public key only when multiple searches should intentionally share delivery history. Use a new key when an intentional fresh delivery scope is needed.

Optional features

Multilingual keyword expansion

The EURAXESS search extension keeps the original keyword and adds faithful translations used across major portal languages. It is an explicit, off-by- default input. It does not broaden the search to related titles, roles, or disciplines, and failure falls back to the original term. Similar-job search is not implemented because it would need a separate matching contract and per-result match evidence to remain explainable.

{
"euraxessSearch": {
"schemaVersion": "nomad-agent-euraxess-search-v1",
"translateKeywords": true
}
}

Description-backed AI enrichment

Enable aiEnrichment with a silver or gold accuracy profile. The Actor reads the complete plain-text posting description and fills only supported fields that source parsing left null. Source facts and source-established empty arrays always win. No customer model key is required, and an enrichment failure leaves the base job unchanged with a failed status in llm.

{"aiEnrichment": {"enabled": true, "accuracy": "silver"}}

English translation

translateToEnglish: true translates selected normalized display fields: title, domains, applicant-requirement prose, benefits, eligibility and selection text, work authorization, security clearance, and location preference. Organisation names, locations, identifiers, URLs, source-raw labels, skills, qualifications, certifications, programme names, descriptions, raw HTML, and provenance remain unchanged. No customer translation key is required.

Normalized filters

Use filters for versioned AND/OR expressions over supported normalized job fields. Filters run on source-language values before optional output translation. Unknown facts do not become guessed matches.

{
"filters": {
"schemaVersion": "nomad-agent-job-filter-v1",
"expression": {
"all": [
{"field": "data.locations[].countryCode", "operator": "eq", "value": "DE"},
{"field": "data.title", "operator": "not_contains", "value": "internship"}
]
}
}
}

Run with Python

from decimal import Decimal
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor(
"nomad-agent/euraxess-enrich-translate-normalize-scraper"
).call(run_input={
"schemaVersion": "nomad-agent-job-search-input-v1",
"keyword": "postdoctoral machine learning",
"location": "Germany",
"postedWithin": "30d",
"maxItems": 25,
}, build="1.0.20", max_items=25, max_total_charge_usd=Decimal("0.10"))
if run["buildNumber"] != "1.0.20":
raise RuntimeError("unexpected Actor build")
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["data"]["title"], item["data"]["company"]["name"])

Pricing

The current pay-per-event prices are:

EventPriceCharged when
Job result$0.0009A confirmed normalized job is delivered
English translation$0.006A delivered row contains translated selected fields
Silver enrichment$0.006A delivered row contains successful Silver enrichment
Gold enrichment$0.010A delivered row contains successful Gold enrichment

Optional events are not charged when the feature is unnecessary or fails. Check the Apify Pricing tab before a paid run in case prices have changed, and use Apify's maximum-cost-per-run setting when you need a hard budget.

Limits

  • Public EURAXESS pages can change, block requests, or omit fields.
  • A run returns at most 200 jobs, even when maxItems is 0.
  • Location search matches source-published location text; it is not a geocoder.
  • Work-arrangement filters match only explicit source or opted-in enrichment evidence.
  • Optional enrichment improves coverage but does not make unknown source facts certain or guarantee accuracy on every future posting.

For lossless validation, table flattening, and integration examples, use the public integration repository.