Jobbird Jobs Scraper avatar

Jobbird Jobs Scraper

Pricing

from $0.79 / 1,000 job scrapeds

Go to Apify Store
Jobbird Jobs Scraper

Jobbird Jobs Scraper

Scrape job listings from Jobbird.com (Netherlands) by keyword, location, category, and contract type. Get titles, employers, salaries, hours, descriptions, and incremental change monitoring. Export as JSON, CSV, or Excel.

Pricing

from $0.79 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Jobbird Jobs Scraper

Scrape job listings from Jobbird.com — one of the largest job boards in the Netherlands — into clean, structured JSON. The Jobbird Jobs Scraper pulls the job title, employer, location, salary, weekly hours, contract type, category, education level, and the full description for any keyword and city search, with no login and no Jobbird API.

Search Jobbird by keyword, city, category, contract type, weekly hours, and education level — or paste a Jobbird search URL — and get a structured record per vacancy with salary, hours, description (HTML, text, and markdown), and incremental change monitoring across scheduled runs.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Actor: parsebird/jobbird-jobs-scraper (Apify). Scrapes vacancies from jobbird.com (Netherlands). Call with ApifyClient.
Input JSON fields:
query: string — job keyword, e.g. "software engineer", "verpleegkundige"
location: string — Dutch city or region, e.g. "Amsterdam", "Rotterdam"
radius: int — km around the location (default 30)
category: string[] — Jobbird category slugs, e.g. ["ict"], ["zorg-medisch"], ["logistiek"]
contractType: string[]["fulltime"|"parttime"|"tijdelijk-werk"|"stage"|"freelance-zzp"|"bijbaan"|...]
recruitmentType: string[]["intern"|"uitzendwerk"|"detachering"|"werving-selectie"]
workHours: string[]["0-8"|"9-16"|"17-24"|"25-32"|"33-36"|"37-*"]
educationLevel: string[]["mbo"|"hbo"|"wo"|"phd"|...]
sortBy: "date"|"relevance" (default "date")
postedWithinDays: "0"|"1"|"7"|"30" (default "0" = any)
includeDetails: bool (default true) — fetch each vacancy's full detail record
descriptionFormat: "all"|"text"|"html"|"markdown" (default "all")
descriptionMaxLength: int — truncate description, 0 = no truncation
compact: bool (default false) — core fields only
excludeEmptyFields: bool (default false) — drop null/empty fields
maxResults: int (default 25, 0 = unlimited) — number of billed rows
startUrls: string[] — jobbird.com search or single-vacancy URLs; overrides query/filters
incrementalMode: bool + stateKey: string — return only changed vacancies since last run
proxyConfiguration: { "useApifyProxy": true }
Output: one dataset item per vacancy — jobId, title, company, companyId, location, salaryMin, salaryMax,
salaryType, employmentType, hoursMin, hoursMax, hoursType, category, educationLevel, skills, benefits,
description (+ descriptionText, descriptionMarkdown), isPremium, url, postedDate, scrapedAt, source.
Incremental adds changeType, firstSeenAt, lastSeenAt, isRepost.
Example: { "query": "software engineer", "location": "Amsterdam", "maxResults": 50 }
API: https://api.apify.com/v2/acts/parsebird~jobbird-jobs-scraper · Token: https://console.apify.com/account/integrations

What does Jobbird Jobs Scraper do?

Jobbird.com aggregates tens of thousands of live vacancies from Dutch employers, temp agencies, and recruiters across every province. There is no public Jobbird API — this Jobbird scraper reads the site's own search and vacancy data instead. It extracts:

  • 💼 Job — title, contract type, weekly hours, category, and the direct vacancy URL.
  • 🏢 Employer — company name, company ID, and advertiser type (direct employer, temp agency, secondment, recruiter).
  • 📍 Location — city or region, with the Jobbird location page URL.
  • 💶 Salary — minimum and maximum, when the employer discloses it.
  • 🎓 Requirements — education level, required languages, and skills.
  • 🎁 Benefits — the perks the employer lists.
  • 📅 Dates — when the vacancy was posted or last refreshed.
  • 📄 Description — the full job description as HTML, clean text, and markdown.

