Ikerbasque Jobs Scraper — Basque Research, Spain
Pricing
from $3.10 / 1,000 job results
Ikerbasque Jobs Scraper — Basque Research, Spain
Scrape open calls from Ikerbasque, the Basque Foundation for Science in Spain: postdoc Research Fellow, Associate & Professor programmes plus permanent science jobs in the Basque Country. Records give title, status, dates, optional AI deadline, snippet and apply URL.
Scrape current research openings and calls from Ikerbasque, the Basque Foundation for Science: postdoc fellowships (Research Fellow), Research Associate and Research Professor programmes, and permanent science jobs in Spain's Basque Country. Ikerbasque researchers are hosted across the region's universities and CIC/BERC research institutes, making this the definitive source for PhD-to-professor research positions in the Basque Country — and a natural companion to EU research portals like EURAXESS or EURES for anyone tracking postdoc and faculty jobs in Spain.
What Ikerbasque data does this scraper extract?
Each result is one flat JSON record per call:
| Field | Meaning |
|---|---|
id | Stable source-side identifier (the call's URL slug) |
title | Call title as posted |
company | Always "Ikerbasque" — the foundation publishing the call |
location | Always "Bilbao, Spain" (Ikerbasque's HQ) — the calls page does not list a per-role duty station |
status | "Open" or "Closed" as shown on the calls page, or null if the source page carries no status label |
postedAt | Last-updated date of the call's detail page (YYYY-MM-DD), or null when it can't be determined — see note below |
deadline | Structured application deadline (YYYY-MM-DD), added only when AI enrichment is enabled; null otherwise — see "AI deadline extraction" below |
url | Direct link to the call |
snippet | Short description excerpt, prefixed with the status label |
isNew | true when this call was first seen on a delta-mode run (onlyNewSinceLastRun); absent otherwise |
A note on postedAt: Ikerbasque does not publish a distinct "date first posted" for its calls. postedAt is read from the call's own detail page (its OpenGraph/article modified/updated meta tag), which tracks when that page's content was last edited — in practice this lines up closely with the active call cycle. This Actor does not invent or guess a date; if the detail page fetch fails or carries no timestamp, postedAt is null.
On deadline: Ikerbasque calls mention an application deadline only as free-form prose inside the description (phrasing varies call to call — "Deadline: 10th September 2026.", "Apply before June 30, 2024", etc.), not as a structured field. Rather than guess with brittle date regex, the structured deadline field is filled by an opt-in AI extraction (see below) that returns null whenever the text states no specific calendar date, and never fabricates one. With AI enrichment off, deadline stays null — read the deadline from snippet/the call url instead.
How to scrape Ikerbasque with this Actor
- Click Try for free / Run — no login to the target site, no cookies, no proxies to configure.
- Adjust the input (
includeClosed,postedSince,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/ikerbasque-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~ikerbasque-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"maxItems": 50}'
Input
| Field | Type | Default | Notes |
|---|---|---|---|
includeClosed | boolean | false | When enabled, closed calls (no longer accepting applications) are included alongside open ones. By default only open calls are returned. |
postedSince | integer | 0 | Only return calls last posted/updated within this many days. Applied client-side against the source page's own last-updated date; calls whose date can't be determined are kept rather than dropped. Set 0 to disable and return all calls regardless of age. |
maxItems | integer | 50 | Maximum number of calls to return. Each result returned is a billed event — see Pricing. Applied before AI enrichment, so you never pay to enrich rows you capped out. Set 0 for no limit. |
onlyNewSinceLastRun | boolean | false | Delta / alert mode — only return calls not seen on a previous flagged run. See "Delta mode / alerts" below. |
aiEnrichment | boolean | false | Add a structured deadline field via your own Anthropic/Mistral key. See "AI deadline extraction" below. |
aiProvider | string | anthropic | anthropic (Claude) or mistral — which provider runs deadline extraction when aiEnrichment is on. |
anthropicApiKey | string (secret) | — | Your Anthropic API key. Used only when aiEnrichment is on and aiProvider=anthropic; billed by Anthropic. |
aiModel | string | claude-haiku-4-5-20251001 | Claude model for extraction (aiProvider=anthropic). |
mistralApiKey | string (secret) | — | Your Mistral API key. Used only when aiEnrichment is on and aiProvider=mistral; billed by Mistral. |
mistralModel | string | mistral-small-latest | Mistral model for extraction (aiProvider=mistral). |
cacheTtlSeconds | integer | 1800 | (Advanced) How long to reuse a previous fetch of the Ikerbasque pages before checking the site again, in seconds. Set 0 to always fetch fresh data. |
Delta mode / alerts
Set onlyNewSinceLastRun: true and this Actor only returns calls it has not seen on a previous run that also had the flag on — the mechanical way to "alert researchers to Ikerbasque calls the day they open". Already-seen calls are dropped before they are pushed or billed, so a scheduled cron run only costs you the Actor start plus any genuinely new calls. Seen state is tracked per Actor in a dedicated named key-value store, keyed by each call's stable URL slug (id); a call is only marked seen after it is successfully pushed, so nothing is lost if a run is interrupted. The cache is best-effort — if it can't be read, the run degrades to "everything is new" rather than failing.
AI deadline extraction
Ikerbasque states application deadlines only as free-form prose, so the structured deadline field is filled by an optional, bring-your-own-key LLM pass rather than brittle regex. Set aiEnrichment: true and supply a key for your chosen aiProvider:
- Anthropic (
aiProvider: anthropic, default) — supplyanthropicApiKey, pickaiModel. - Mistral (
aiProvider: mistral) — supplymistralApiKey, pickmistralModel.
The model reads each call's description and returns the deadline as an ISO YYYY-MM-DD date, or null whenever the text states no specific calendar date — it is instructed never to guess, infer or fabricate a date, and never to invent a day when only a month/year is given. Your API key is billed by that provider, not by this Actor. If aiEnrichment is on but no matching key is supplied, extraction is skipped (a warning row is emitted) and calls are still returned normally with deadline left null.
Output example
{"id": "permanent-positions-2026","title": "Permanent Positions 2026","company": "Ikerbasque","location": "Bilbao, Spain","status": "Open","postedAt": "2026-06-10","url": "https://www.ikerbasque.net/en/calls/permanent-positions-2026","snippet": "[Open] Ikerbasque offers 10 permanent positions for researchers willing to develop a long-term scientific career in the Basque Country..."}
Integrations
Export the dataset as JSON, CSV or Excel from the Console, or pull it programmatically: apify-client (Python/JS), a single run-sync-get-dataset-items HTTP call (see above), Make/Zapier/n8n via the Apify integration, or directly from AI agents through the Apify MCP server.
Pricing
Pay per event: a small per-run start fee plus a per-job fee for each result returned — see the Pricing tab for current rates (volume discounts apply on higher Apify plans). No subscription, no rental — you pay only for what you fetch.
Use cases
- Alerting researchers to Ikerbasque calls the day they open
- Academic job boards covering postdoc, research fellow and professor positions in Spain
- Research-mobility consulting for PhD holders and scientists relocating to the Basque Country
- Aggregating EU research portals — pairs naturally with EURAXESS, EURES and other academic sources
- Tracking Basque science hiring over time
FAQ
Is it legal to scrape Ikerbasque? 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 for no cap). The Ikerbasque calls page is a small, rolling list of currently open and recently closed calls, not a paginated archive — expect a handful of results per run, not thousands.
Something broken or missing? Open an issue on the Actor's Issues tab — it is monitored and reliability fixes ship fast.
Related Actors
- Research & Academic Jobs Scraper — 10 Sources
- EURAXESS Jobs Scraper — EU Research Positions
- Universitat de Barcelona PhD Vacancy Scraper
- jobs.ac.uk Scraper — UK Academic & Research Jobs
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.