Recruitee Jobs Scraper
Pricing
Pay per usage
Recruitee Jobs Scraper
Extract all open jobs from any Recruitee careers site, including custom domains like careers.company.com. Salaries, remote/hybrid, departments, tech stack and seniority. Fast, no proxies.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Kunal Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Extract all open jobs from any Recruitee careers site — both company.recruitee.com and custom career domains like careers.company.com. Includes structured salary ranges, remote/hybrid/on-site flags, departments and locations, plus tech stack, seniority and job function.
Why use this actor
- Works with custom domains — many Recruitee customers host their careers site on their own domain; the actor handles both.
- Salary ranges where the company publishes them in Recruitee.
- Remote / hybrid / on-site status from Recruitee's own fields.
- Company domain detected from the careers site.
- Enrichment — tech stack, seniority, job function, years of experience, visa sponsorship mentions.
Use cases
- European SMB prospecting — Recruitee is widely used by growing European companies.
- Job aggregators — clean feed from Recruitee career sites.
- Recruiting agencies — monitor target companies for new openings.
How to use
- Add companies: Recruitee careers URLs or Recruitee company names — one per line.
- Choose the output: jobs (default) or add a company hiring-signal row. Add filters if you only need certain roles.
- Click Start. Download results as JSON, CSV, Excel or HTML, or connect them to Google Sheets, Clay, Make, Zapier or n8n.
Example input:
{"companies": ["https://careers.bunq.com","https://werkenbij.vandebron.nl"],"includeDescription": true}
Input options
| Field | What it does |
|---|---|
companies | Recruitee careers URLs, custom career domains or Recruitee company names. |
output | Jobs, company hiring signals, or both. |
includeDescription | Add the plain-text job description to each job. |
trackChanges | Flag new and closed roles since the previous run (use with a schedule). |
titleKeywords / excludeTitleKeywords | Keep or drop jobs by words in the title. |
jobFunctions | Engineering, data, product, design, sales, marketing, customer, operations, finance, people, legal, security, IT, research, healthcare. |
seniority | Intern, junior, mid, senior, lead, manager, principal, director, executive. |
locations | Keep jobs whose location contains any of these strings. |
remoteOnly | Only fully remote jobs. |
postedWithinDays | Only jobs posted in the last N days. |
maxJobsPerCompany | Newest jobs first, capped per company. |
Output
Each job row (real example from a run):
{"recordType": "job","companyName": "Vandebron","companyDomain": "vandebron.nl","ats": "recruitee","jobId": "2773494","title": "Marketing Project Manager","jobFunction": "marketing","seniority": "manager","department": "Marketing","team": null,"employmentType": "fulltime_fixed_term","workplaceType": "hybrid","remote": false,"location": "Amsterdam, Nederland | Amsterdam, Noord-Holland, Nederland","city": "Amsterdam","country": "Nederland","countryCode": "NL","postedAt": "2026-10-06T14:54:28.000Z","daysSincePosted": 12,"salaryMin": 5000,"salaryMax": 5800,"salaryCurrency": "EUR","salaryPeriod": "month","salarySource": "structured","techStack": "Jira, Asana","minYearsExperience": null,"visaSponsorship": null,"isNewSinceLastRun": null,"url": "https://werkenbij.vandebron.nl/o/marketing-project-manager","applyUrl": "https://werkenbij.vandebron.nl/o/marketing-project-manager/c/new","careersUrl": "https://werkenbij.vandebron.nl","scrapedAt": "2026-10-19T09:58:35.834Z"}
Field notes:
jobFunction,seniorityandtechStackare inferred from the title, department and description with deterministic rules — no AI guesswork, same input gives the same output.salary*fields come from the platform's structured pay data when available (salarySource: "structured"), otherwise from salary ranges written in the job text (salarySource: "text").isNewSinceLastRunand the companynewJobsSinceLastRun/closedJobsSinceLastRunare filled when Track changes is on and a previous run exists.
Pricing
Free during launch. You pay only Apify's own platform usage, which is tiny for this actor: it reads public job-board feeds over plain HTTP, with no browser and no proxies (a typical small run uses well under $0.01 of platform credit).
Pay-per-result pricing will be introduced later; Apify notifies existing users in advance of any pricing change.
Use it from code
Run the actor and get the results in one call (replace <YOUR_TOKEN> with your Apify API token):
curl -X POST "https://api.apify.com/v2/acts/kunnu_data~recruitee-jobs-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"companies":["https://careers.bunq.com","https://werkenbij.vandebron.nl"],"includeDescription":true}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_TOKEN>' });const run = await client.actor('kunnu_data/recruitee-jobs-scraper').call({"companies":["https://careers.bunq.com","https://werkenbij.vandebron.nl"],"includeDescription":true});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, items[0]);
from apify_client import ApifyClientclient = ApifyClient("<YOUR_TOKEN>")run = client.actor("kunnu_data/recruitee-jobs-scraper").call(run_input={"companies":["https://careers.bunq.com","https://werkenbij.vandebron.nl"],"includeDescription":True})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Run it daily and get only what changed
- Save your input as a Task (Actor page → Save as a new task) with Track changes turned on.
- In Schedules, run the task daily or weekly.
- Each job then has
isNewSinceLastRun, and each company row hasnewJobsSinceLastRun/closedJobsSinceLastRun. Connect the task to Google Sheets, Slack or a webhook to get alerts.
Integrations and API
- Google Sheets, Clay, Make, Zapier, n8n, Airbyte via Apify integrations.
- REST API and SDKs (JavaScript, Python) — run the actor and fetch the dataset programmatically.
- AI agents (MCP) — the actor can be called by AI agents through the Apify MCP server; inputs and outputs are fully described by schemas.
- Schedules — run daily with Track changes on to get only what changed.
FAQ
Is this legal? The actor reads only publicly published job postings from official public job-board feeds — no login, no private data, no personal contact details. You are responsible for using the data in line with applicable laws and the terms of the sites involved.
A company was not found — why? Check that it uses Recruitee (the careers page usually links to it) and paste the careers page URL. Unresolved inputs are listed in the RUN_SUMMARY record of the run's key-value store.
How fresh is the data? Live — every run reads the job boards at that moment.
Something broke or you need a field? Open an issue on the actor's Issues tab — every report is reviewed and fixes are prioritised.
Related actors
- Hiring Signals – Jobs & Company Intelligence (8 ATS)
- Workable Jobs Scraper – Search All Workable Jobs
- SmartRecruiters Jobs Scraper
- Personio Jobs Scraper
- Teamtailor Jobs Scraper
- SEEK Jobs Scraper – Australia & New Zealand
- Dice Jobs Scraper – US Tech Jobs
- Google Trends Scraper – Interest, Regions & Related Queries