Common uses: Netherlands recruitment-market research, building a jobs board or alert service, salary and working-hours analysis, and monitoring hiring in a city or sector.

Input parameters

ParameterTypeRequiredDefaultDescription
querystringYes*Job title, role, or skill. *Not required when startUrls, location, or category is set.
locationstringNoDutch city or region (Amsterdam, Rotterdam, Utrecht).
radiusintegerNo30Search radius in km around the location.
categoryarrayNoJobbird category slugs (ict, zorg-medisch, logistiek, …).
contractTypearrayNofulltime, parttime, tijdelijk-werk, stage, freelance-zzp, bijbaan, …
recruitmentTypearrayNointern (direct), uitzendwerk, detachering, werving-selectie.
workHoursarrayNoWeekly-hours bands (33-36, 37-*, …).
educationLevelarrayNombo, hbo, wo, phd, …
sortBystringNodatedate or relevance.
postedWithinDaysstringNo0Limit to the last 1, 7, or 30 days.
includeDetailsbooleanNotrueFetch each vacancy's full detail record.
descriptionFormatstringNoallall, text, html, or markdown.
descriptionMaxLengthintegerNo0Truncate the description to N characters.
compactbooleanNofalseReturn core fields only.
excludeEmptyFieldsbooleanNofalseDrop null and empty fields from each record.
maxResultsintegerNo25Maximum vacancies to return (0 = unlimited; billed rows).
startUrlsarrayNoJobbird search or single-vacancy URLs. Overrides query and filters.
incrementalModebooleanNofalseReturn only vacancies that changed since the last run with the same stateKey.
stateKeystringNodefaultSeparates one watchlist or schedule from another.
proxyConfigurationobjectNoApify ProxyProxy settings. The automatic default works well for Jobbird.

Example inputs

Basic keyword search:

{ "query": "software engineer", "maxResults": 50 }

Filtered search — ICT, fulltime, within 25 km of Amsterdam:

{
"query": "developer",
"location": "Amsterdam",
"radius": 25,
"category": ["ict"],
"contractType": ["fulltime"],
"maxResults": 50
}

Incremental tracking — only emit vacancies that changed since the previous run:

{
"query": "software engineer",
"maxResults": 200,
"incrementalMode": true,
"stateKey": "software-engineer-tracker"
}

Compact output for an AI agent or MCP data source:

{ "query": "software engineer", "maxResults": 50, "compact": true }

What data can you extract from Jobbird?

FieldDescription
jobIdStable content-based identifier
titleJob title
company / companyIdEmployer name and Jobbird company ID
location / locationUrlCity or region and its Jobbird page
salaryMin / salaryMax / salaryTypeAdvertised salary range (in cents) and period
employmentTypeContract type (fulltime, parttime, …)
hoursMin / hoursMax / hoursTypeWeekly working hours
category / categorySlugJobbird job category
educationLevel / educationRequired education level
skills / benefits / languagesListed skills, perks, and required languages
recruitmentTypeDirect employer, temp agency, secondment, or recruiter
isPremiumWhether the listing is sponsored
description / descriptionText / descriptionMarkdownFull job description in three formats
url / applicationUrlVacancy page and apply link
postedDatePublication or last-refresh date
changeType / firstSeenAt / lastSeenAt / isRepostMonitoring fields (with incrementalMode)
source / scrapedAt / queryRun context

Output example

{
"jobId": "7b1da25ee66b1db9983bc5acc6ef53803e8d5dd3d9a1bf602e53801d4c710bc7",
"title": "Business Analist",
"company": "EIFFEL",
"companyId": 50185,
"location": "Hilversum",
"locationUrl": "https://www.jobbird.com/nl/vacatures/hilversum",
"salaryMin": null,
"salaryMax": null,
"salaryType": null,
"employmentType": "fulltime",
"hoursMin": 32,
"hoursMax": 40,
"hoursType": "FULLTIME",
"category": "ICT",
"categorySlug": "ict",
"educationLevel": "preferred",
"education": "HBO",
"skills": [],
"benefits": ["Laptop van de zaak", "Flexibele werktijden"],
"isPremium": true,
"url": "https://www.jobbird.com/nl/vacature/25735611-business-analist",
"postedDate": "2026-09-01T09:27:13+02:00",
"scrapedAt": "2026-09-04T08:28:58.775Z",
"source": "jobbird.com",
"description": "<p><strong>Over de functie</strong></p><p>Als Business Analist ...</p>",
"descriptionText": "Over de functie\nAls Business Analist ...",
"descriptionMarkdown": "**Over de functie**\n\nAls Business Analist ..."
}

