PhD, Postdoc & Research Jobs Scraper — 12 Sources in 1 avatar

PhD, Postdoc & Research Jobs Scraper — 12 Sources in 1

Pricing

from $3.00 / 1,000 job results

Go to Apify Store
PhD, Postdoc & Research Jobs Scraper — 12 Sources in 1

PhD, Postdoc & Research Jobs Scraper — 12 Sources in 1

Every PhD, postdoc and research job source behind one endpoint: EURAXESS, jobs.ac.uk, UN Careers, ReliefWeb, Impactpool, Devex, Ikerbasque, EURES, LinkedIn, AcademicPositions + 2 university boards. One run returns a merged, deduped dataset - billed once. Incremental mode surfaces only new postings.

Pricing

from $3.00 / 1,000 job results

Rating

0.0

(0)

Developer

Nomad.Dev

Nomad.Dev

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

6 days ago

Last modified

Categories

Share

Every PhD, postdoc, academic, research, policy and NGO job board behind one endpoint, one run, one bill.

Most academic job scrapers cover a single portal. This one merges 12 of them, dedupes across all of them, and hands you a single flat dataset — so you stop running (and paying for) a dozen scrapers and stitching their output together yourself.

EURAXESS · jobs.ac.uk · UN Careers · ReliefWeb · Impactpool · Devex
Ikerbasque · U. of Copenhagen · Universitat de Barcelona
AcademicPositions · EURES · LinkedIn

Why this one

This ActorTypical single-portal scraperOther academic aggregators
Sources1219 (EU only)
CoverageEU + UK + global academia and UN / NGO / policyone boardEU academia only
Cross-source dedupen/a
Only-new-since-last-runrarely
Price per 1,000 jobs$3.00 all-in$0.50 – $4.90$4.00

No other Actor in the store combines academic boards and the UN / NGO / development-career sources (UN Careers, ReliefWeb, Impactpool, Devex). If you track research careers that cross between a university and an international organisation, this is the only single feed that sees both.

Pricing

Pay-per-event. You are billed by this Actor and nothing else — the sources run inside this Actor, so there are no hidden child-Actor fees stacked on top.

EventPrice
Actor start$0.01 per run
Job result$0.003 per unique job returned

$3.00 per 1,000 unique jobs. A default run (all boards, 20 jobs each) returns ~170 deduped postings and costs about $0.52.

Two details that keep the bill honest:

  • You pay per unique job. Cross-source duplicates are dropped before billing, not after. A posting that shows up on both EURAXESS and jobs.ac.uk is one charge, not two.
  • incrementalMode doesn't re-bill. On a schedule, the Actor remembers every URL it already delivered and skips — and does not charge for — anything you've already received. A daily run typically bills only the handful of genuinely new postings.

One exception: AcademicPositions needs a real browser to clear Cloudflare, so it runs as a separate child Actor and adds that Actor's own fees on top of this one's. It is off by default — tick it only if you want it.

Input

Everything is optional. Run it with {} and you get a sensible default sweep.

FieldDefaultWhat it does
sourcesall 11 in-process boardsWhich boards to include.
keywordFree-text filter, forwarded to the boards that support it (machine learning, climate, postdoc…).
incrementalModefalseReturn only postings not delivered on a previous run. Turn this on for scheduled runs.
maxItemsPerSource20Cap per board before merging.
maxItems240Hard cap on the merged output — and therefore on your bill. 0 = no cap.
mistralApiKey / anthropicApiKeyUnlocks devex and ub_doctoral, which use an LLM to extract listings. Billed by Mistral/Anthropic, not by us.
{
"keyword": "machine learning",
"sources": ["euraxess", "jobs_ac_uk", "un_careers", "eures"],
"maxItemsPerSource": 25,
"incrementalMode": true
}

BYOK sources (Devex & UB doctoral)

These two read listings that need extra rendering and use an AI provider (Mistral or Anthropic) to extract structured data, so they need mistralApiKey or anthropicApiKey — either one is enough; Mistral is used when both are set. Without a key:

  • Both are dropped from the run and you are not charged for them.
  • One warning row per skipped source is added to the dataset: {"source": "devex", "warning": "skipped: requires anthropicApiKey or mistralApiKey", ...}.
  • The run's status message says which sources were skipped and why.
  • The other 9 boards are completely unaffected.

Your Mistral/Anthropic usage is billed directly by that provider — it is not part of this Actor's Apify pricing.

Output

One flat, deduped row per posting:

{
"source": "euraxess",
"id": "123456",
"title": "Postdoctoral Researcher in Machine Learning",
"company": "KU Leuven",
"location": "Leuven, Belgium",
"url": "https://euraxess.ec.europa.eu/jobs/123456",
"postedAt": "2026-07-10",
"deadline": "2026-08-31",
"snippet": "The Department of Computer Science invites applications…",
"salary": ""
}
FieldMeaning
sourceWhich board the record came from, e.g. "euraxess"
idStable source-side identifier ("" when the board has none)
titleJob title as posted
companyHiring organisation
locationLocation / duty station (may include remote hints)
urlDirect link to the posting — also the cross-source dedupe key
postedAtPosting date where the board provides it, else ""
deadlineApplication deadline — populated by euraxess, jobs_ac_uk, un_careers, reliefweb, devex, math_ku_phd, ub_doctoral; the others return ""
snippetShort description excerpt
salarySalary text — only jobs_ac_uk populates this today; the others return ""

Fields a board doesn't provide come back as "", never missing — so the schema stays stable across all 12 boards. Warning rows carry an extra warning field, with every other field null.

Run it from your own code

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("nomad-agent/researcher-bundle").call(
run_input={"keyword": "postdoc", "maxItems": 50}
)
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], "—", job["company"], "—", job["url"])

Typical uses

  • Job-alert products — schedule it daily with incrementalMode: true and pipe the new rows into email / Telegram / Slack.
  • Academic labour-market research — one dataset spanning EU, UK and international-organisation research posts.
  • Recruiting and talent mapping — see who is hiring researchers, where, and on what deadline cadence.

Reliability

Every board fails open: if one is down or slow, the run still returns everything the others found, and the failing board is named in the log. A run that hits an unexpected error still finishes SUCCEEDED carrying a diagnostic row, rather than failing and losing the results you already paid for.


Found a bug, or want a board added? Open an issue on the Actor page — we read them. If this saved you time, a review helps other researchers find it.

Is this Actor useful to you? A quick ⭐ review on the Actor's Reviews tab helps other researchers and PhD applicants find it — and tells us what to build next.


From the maker of Oink — an open-source, AI-powered job-search bot for Telegram that runs on these Actors. Try the free bot, get a managed instance at oinkjobsearch.com, or browse the full catalog of 50+ Actors.