EU Career Site Jobs API: Greenhouse, Lever, Recruitee & more avatar

EU Career Site Jobs API: Greenhouse, Lever, Recruitee & more

Pricing

from $1.00 / 1,000 job postings

Go to Apify Store
EU Career Site Jobs API: Greenhouse, Lever, Recruitee & more

EU Career Site Jobs API: Greenhouse, Lever, Recruitee & more

Job postings straight from company career sites: Greenhouse, Lever, Recruitee, Workable, Personio, Ashby, SmartRecruiters. Paste career URLs (ATS auto-detected) or use the Benelux/EU tech seed list. Filter by keyword, country, remote, date. From $0.001/job.

Pricing

from $1.00 / 1,000 job postings

Rating

0.0

(0)

Developer

Benelux Signals

Benelux Signals

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

EU Career Site Jobs API: Greenhouse, Lever, Recruitee, Personio & Ashby Jobs Scraper

Get job postings straight from company career sites for $0.0015 per job. Paste career-page URLs or board slugs, or pick one of the built-in lists of 60 verified European tech companies. The Actor reads the public job-board feeds behind Greenhouse, Lever, Recruitee, Workable, Personio, Ashby and SmartRecruiters and returns one clean, normalised and deduplicated record per job, with title, company, location, country, remote/hybrid/onsite, department, employment type, posting date, apply link, salary (when published) and the full description as plain text.

There are no logins, no proxies and no browser. The data comes from the same official JSON/XML endpoints that power the companies' own career pages, so it is fast and fresh. Companies that cannot be read show up as a free error row and are never charged.

Who is this job scraper for?

  • Recruiters, staffing and sourcing agencies who track which companies are hiring for which roles in the Netherlands, Belgium, Germany or the rest of Europe.
  • Sales and business-development teams who use hiring as a buying signal (a company hiring 10 data engineers needs data tools).
  • Job boards, niche job sites and newsletters that want direct-from-employer jobs (no reposts, no aggregator noise) on a schedule.
  • Labour-market researchers and HR analytics teams who need structured vacancy data per company, department and country.
  • AI agents and MCP clients: every input has a safe default, so a bare call with just companies works.

What does the EU Career Site Jobs API do?

  1. Detects the ATS from whatever you paste:
    • board URLs: job-boards.greenhouse.io/adyen, jobs.lever.co/spotify, fastned.recruitee.com, apply.workable.com/viva, thermondo.jobs.personio.de, jobs.ashbyhq.com/mollie, careers.smartrecruiters.com/KPN
    • a company's own career page (www.bunq.com/careers): the Actor looks for the ATS embed or link in the page, and also tries the Recruitee custom-domain API
    • ats:slug (for example greenhouse:adyen) or just a bare slug (mollie): the Actor probes the 7 ATSes in turn
  2. Downloads the full job board from the public endpoint in one or a few requests per company.
  3. Normalises every job to the same fields: country codes (ISO 3166), city, workplace type, employment type (full-time, part-time, contract, internship, temporary), ISO dates, salary min/max/currency/period, plain-text description (HTML converted, e-mail addresses removed).
  4. Filters on keywords (title or also description), excluded keywords, countries (including EU, Benelux, DACH), location text, remote/hybrid/onsite, department, employment type and posting age.
  5. Deduplicates across the whole run (same job id, or the same company + title + location + department posted twice) and sorts each company's jobs newest first.

Built-in seed lists (verified October 2026)

ATSCompaniesExamples
Greenhouse12Adyen, Catawiki, Bird, Elastic, GetYourGuide, N26, Celonis, SumUp, Doctolib
Lever7Spotify, Pigment, Aircall, Malt, Swile, Agicap, Contentsquare
Recruitee11Fastned, bunq, Channable, Greenchoice, Vandebron, Nmbrs, Funda, Tony's Chocolonely, Payconiq
Workable5Viva, Skroutz, Epignosis, Orfium, Blueground
Personio61KOMMA5°, Thermondo, Hornetsecurity, codecentric, tonies, ottonova
Ashby14Mollie, Miro, Bitvavo, Polarsteps, n8n, DeepL, Babbel, Pleo, Synthesia, ElevenLabs, Qonto
SmartRecruiters5KPN, Delivery Hero, Continental, Ubisoft, Sodexo