Download the dataset as JSON, CSV, Excel, HTML, or XML from the Storage tab or the Apify API.

Use cases

  • Netherlands jobs board — feed an aggregator or alert service with live Jobbird vacancies.
  • Recruitment-market research — measure hiring volume by role, city, category, and contract type.
  • Salary and hours analysis — collect advertised salary ranges and weekly-hours bands across a sector.
  • Employer monitoring — start from a company- or city-filtered URL and track everything it posts.
  • AI and MCP data source — pipe compact, structured job data into agents and downstream tools.

How it works

  1. Search — the scraper queries Jobbird's own search endpoint (15 vacancies per page) with your query, location, and filters.
  2. Paginate — it pages through results up to maxResults or the end of the listing.
  3. Detail — when includeDetails is on, each vacancy's full detail record is fetched for the complete description, salary, hours, education, skills, and benefits.
  4. Monitor — in incremental mode, the run is compared against the stored state for your stateKey and only new, updated, reappeared, or expired vacancies are returned.
  5. Rows stream to the dataset and stop at maxResults.

How much does it cost to scrape Jobbird?

This actor is pay per result — charged once per vacancy saved to the dataset.

PlanPrice per 1,000 vacancies
Free$0.99
Bronze$0.89
Silver$0.89
Gold$0.79

A small platform Actor start fee also applies per run. maxResults is the exact number of billed rows. Scraping 1,000 vacancies on the Free plan costs about $0.99. Apify's monthly free platform usage covers small runs.

How to scrape Jobbird

  1. Click Try for free and sign in to Apify.
  2. Enter a search keyword and, optionally, a location.
  3. Add filters — category, contract type, weekly hours, or education level.
  4. Set max results (start low, e.g. 25).
  5. Leave Fetch full job details on for complete records, or turn it off for a fast listing-only run.
  6. Click Start, then watch rows appear in the Output tab.
  7. Export from Storage, or pull results via the API.

Run it via API

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/jobbird-jobs-scraper").call(run_input={
"query": "software engineer",
"location": "Amsterdam",
"maxResults": 50,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], "-", job["company"], "-", job.get("location"))

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/jobbird-jobs-scraper').call({
query: 'developer',
category: ['ict'],
contractType: ['fulltime'],
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Schedule recurring runs, add webhooks, or push results to Google Sheets, Slack, Zapier, and Make with Apify integrations.

FAQ

Do I need a Jobbird account or API key? No. The scraper reads public Jobbird data only. Jobbird has no public API — this actor is the alternative.

How current is the data? Live. Each run reads Jobbird at that moment. Use Apify's scheduler to keep a dataset fresh, and incrementalMode to receive only what changed.

What does turning off includeDetails change? The scraper skips the per-vacancy detail fetch. You still get every listing field, but education, skills, benefits, and the fullest description come from the detail record — much faster for large listing-only runs.

Why are skills and benefits often empty? Most Jobbird employers do not fill in structured skills or benefits; the scraper returns them when present and an empty list otherwise.

How does incremental monitoring work? The first run with a given stateKey records a baseline. Later runs return only vacancies that are new, updated, or reappeared. Add emitUnchanged or emitExpired to widen the output, and skipReposts to drop re-advertised vacancies.

Something's not working. Open an issue on the Issues tab with your input and the run link — we respond quickly.

Jobbird vacancy pages are public information that any visitor can see without logging in. Scraping publicly available pages is legal in most jurisdictions, and this actor does not access private data or bypass any login. You are responsible for how you use the data — follow Jobbird's terms and the GDPR when handling any personal data, and consult a lawyer if you are unsure. See Apify's guide on the legality of web scraping.

Browse all ParseBird actors on Apify Store.