Jobbird Jobs Scraper
Pricing
from $0.79 / 1,000 job scrapeds
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
Maintained by CommunityActor 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 recorddescriptionFormat: "all"|"text"|"html"|"markdown" (default "all")descriptionMaxLength: int — truncate description, 0 = no truncationcompact: bool (default false) — core fields onlyexcludeEmptyFields: bool (default false) — drop null/empty fieldsmaxResults: int (default 25, 0 = unlimited) — number of billed rowsstartUrls: string[] — jobbird.com search or single-vacancy URLs; overrides query/filtersincrementalMode: bool + stateKey: string — return only changed vacancies since last runproxyConfiguration: { "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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| query | string | Yes* | — | Job title, role, or skill. *Not required when startUrls, location, or category is set. |
| location | string | No | — | Dutch city or region (Amsterdam, Rotterdam, Utrecht). |
| radius | integer | No | 30 | Search radius in km around the location. |
| category | array | No | — | Jobbird category slugs (ict, zorg-medisch, logistiek, …). |
| contractType | array | No | — | fulltime, parttime, tijdelijk-werk, stage, freelance-zzp, bijbaan, … |
| recruitmentType | array | No | — | intern (direct), uitzendwerk, detachering, werving-selectie. |
| workHours | array | No | — | Weekly-hours bands (33-36, 37-*, …). |
| educationLevel | array | No | — | mbo, hbo, wo, phd, … |
| sortBy | string | No | date | date or relevance. |
| postedWithinDays | string | No | 0 | Limit to the last 1, 7, or 30 days. |
| includeDetails | boolean | No | true | Fetch each vacancy's full detail record. |
| descriptionFormat | string | No | all | all, text, html, or markdown. |
| descriptionMaxLength | integer | No | 0 | Truncate the description to N characters. |
| compact | boolean | No | false | Return core fields only. |
| excludeEmptyFields | boolean | No | false | Drop null and empty fields from each record. |
| maxResults | integer | No | 25 | Maximum vacancies to return (0 = unlimited; billed rows). |
| startUrls | array | No | — | Jobbird search or single-vacancy URLs. Overrides query and filters. |
| incrementalMode | boolean | No | false | Return only vacancies that changed since the last run with the same stateKey. |
| stateKey | string | No | default | Separates one watchlist or schedule from another. |
| proxyConfiguration | object | No | Apify Proxy | Proxy 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?
| Field | Description |
|---|---|
| jobId | Stable content-based identifier |
| title | Job title |
| company / companyId | Employer name and Jobbird company ID |
| location / locationUrl | City or region and its Jobbird page |
| salaryMin / salaryMax / salaryType | Advertised salary range (in cents) and period |
| employmentType | Contract type (fulltime, parttime, …) |
| hoursMin / hoursMax / hoursType | Weekly working hours |
| category / categorySlug | Jobbird job category |
| educationLevel / education | Required education level |
| skills / benefits / languages | Listed skills, perks, and required languages |
| recruitmentType | Direct employer, temp agency, secondment, or recruiter |
| isPremium | Whether the listing is sponsored |
| description / descriptionText / descriptionMarkdown | Full job description in three formats |
| url / applicationUrl | Vacancy page and apply link |
| postedDate | Publication or last-refresh date |
| changeType / firstSeenAt / lastSeenAt / isRepost | Monitoring fields (with incrementalMode) |
| source / scrapedAt / query | Run 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
- Search — the scraper queries Jobbird's own search endpoint (15 vacancies per page) with your
query,location, and filters. - Paginate — it pages through results up to
maxResultsor the end of the listing. - Detail — when
includeDetailsis on, each vacancy's full detail record is fetched for the complete description, salary, hours, education, skills, and benefits. - Monitor — in incremental mode, the run is compared against the stored state for your
stateKeyand only new, updated, reappeared, or expired vacancies are returned. - 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.
| Plan | Price 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
- Click Try for free and sign in to Apify.
- Enter a search keyword and, optionally, a location.
- Add filters — category, contract type, weekly hours, or education level.
- Set max results (start low, e.g. 25).
- Leave Fetch full job details on for complete records, or turn it off for a fast listing-only run.
- Click Start, then watch rows appear in the Output tab.
- Export from Storage, or pull results via the API.
Run it via API
Python:
from apify_client import ApifyClientclient = 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.
Is it legal to scrape Jobbird?
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.
Related actors
- Jobs.ie Scraper — job listings from Ireland's Jobs.ie.
- NHS UK Jobs Scraper — vacancies from the official NHS Jobs board.
- Indeed Jobs Scraper — job listings from Indeed worldwide.
- hh.ru Jobs Scraper — vacancies from HeadHunter (Russia).
Browse all ParseBird actors on Apify Store.