Recruitee Jobs Scraper & API: Jobs + Salary to CSV avatar

Recruitee Jobs Scraper & API: Jobs + Salary to CSV

Pricing

from $0.80 / 1,000 jobs

Go to Apify Store
Recruitee Jobs Scraper & API: Jobs + Salary to CSV

Recruitee Jobs Scraper & API: Jobs + Salary to CSV

Scrape open roles from any company's Recruitee careers site: department, locations, remote/hybrid/on-site, salary range, experience level and description.

Pricing

from $0.80 / 1,000 jobs

Rating

0.0

(0)

Developer

MRSLM Data

MRSLM Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Security

Limited permissions

Share

Open roles from any company's Recruitee careers site: department, locations, remote/hybrid/on-site, salary range, experience level and description. $1.00 per 1,000 jobs.

Recruitee (part of Tellent) is an applicant tracking system used by thousands of small and mid-sized companies, especially in the Netherlands, Belgium, Germany and the rest of Europe. Many of them publish salary ranges, experience level, education and remote/hybrid status in the job data, and this Actor keeps all of it. Paste board names or careers URLs and get every open role as a clean row for a spreadsheet, CRM or job board.

What the Recruitee Jobs Scraper does

You give it a list of companies that use Recruitee for hiring: board names such as channable or full careers URLs on <name>.recruitee.com. For each company the Actor reads the public job feed that powers the company's own careers page, maps every open role to the same clean row format, applies your filters, and saves the result. One row per job.

There is no login, no browser and no proxy needed, because the feed is the same public list anyone sees on the careers site. That keeps runs fast (a few seconds for a handful of companies) and cheap.

The row format is shared with our other job-board Actors (Greenhouse, Lever, Workable, Personio, Rippling and the multi-platform ATS Jobs Scraper), so you can merge Recruitee jobs with jobs from other platforms into one table without remapping columns.

Who it is for

  • Recruiters and staffing agencies who want to know the day a target company opens a role they can fill.
  • B2B sales teams who use hiring as a buying signal: a company adding support or engineering staff is likely buying tools for them.
  • Investors and market analysts who track hiring by team, city and seniority across a portfolio or a competitor set.
  • Job boards and newsletters that need a clean, deduplicated feed from the companies they cover.
  • Job seekers who want one sheet with every open role at their shortlist of employers.
  • HR and compensation teams who benchmark published salary ranges for similar roles at peer companies.

Quick start

  1. Press Start. The form is already filled with this example input, so the first run returns real rows in under a minute:
{
"companies": [
"bunq",
"https://channable.recruitee.com"
],
"maxJobsPerCompany": 10
}
  1. Swap in your own values, or call the Actor through the Apify API, Make, Zapier, n8n or the Python/JS clients with the same JSON.
  2. Download the results as JSON, CSV or Excel from the Output tab, or schedule the run to repeat.

Real example: every open role at bunq and Channable

Run on 2 November 2026 with this input (no filters, all open jobs):

{
"companies": [
"bunq",
"https://channable.recruitee.com"
]
}

Result: 40 open jobs in 5 seconds (bunq: 27, Channable: 13), charged as 40 job events, so the run cost about $0.040 plus the $0.00005 start fee.

  • Top departments: Support & Operations (10), Risk, Legal & Compliance (4), Growth (4), Engineering (4).
  • Workplace type: hybrid 39, remote 1.
  • Countries: NL (27), TR (4), BG (2), US (2).
  • Newest posting in the run: 2026-11-02.

The six newest rows:

CompanyTitleLocationWorkplacePosted
bunqChief Executive Officer, UKLondon, England, United Kingdomhybrid2026-11-02
bunqAML Manager, AustriaVienna, Wien, Austriahybrid2026-10-30
bunqBranch Manager, Belgium & IrelandBrussels, Brussels, Belgiumhybrid2026-10-30
bunqKYC Analyst (User Verification)İstanbul, İstanbul, Türkiyehybrid2026-10-30
bunqHead of PeopleAmsterdam, Noord-Holland, Netherlandshybrid2026-10-29
bunqData Scientist MarketingAmsterdam, Noord-Holland, Netherlandshybrid2026-10-28

To turn this into a weekly hiring report, keep the same input, add "postedWithinDays": 7 and schedule it for Monday mornings: each run then returns only roles posted in the last week.

Sample row (real run, trimmed)