Pick one or more lists in Built-in seed lists (or "all"), combine them with your own companies, and use the filters to narrow down.

How to use it

  1. Paste company career URLs or slugs into Company career sites (one per line), and/or choose a built-in seed list.
  2. Optional: set Keywords, Countries (NL, Germany, EU, Benelux…), Workplace (remote, remote-or-hybrid…) or Posted within days.
  3. Set Max results. The default is 200, and this is also your cost cap.
  4. Click Start. Open the Jobs overview table, or export to CSV, Excel, JSON or XML.

Input example

{
"companies": [
"https://job-boards.greenhouse.io/adyen",
"https://fastned.recruitee.com/",
"ashby:mollie",
"https://www.bunq.com/careers"
],
"seedLists": ["recruitee"],
"keywords": ["engineer", "developer", "data"],
"countries": ["Benelux"],
"workplace": "any",
"postedWithinDays": 30,
"includeDescription": true,
"maxResults": 200
}
FieldDefaultWhat it does
companies3 examples (Catawiki, Fastned, Mollie)Career-site URLs, board URLs, ats:slug or bare slugs, one per line. The examples are dropped automatically when you choose a seed list.
seedListsnoneBuilt-in verified company lists per ATS, or all (60 companies).
keywordsnoneKeep jobs whose title contains any of these words (case-insensitive).
searchInDescriptionfalseAlso match keywords in the job description.
excludeKeywordsnoneDrop jobs whose title contains any of these words (for example senior, stage).
countriesanyISO codes or names. Groups: EU/Europe, Benelux, DACH. Remote jobs open to "Europe" match European countries.
locationsanyFree-text match on the location (for example Amsterdam, Berlin).
workplaceanyany, remote, remote-or-hybrid, hybrid or onsite.
departmentsanyMatch on department or team name.
employmentTypesanyfull-time, part-time, contract, internship, temporary, other.
postedWithinDays0 (any)Only jobs posted or updated in the last N days.
includeDescriptiontrueFull plain-text description. Turn off for faster, smaller results.
maxResults200Maximum jobs saved (and charged) per run.
maxResultsPerCompany0 (no limit)Cap per company, so one big employer does not fill the run.
maxConcurrency4Companies fetched in parallel (1–10).

Output example

One record per job (description shortened):

{
"status": "ok",
"charged": true,
"jobId": "recruitee:greenchoice:2347856",
"ats": "recruitee",
"companySlug": "greenchoice",
"company": "Greenchoice",
"title": "Klantenservice Medewerker Nijmegen",
"location": "Nijmegen, Gelderland, Nederland",
"city": "Nijmegen",
"country": "NL",
"countryName": "Netherlands",
"countries": ["NL"],
"regions": [],
"remote": false,
"workplaceType": "hybrid",
"department": "Service & Operations",
"team": null,
"employmentType": "part-time",
"employmentTypeRaw": "parttime_fixed_term",
"seniority": "mid_level",
"postedAt": "2026-10-15T11:24:37.000Z",
"updatedAt": "2026-10-15T11:24:37.000Z",
"applyUrl": "https://werkenbij-int.greenchoice.nl/o/klantenservice-medewerker-nijmegen-5/c/new",
"jobUrl": "https://werkenbij-int.greenchoice.nl/o/klantenservice-medewerker-nijmegen-5",
"salaryMin": 2650,
"salaryMax": 2750,
"salaryCurrency": "EUR",
"salaryPeriod": "month",
"salaryText": "EUR 2,650 - 2,750 per month",
"description": "Als Klantenservice Medewerker help je onze klanten…",
"input": "recruitee:greenchoice",
"source": "seed",
"scrapedAt": "2026-10-25T09:45:24.953Z",
"error": null
}

status values:

  • ok: a job posting. Charged.
  • error: a company could not be read (no public board for that slug, the career page has no supported ATS, invalid input line, network error). Not charged, and the error field says why.
  • no_results: the run worked but nothing matched your filters. Not charged, and error says which filter removed how many jobs.

