Jobbird Scraper [๐Ÿ’ฐ$0.90] - Netherlands, Germany & UK + Salary avatar

Jobbird Scraper [๐Ÿ’ฐ$0.90] - Netherlands, Germany & UK + Salary

Pricing

from $0.90 / 1,000 results

Go to Apify Store
Jobbird Scraper [๐Ÿ’ฐ$0.90] - Netherlands, Germany & UK + Salary

Jobbird Scraper [๐Ÿ’ฐ$0.90] - Netherlands, Germany & UK + Salary

Scrape Jobbird jobs in the Netherlands, Germany and the UK by keyword, city + radius, category, hours and contract type. 53 fields: salary min/max/period, company website, region, distance in km, employer type, full description, emails and phones. Incremental monitoring and alerts.

Pricing

from $0.90 / 1,000 results

Rating

0.0

(0)

Developer

Corvuslab

Corvuslab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

What does Jobbird Jobs Scraper do?

Jobbird Jobs Scraper extracts job vacancies from all three Jobbird country sites โ€” the Netherlands, Germany and the United Kingdom โ€” into clean, structured records with 55 fields each: salary range with currency and period, weekly hours, company website, region, distance from your chosen city, employer type (direct employer or agency), languages and the full job description. Search by keyword, city + radius, category, contract type, education level and hours, then schedule it with incremental monitoring so you only receive (and pay for) new and changed jobs. No code, no login โ€” export to JSON, CSV or Excel, pull it from the API, or hand it to an AI agent.

Give it search terms and places โ€” or paste Jobbird search, landing-page or job URLs โ€” and it returns every matching job as a structured record, with the complete description in text, HTML and Markdown plus any emails, phone numbers and links written in the job text.

New to Apify? Sign up free and use the included monthly platform credit to try this Actor โ€” no credit card needed.

Why this scraper

  • ๐ŸŒ Three countries in one Actor โ€” the Dutch, German and UK Jobbird sites, together over 180,000 live jobs, in one run.
  • ๐Ÿ“ Location search that really filters โ€” only jobs inside your radius, each with its distanceKm.
  • โšก Fast & low-cost โ€” about 100 fully detailed jobs a minute, so large runs stay quick and cheap.
  • ๐Ÿงพ Rich, typed records โ€” 55 structured fields per job, not raw HTML.
  • โ™ป๏ธ Cheap to monitor โ€” incremental mode skips and doesn't charge unchanged jobs.
  • ๐Ÿ”” Notifications built in โ€” Telegram, Slack, Discord or any webhook.
  • ๐Ÿค– AI- & API-ready โ€” compact output, MCP-friendly, one-click integrations.

What data can you extract from Jobbird?

Every record carries 55 fields grouped like this:

GroupWhat you get
JobJob ID, title, URL, apply link, category, contract types, languages, posting date, premium flag
LocationCity, region / province, street address (mostly the Netherlands), country, Jobbird market, distanceKm from your search location
Pay, hours & requirementssalaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText, hoursMin, hoursMax, hoursText, work schedule, minimum and maximum education level, years of experience required (Netherlands, where the employer states it)
CompanyCompany name, company ID, logo, company website, company description, employer type (direct employer or recruitment agency)
ContactsEmails, phone numbers and links written in the job text โ€” useful for outreach when the employer or agency includes them
Description & monitoringFull text as plain text, HTML and/or Markdown; change type (NEW / UPDATED / REAPPEARED / UNCHANGED / EXPIRED), first/last seen dates and repost detection

What's filled in each country

Title, company, location, category, date, links and the full description are on virtually every job. The rest depends on the country's site and on what the employer put in the ad:

Field๐Ÿ‡ณ๐Ÿ‡ฑ Netherlands๐Ÿ‡ฉ๐Ÿ‡ช Germany๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom
Salaryoften โ€” varies a lot by searchalmost neveron most jobs
Weekly hourssometimesrarelyon most jobs
Contract typesoftenrarelyalways
Company websiteoftensometimesnever
Street addressoftenrarelynever
Employer type (direct / agency)on most jobsalwaysnever
Languagesalwaysalwaysnever
Education levelsometimesnevernever
Years of experienceoccasionallynevernever

A field the ad doesn't state is null, never a guess. Website and address need Company website & address switched on. A few jobs, mainly internships abroad, have no city on Jobbird, so their location is empty too.


Key features

  • ๐ŸŒ Netherlands, Germany and United Kingdom โ€” pick one, two or all three Jobbird sites, over 180,000 jobs together. Most Jobbird tools only cover the Dutch site.
  • ๐Ÿ“ Radius search you can trust โ€” type a city, town or Dutch postcode and a radius, and you get only the jobs inside it, each with distanceKm. A place Jobbird doesn't recognise is skipped with a warning instead of quietly returning the whole country.
  • ๐ŸŽฏ No filler results โ€” a search term with no matches returns nothing, never a page of unrelated jobs you'd still pay for.
  • ๐Ÿ’ถ Structured salary โ€” salaryMin, salaryMax, salaryCurrency and salaryPeriod (hour / day / month / year) instead of a text blob, plus a filter for jobs that publish pay.
  • ๐Ÿข Company intelligence โ€” company website, region, street address and employer type, with a Direct employers only filter to cut out agencies.
  • ๐Ÿ”€ Multi-search runs โ€” several keywords ร— several cities ร— several countries in one run, merged and de-duplicated, with an optional per-search cap so results come back balanced.
  • ๐ŸŽš๏ธ Every Jobbird filter โ€” category, contract type, education level, hours per week, how to apply and posted within โ€” applied by Jobbird, so you never pay for rows you filtered out.
  • โ™ป๏ธ Incremental monitoring โ€” schedule it and get only new, updated and reappeared jobs; unchanged jobs are not charged and reposts are flagged.
  • ๐Ÿ”” Notifications โ€” Telegram, Slack, Discord or any webhook (n8n / Make / Zapier).
  • ๐Ÿค– AI-ready โ€” compact and drop-empty output modes keep payloads small for LLMs and MCP.

๐Ÿš€ How to scrape Jobbird

  1. Open the Actor, pick your countries, enter one or more search terms (e.g. developer, verpleegkundige) and, optionally, locations with a radius โ€” or paste a Jobbird URL.
  2. Add filters (category, contract type, hours, posted withinโ€ฆ), set Max results and choose whether to fetch full job details.
  3. (Optional) Turn on incremental mode and a notification channel, then Schedule it.
  4. Click Start โ€” jobs stream into the Output tab.
  5. Download as JSON, CSV or Excel, or pull them from the API.

No login, no cookies, no setup โ€” it runs out of the box. Start it with an empty input and it returns the 25 newest jobs in the Netherlands with full details.

Quick-start example input

{
"countries": ["nl"],
"searchTerms": ["developer"],
"locations": ["Amsterdam"],
"radiusKm": 25,
"postedWithin": "7",
"maxResults": 100
}

This finds up to 100 developer jobs posted in the last week within 25 km of Amsterdam, each with its distance from the city centre, salary where the employer publishes it, the company website and the full description โ€” a ready-made shortlist for recruiters or job seekers.


Input

Configure it in the visual editor โ€” no code needed โ€” or pass JSON via the API. 38 inputs are available, grouped exactly as in the Actor's input form.

Every combination of country ร— search term ร— location runs as its own search; results are merged and de-duplicated.