{
"platform": "Recruitee",
"companyName": "Channable",
"title": "Senior Engineering Manager - Core",
"department": "Engineering",
"location": "Utrecht, Utrecht, Netherlands",
"country": "NL",
"workplaceType": "hybrid",
"employmentType": "fulltime-permanent",
"seniority": "senior_manager",
"salary": {
"min": 100000,
"max": 120000,
"currency": "EUR",
"period": "year",
"text": null
},
"postedAt": "2026-10-22T12:11:23.000Z",
"url": "https://jobs.channable.com/o/senior-engineering-manager-core"
}

Every row also has: job ID, team, all locations, remote flag, update date, apply link, board link and scrape time, plus the full description when you turn it on. Platform extras: salary range and period, remote/hybrid/on-site flags, experience and education level, category, tags and the closing date.

Output fields

FieldWhat it holds
platformAlways the platform name, so merged tables stay traceable.
companyBoard name (slug) you entered.
companyNameCompany name shown on the board.
jobIdThe platform job ID; stable across runs, use it to detect new and closed roles.
titleJob title.
departmentDepartment, when the company sets one.
teamTeam or role group, when set.
locationPrimary location text.
locationsAll locations listed for the job.
countryCountry (code or name, as the platform gives it).
workplaceTyperemote, hybrid or on-site when the company states it.
isRemoteTrue when the job is marked remote.
employmentTypeFull-time, part-time, contract and similar, when set.
seniorityExperience level, when set.
salarySalary range object (min, max, currency, period) when the company publishes it, else null.
postedAtWhen the job was published (ISO 8601, UTC).
updatedAtLast update time, when the platform gives it.
urlPublic job ad URL.
applyUrlDirect application URL, when different from the ad.
categoryRecruitee job category, e.g. banking, engineering.
educationRequired education level, when set.
tagsTags the company added to the job.
closesAtApplication deadline, when set.
boardUrlThe careers board that was read.
scrapedAtWhen this run read the job.

With includeDescription on, each row also has description: the job ad as plain text, up to 5,000 characters, with e-mail addresses and phone numbers removed.

Filters

  • titleKeywords / excludeTitleKeywords: keep or drop jobs by words in the title (case-insensitive), e.g. keep engineer, developer, drop intern, working student.
  • locationKeywords: match city, country or the location text, e.g. Amsterdam, Germany, remote.
  • departmentKeywords: match the department or team, e.g. engineering, sales.
  • remoteOnly: keep jobs marked remote, or whose location says remote.
  • postedWithinDays: only jobs posted in the last N days.
  • maxJobsPerCompany and maxResults: caps per company and per run. With newestFirst on (default), the cap keeps the newest jobs.

Export to CSV, Excel, JSON or Google Sheets

Every run saves its rows to an Apify dataset. Open the Output tab and pick a format:

  • CSV or Excel for spreadsheets and CRM imports. Nested fields (arrays and objects) are flattened into columns such as locations/0.
  • JSON or JSONL to keep the nested structure for code and databases.
  • Google Sheets: add the Apify "Google Sheets export" integration to the Actor or schedule, and every finished run is appended to a sheet.

You can also copy the dataset link from the Storage tab. It is a stable API URL your own scripts can download at any time.

Use it from Make, Zapier or n8n

The Actor has official Apify modules in all three tools:

  • Make: add the Apify → Run an Actor module, choose mrslm_data/recruitee-jobs, paste the JSON input, then add Apify → Get Dataset Items and map the fields into Google Sheets, HubSpot, Airtable or Slack.
  • Zapier: use the Apify app with the trigger Finished Actor Run (set up a schedule in Apify) or the action Run Actor, then Fetch Dataset Items.
  • n8n: use the Apify node (Run Actor + Get dataset items), or a plain HTTP Request node calling the run-sync endpoint shown below.

Schedule it

In Apify Console open Schedules → Create new, choose this Actor and a cron such as 0 7 * * 1-5 (07:00 every working day). With postedWithinDays: 1 each daily run returns only the roles posted since the day before. Pair the schedule with an integration (e-mail, Slack, Google Sheets or a webhook) so new rows reach you without opening Apify.

Call it from the API (Python, JavaScript or curl)