A run summary is saved as RUN_SUMMARY in the key-value store: jobs saved, charged, chargeLimitReached, maxResultsReached, per-company job counts and ATS, companies not processed, duplicates removed, and how many jobs each filter removed.

Which fields does each ATS fill?

FieldGreenhouseLeverRecruiteeWorkablePersonioAshbySmartRecruiters
Department✓✓✓✓✓✓✓
Employment typewhen set✓✓✓✓✓✓
Workplace (remote/hybrid)from text✓✓✓from text✓✓
Salary–when publishedwhen published––when published–
Posting date✓ (updated)✓✓✓✓✓✓

Speed

Most boards are one request. All 60 built-in companies (about 5,500 jobs) take about 15 seconds without descriptions. SmartRecruiters needs one extra request per job for the description, so large SmartRecruiters boards with includeDescription take longer (about 1 second per 4 jobs).

Pricing

This Actor uses pay per event: $0.0015 per job on the Free plan, cheaper on paid plans, with platform usage included. Error rows and no_results rows are free.

EventFree planBronzeSilverGold and up
Job posting$0.0015$0.0013$0.0011$0.001
Actor start (per run)$0.005

Cost table (Free plan prices)

What you collectJobsCost
A quick check of one company25$0.043
Default run200$0.305
Weekly snapshot of the 60 built-in companies5,500$8.26
10,000 jobs10,000$15.005

Bill-shock protection:

  • A run never saves more than maxResults jobs (default 200, so at most $0.305 per run on the Free plan). RUN_SUMMARY.maxResultsReached tells you when the cap was hit.
  • It stops cleanly at your maximum cost per run: RUN_SUMMARY.chargeLimitReached is set and companies that were skipped are listed in companiesNotProcessed.
  • Use maxResultsPerCompany so one large employer cannot use up the whole budget.
  • Errors, no_results rows, duplicates and filtered-out jobs are never charged.

FAQ

How do I find a company's ATS slug?

Open the company's careers page and click a job. The URL usually shows the ATS: job-boards.greenhouse.io/<slug>, jobs.lever.co/<slug>, <slug>.recruitee.com, apply.workable.com/<slug>, <slug>.jobs.personio.de, jobs.ashbyhq.com/<slug> or jobs.smartrecruiters.com/<slug>. You can also just paste the careers page URL and let the Actor find it.

Why did a company return an error?

The error field says why. Usually the company uses an ATS that is not supported (Workday, SuccessFactors, Taleo, their own system), the slug is wrong, or the board is private. Error rows are free.

Is the data live?

Yes. Every run reads the job boards at that moment. Schedule a task daily or weekly to track new postings; jobId is stable, so you can diff runs.

How accurate is the country?

Lever, Ashby, Recruitee, Workable and SmartRecruiters give structured locations. Greenhouse and Personio give free text, which is matched against country names, codes and more than 700 cities. Small towns without a country in the text can have country: null; the original location is always included.

Can I use it from an AI agent or automation?

Yes. Call it via the Apify API, the Apify MCP server, Make, Zapier, n8n or Google Sheets. Every field has a default.

The Actor only reads public job-board endpoints that companies publish so their vacancies can be shown and shared. It does not log in, does not bypass any protection and removes e-mail addresses from descriptions. Job postings are business information, but descriptions can be copyrighted: if you republish them, link back to the applyUrl and respect each company's terms.

Greenhouse, Lever, Recruitee, Workable, Personio, Ashby and SmartRecruiters are trademarks of their respective owners. This Actor is an independent tool by benelux-signals and is not affiliated with, endorsed by or sponsored by any of these companies or by the employers whose jobs it reads.

  • EU Tender Radar: new public tenders from TED and TenderNed.
  • Benelux Trade Fair Exhibitors: exhibitor lists from Dutch and Belgian trade fairs.
  • Bulk PageSpeed & SEO Audit: Core Web Vitals, Lighthouse and on-page SEO for many URLs.