FieldTypeWhat it does
searchTermsarrayJob titles, skills or company names, e.g. developer, verpleegkundige, logistiek medewerker. Leave empty for every job matching your filters.
countriesarraynl (Netherlands), de (Germany), uk (United Kingdom). Defaults to the Netherlands.
locationsarrayCities, towns or Dutch postcodes, e.g. Amsterdam, Den Haag, 1012AB, Berlin, Manchester. Empty = whole country.
radiusKmintegerDistance around each location, 1โ€“200 km (default 30).
startUrlsarrayJobbird search URLs (all their filters are kept), landing pages such as /nl/vacatures/amsterdam/ict, or single job URLs โ€” from any country site.
maxResultsintegerTotal jobs across all searches (default 25, 0 = no limit).
maxResultsPerSearchintegerCap each single search so a multi-keyword or multi-city run stays balanced (0 = no cap).
sortByenumauto (default): newest first, but most relevant first in Germany (see FAQ). newest or relevance apply everywhere.

๐ŸŽš๏ธ Filters

Filters are applied by Jobbird itself. Categories, contract types and education levels differ per country โ€” type them as that country's site shows them (Dutch on .nl, German on .de, English on .uk), by label or as in the site's URL.

FieldTypeWhat it does
postedWithinenumany, 0 (today), 1 (last 2 days), 7 or 30 days.
categoriesarraye.g. ICT, Zorg en medisch, techniek (NL), IT, Logistik und Lager (DE), Retail (UK).
contractTypesarraye.g. Fulltime, Parttime, Stage, Bijbaan, Freelance-zzp (NL), Vollzeit, Teilzeit, Minijob, Praktikum (DE).
educationLevelsarraye.g. MBO, HBO, WO (NL).
workingHoursarray0-8, 9-16, 17-24, 25-32, 33-36, 37-* hours per week, or missing (not stated).
applicationMethodsarrayon_site (apply on Jobbird), off_site (employer's website), whatsapp, is_motivation_mandatory (no cover letter required).
directEmployerOnlybooleanOnly jobs posted by the employer itself, not an agency (Netherlands and Germany).
salaryOnlybooleanSkip jobs without a published pay range โ€” skipped jobs are not charged.

๐Ÿ“„ Output

FieldTypeWhat it does
includeDetailsbooleanOpen every job for the full description, contract types, languages, employer type and contacts (default on).
includeCompanyDetailsbooleanAlso add company website, region, street address and the employer's own apply link (default on).
descriptionFormatenumall, text, html or markdown.
descriptionMaxLengthintegerCut descriptions to N characters (0 = full length).
compactbooleanCore fields only โ€” ideal for AI agents and MCP clients.
excludeEmptyFieldsbooleanDrop null and empty fields for cleaner output.

โ™ป๏ธ Incremental monitoring

FieldTypeWhat it does
incrementalModebooleanTag every job NEW / UPDATED / REAPPEARED / UNCHANGED / EXPIRED and emit only what changed.
stateKeystringStable name for the tracked search (auto-derived from your settings if blank).
emitUnchanged / emitExpiredbooleanAlso emit UNCHANGED / EXPIRED jobs.
skipRepostsbooleanLeave out jobs an employer took down and posted again under a new link โ€” not charged.

๐Ÿ”” Notifications

Credentials are secret inputs โ€” encrypted at rest, masked in the UI and never written to the run log. Every channel is off unless you fill it in.

FieldTypeWhat it does
telegramToken + telegramChatIdstringTelegram bot token + chat or channel ID.
slackWebhookUrl / discordWebhookUrlstringIncoming webhook URL.
webhookUrl + webhookHeadersstring / objectPOST the matched jobs as JSON anywhere โ€” n8n, Make, Zapier.
notificationLimitintegerJobs per notification message (1โ€“20, default 5).
notifyOnlyChangesbooleanAlert only on new, updated and reappeared jobs.

โš™๏ธ Advanced

FieldTypeWhat it does
proxyConfigurationobjectOn by default for faster large runs. Turn it off to use only the Actor's own connection (slower).
ignoreUrlFailuresbooleanSkip start URLs that can't be interpreted instead of failing the run (default on).
maxRequestRetriesintegerRetries per failed request (0โ€“10, default 3).

More example inputs

All three countries, IT jobs with a published salary, posted in the last 30 days:

{
"countries": ["nl", "de", "uk"],
"searchTerms": ["software engineer", "data analyst"],
"salaryOnly": true,
"postedWithin": "30",
"maxResultsPerSearch": 200,
"maxResults": 0
}

Scrape a Jobbird landing page and a single job directly:

{
"startUrls": [
{ "url": "https://www.jobbird.com/nl/vacatures/amsterdam/ict" },
{ "url": "https://www.jobbird.com/nl/vacature/26009925-service-technicus-midden-zuid-nederland" }
],
"includeDetails": true
}

Daily monitoring of nursing jobs from direct employers around Utrecht, with Slack alerts:

{
"countries": ["nl"],
"searchTerms": ["verpleegkundige"],
"locations": ["Utrecht"],
"radiusKm": 40,
"directEmployerOnly": true,
"maxResults": 0,
"incrementalMode": true,
"slackWebhookUrl": "https://hooks.slack.com/services/...",
"notifyOnlyChanges": true
}

Output

Each dataset item is one Jobbird job. A real record (description shortened):

{
"id": "26009925",
"title": "Service Technicus Midden/Zuid Nederland",
"company": "Start People",
"companyId": "30172",
"url": "https://www.jobbird.com/nl/vacature/26009925-service-technicus-midden-zuid-nederland",
"applyUrl": "https://www.jobbird.com/nl/volg/externe-sollicitatie?jobId=26009925&recruiterId=30172",
"location": "Utrecht",
"region": "Utrecht",
"country": "NL",
"market": "nl",
"distanceKm": 0.0,
"category": "Techniek",
"contractTypes": ["Fulltime"],
"languages": ["Dutch"],
"hoursMin": 36,
"hoursMax": 40,
"hoursText": "36 - 40",
"workSchedule": "Full-time",
"salaryMin": 3300,
"salaryMax": 4000,
"salaryCurrency": "EUR",
"salaryPeriod": "month",
"salaryText": "3,300โ€“4,000 EUR / month",
"isPremium": false,
"postedAt": "2026-10-09T19:05:02+00:00",
"description": "Wat je gaat doen\nAls service technicus draag je bij aan het onderhouden en optimaliseren van medische meet- en weegapparatuur, waarmee zorgprofessionals dagelijks werken. โ€ฆ",
"extractedEmails": ["apeldoorn@startpeople.nl"],
"extractedPhones": ["055-5261112"],
"source": "jobbird.com",
"searchLocation": "Utrecht",
"scrapedAt": "2026-10-09T21:19:14.543910+00:00",
"detailFetched": true
}

The description also comes as descriptionHtml and descriptionMarkdown. Which of the other fields are filled differs by country โ€” see What's filled in each country. In incremental mode each record also carries changeType, firstSeenAt, lastSeenAt and isRepost.

Data fields

  • Core โ€” id, title, company, url, applyUrl, location, region, country, market, distanceKm, postedAt, isPremium, source, scrapedAt.
  • Pay & hours โ€” salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText, hoursMin, hoursMax, hoursText, workSchedule, experienceText, experienceYearsMin, experienceYearsMax.
  • Details (with includeDetails) โ€” category, contractTypes, languages, educationMin, educationMax, employerType, description, descriptionHtml, descriptionMarkdown.
  • Contacts โ€” extractedEmails, extractedPhones, extractedUrls.
  • Company โ€” companyId, companyLogo, companyWebsite, companyDescription, streetAddress.
  • Search & monitoring โ€” searchKeyword, searchLocation, detailFetched, contentHash, changeType, firstSeenAt, lastSeenAt, previousSeenAt, expiredAt, isRepost, repostOfId, repostDetectedAt.

Every field is present in standard mode (missing values are null); compact mode returns 18 core fields for lean AI/MCP payloads; excludeEmptyFields drops empties. The Output tab has a ready-made Overview table.


โ™ป๏ธ How to monitor Jobbird with incremental mode

Schedule the Actor and turn on incremental mode: each run compares against the last and emits only NEW / UPDATED / REAPPEARED jobs, plus EXPIRED ones if you ask. Unchanged jobs are recognised from the search results before their job page is opened, so you skip both the work and the cost. Jobs that an employer takes down and re-posts under a new link are flagged with isRepost (or left out entirely with skipReposts).

First run (baseline)Next run (nothing changed)
Jobs foundallall
Job pages openedallnone
Records emitted & billedallnone

Your cost after the baseline scales with how much Jobbird changes, not with how much you watch:

Daily churnof 1,000 trackedbillable recordsyou save
5 %1,0005095 %
15 %1,00015085 %
30 %1,00030070 %

Setting up scheduled monitoring

  1. Configure your countries, search terms, locations and filters.
  2. Turn on Incremental mode and set Max results to 0 (or above the number of matches) so expired jobs can be detected.
  3. Run it once โ€” this seeds the baseline.
  4. Open the Schedules tab and set a recurring run (e.g. hourly or daily).
  5. Add a notification channel with Alert only on changes on.

๐Ÿ”” How to set up Jobbird alerts

Get pinged the moment a matching Jobbird job appears on Telegram, Slack, Discord or any webhook (n8n / Make / Zapier) โ€” fill in only the channels you want (see Notifications under Input).

Every channel fires independently โ€” a broken channel can't stop the scrape or the others. Pair incremental mode with Alert only on changes to hear only about genuinely new jobs, with no duplicates across runs. notificationLimit sets how many jobs each message lists.


๐Ÿ’ก What can you do with Jobbird data?

Find hiring companies for recruitment and staffing sales

Turn on Direct employers only to see which companies are hiring themselves, with their website, region and open roles. That is a ready-made prospect list for agencies and HR-tech vendors.

Benchmark salaries in the Netherlands and the UK

Collect salaryMin, salaryMax and salaryPeriod by category, region and hours. Use Only jobs with a salary to build a clean pay dataset without empty rows.

Compare labour markets across three countries

Run the same search on the Dutch, German and UK sites in one go and compare volumes, categories, contract types and hours side by side. Ideal for expansion planning and cross-border hiring.

Build a commute-based job feed

Search around a city or Dutch postcode and sort by distanceKm to show candidates only the jobs they can actually reach. Schedule it to keep a job board or newsletter fresh every day.

Market & competitive research

Track which companies, agencies and categories post the most jobs by region over time. Export the history to build trend dashboards in Google Sheets, Looker Studio or Power BI.

Lead generation from job ads

Combine company website, employer type and the emails and phone numbers written in each job ad to reach the right recruiter or hiring manager directly.

Feed AI agents and LLM pipelines

Send compact JSON straight into an LLM context, an MCP tool or a vector store. excludeEmptyFields and compact mode keep token costs low.


๐Ÿ’ฐ How much does it cost to scrape Jobbird?

This Actor uses Apify's pay-per-event model: a small fee when a run starts, plus a fee for each job saved to your dataset; the Pricing tab shows the current numbers. Your Apify plan's platform usage is billed separately and stays low, because the Actor is lightweight by design.

Three things cut your bill further:

  • Jobbird-side filters โ€” category, hours, contract type, posted within and the others are applied by Jobbird, so rows you filtered out are never fetched and never billed. Jobs skipped by Only jobs with a salary or Skip re-posted jobs are not charged either.
  • Incremental mode โ€” after the baseline you pay only for what changed (the table above).
  • Lean runs โ€” turn off Company website & address or Full job details when the search-result fields are enough.

๐Ÿ”Œ Integrations & export

Export to JSON, CSV, Excel or an HTML table, or pull from the REST API and the JavaScript / Python clients. Runs on a schedule, connects to Google Sheets, Slack, Make, Zapier and n8n, and works as an MCP tool for AI agents โ€” compact mode keeps token usage small.

Also covering the UK and German job markets: Reed.co.uk Jobs Scraper, Totaljobs Scraper and StepStone Job Scraper.


๐Ÿ”— Using the API

Run this Actor from your own code. Example with the Apify Python client:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run_input = {
"countries": ["nl", "uk"],
"searchTerms": ["developer"],
"locations": ["Amsterdam", "London"],
"radiusKm": 30,
"maxResults": 50,
}
run = client.actor("corvuslab/jobbird-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["company"], item["distanceKm"], item["salaryText"])

It also works with the JavaScript/TypeScript client, the Apify CLI and the REST API.


โ“ FAQ

Which Jobbird countries does it cover? All three Jobbird sites: the Netherlands (around 77,000 jobs), the United Kingdom (around 86,000) and Germany (around 22,000), as of October 2026. Each site has its own jobs; pick any combination in countries and every record says which market it came from.

How many jobs can I get per run? Jobbird shows up to 7,500 jobs per search. To collect more, add search terms, locations or categories โ€” each combination is its own search, and the results are merged and de-duplicated. Set maxResults to 0 for no overall limit.

How long does a run take? About 100 jobs a minute with full details, so 1,000 jobs in around 10 minutes and a full 7,500-job search in a little over an hour. Turning off Full job details makes runs much faster still.

Why are German results sorted by relevance? On the German site one large job platform refreshes its ads daily, so newest-first pages are almost all theirs. By default (auto) German searches are sorted by relevance for a broad mix of employers; Dutch and UK searches stay newest first. Set sortBy to newest to override. To monitor German jobs, use incremental mode with maxResults 0 so every job is read whatever the order.

Why is the salary empty on some jobs? Because the employer didn't publish one. See what's filled in each country; use Only jobs with a salary to skip the rest (they are not charged). Jobbird publishes the amount but not whether it is hourly, daily, monthly or yearly, so salaryPeriod is estimated from the amount โ€” a weekly rate, for example, may read as daily. salaryText keeps the readable form.

What happens if Jobbird doesn't recognise my location? It is skipped with a warning in the log, and your other locations still run โ€” you never get the whole country back by mistake. Cities, towns and Dutch postcodes (e.g. 1012AB) work; provinces are not supported, so search a city with a larger radius instead.

What if my search term has no matches? You get nothing for that search and a warning โ€” never a list of unrelated "you might also like" jobs that you would pay for.

In which language do I type categories and contract types? As each country's site shows them: Dutch on the Netherlands site (Zorg en medisch, Parttime), German on the German site (Logistik und Lager, Vollzeit) and English on the UK site (Retail). The label or the URL form both work; a value that doesn't exist on a site is skipped with a warning, and that country is skipped if none of your values exist there.

Can I get only new jobs on a schedule? Yes โ€” turn on incremental mode and schedule it; see the monitoring and alerts sections above.


This Actor collects only publicly available job ads. You're responsible for how you use the data โ€” in particular any personal information, such as a recruiter's email or phone number in a job description โ€” and for complying with Jobbird's terms and applicable law, including the GDPR in the Netherlands, Germany and the UK. Not affiliated with, endorsed by or sponsored by Jobbird.


Keywords: jobbird scraper ยท jobbird.com scraper ยท jobbird api ยท jobbird jobs ยท jobbird vacatures ยท Netherlands job scraper ยท Dutch job listings ยท Germany job scraper ยท UK job scraper ยท vacatures scraper ยท Stellenangebote scraper ยท salary data Netherlands ยท job monitoring ยท recruitment lead generation ยท export jobs to CSV ยท export to Excel ยท no-code scraper ยท MCP tool for AI agents