The input below is the same JSON you would paste into the form.

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("mrslm_data/recruitee-jobs").call(run_input={
"companies": [
"bunq",
"https://channable.recruitee.com"
],
"titleKeywords": [
"engineer"
],
"postedWithinDays": 30
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)

JavaScript / Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('mrslm_data/recruitee-jobs').call({"companies": ["bunq", "https://channable.recruitee.com"], "titleKeywords": ["engineer"], "postedWithinDays": 30});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'jobs');

curl (runs the Actor and returns the rows in one call, for runs under 5 minutes):

curl -X POST "https://api.apify.com/v2/acts/mrslm_data~recruitee-jobs/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>&format=csv" \
-H "Content-Type: application/json" \
-d '{"companies": ["bunq", "https://channable.recruitee.com"], "titleKeywords": ["engineer"], "postedWithinDays": 30}'

Use it from AI agents and chat assistants (MCP)

Apify's MCP server (https://mcp.apify.com) exposes Store Actors as tools for Claude, ChatGPT, Cursor and other MCP clients. Add the server with your Apify token, enable mrslm_data/recruitee-jobs, and ask in plain language, for example: "List every open engineering job at bunq and Channable posted in the last 30 days." The assistant fills the input, runs the Actor and reads the rows back. You pay the same per-job price as a normal run.

What it costs

  • Job: $1.00 per 1,000 saved (Silver $0.90, Gold $0.80)
  • Plus $0.00005 per run. You pay only for jobs saved after your filters. Companies that are not found, and jobs your filters drop, are free.

Worked example: 200 companies with an average of 15 open roles each is 3,000 jobs, or about $3.00 per full run on the free tier price. With postedWithinDays: 7 the same weekly run usually saves a few hundred jobs, well under $1. Apify's free plan includes monthly platform credit, which covers small runs like the example above.

Tips

  • Find the board name fast. Open the company's careers page and look at the address bar or the "Apply" link. The part before the platform domain is the board name.
  • Keep runs cheap. Use titleKeywords, locationKeywords or postedWithinDays so only the jobs you need are saved and charged. Jobs your filters drop are free.
  • Watch many companies at once. Paste dozens or hundreds of boards in one run. Boards that do not exist are logged and skipped at no charge.
  • Track changes. Schedule a daily run and compare jobId values with yesterday's dataset to see which roles opened and closed.
  • Descriptions only when needed. includeDescription adds up to 5,000 characters per job. Leave it off for lead lists and dashboards; turn it on for keyword or skills analysis.

Limits

  • Only public job ads are returned: the roles the company itself lists on its Recruitee careers site. Internal-only postings and closed jobs are not in the feed.
  • Salary, seniority and employment type appear only when the company fills them in; otherwise they are null.
  • Recruitee is strongest in the Netherlands and the rest of Europe; US coverage is thinner than on Greenhouse or Lever.
  • A company that moves to another applicant tracking system disappears from Recruitee. Use our ATS Jobs Scraper to auto-detect the platform for a list of companies.

FAQ

Where does the data come from? From the company's public Recruitee job board feed: the same list of open roles the company shows on its careers page.

Does it include recruiter or applicant data? No. Only the public job ad. Email addresses and phone numbers in descriptions are removed.

How fresh is it? Live. Each run reads the board at that moment, so closed jobs disappear and new ones appear.

Does it include salary? Yes, when the company publishes it in Recruitee: salary holds min, max, currency and period. Some companies fill it in; many leave it empty, and then it is null.

My company's careers page is on its own domain. Will it work? Usually yes. Recruitee custom domains still answer on <name>.recruitee.com; paste that name or the original Recruitee URL.

Can I scrape all Recruitee companies at once? No. Recruitee does not publish a directory of customers, so you supply the companies. Most users start from a target-account list or a list of companies in a sector.

What happens if a board name is wrong? The Actor logs it, skips it and charges nothing for it. The rest of the run continues.

Data source and freshness

Each run reads the company's public Recruitee job feed at that moment, so new roles appear and closed roles disappear on the next run. Nothing is cached between runs.

This Actor only reads pages and feeds that the website itself publishes to every visitor without a login. It obeys each site's robots.txt, keeps a polite request rate, and never tries to get past logins, paywalls, captchas or bot checks. It does not collect personal data such as emails, phone numbers or names of private individuals. You are responsible for how you use the data: follow the source site's terms, copyright and the privacy laws that apply to you (GDPR, CCPA, etc.). This tool is independent and not affiliated with or endorsed by the platforms it reads.