Recruitee Jobs Scraper (FreshActors) avatar

Recruitee Jobs Scraper (FreshActors)

Pricing

from $20.00 / 1,000 company jobs fetcheds

Go to Apify Store
Recruitee Jobs Scraper (FreshActors)

Recruitee Jobs Scraper (FreshActors)

Reliable, always-fresh job postings from any Recruitee company board. Public Offers API, no login — full descriptions AND salary in a single call. Monitored daily. By FreshActors.

Pricing

from $20.00 / 1,000 company jobs fetcheds

Rating

0.0

(0)

Developer

Martin Čech

Martin Čech

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

Recruitee Jobs Scraper — Every Company Board as Clean JSON (No API Key)

Scrape Recruitee ATS job postings from any company's public board into clean, structured JSON — title, full description, requirements, location, department, employment type, remote/hybrid flag, salary, and apply URL. No account, no login, no API key. Point it at a list of Recruitee companies and get a normalized jobs feed back.

Recruitee Jobs Scraper — normalized job postings with full descriptions and salary

Last verified working: 2026-06-02. Monitored by an automated daily canary. When Recruitee changes its Offers API, we patch fast and log it in the changelog below — so your hiring-data pipeline doesn't silently break.


Why this Recruitee scraper

Recruitee powers the careers sites of thousands of companies, and every board is backed by a public Offers API — no key, no login, no browser. The nice part: a single request returns every offer with its full description, requirements, and salary — no second detail call, no pagination to manage. The catch is the usual one: the moment the response shape shifts, a naive scraper silently returns nothing. This actor is built to stay working:

  • One normalized schema — the same stable job record as our Greenhouse & Lever, Workable, and SmartRecruiters scrapers, so Recruitee companies slot into the exact same pipeline with no special-casing.
  • Salary included — Recruitee is one of the few ATS that exposes pay. When a company sets it, you get a structured salary object (min, max, period, currency); when they don't, it's null (never a missing key).
  • Full descriptions, in one call — description + requirements come back cleaned to plain text. No extra requests, so it's fast and cheap.
  • Per-company isolation + retries — a dead, renamed, or private board is skipped and logged; it never crashes the run. Transient errors retry with backoff. Draft/closed offers are filtered out — only published roles.
  • Stable, versioned output (_schemaVersion) + a daily canary — that "last verified working" date is real.

What data you get

Each row is one normalized job posting. Fields Recruitee doesn't provide come back as null, never missing, so your downstream schema stays predictable.

FieldTypeDescription
_typestringAlways job.
_schemaVersionstringOutput schema version.
_sourcestringAlways recruitee.
companystringCompany identifier (the {name}.recruitee.com subdomain).
jobIdstringRecruitee offer ID.
titlestringJob title.
departmentstring | nullDepartment.
teamnullRecruitee has no team distinct from department.
locationstring | nullFull location string.
allLocationsstring[] | nullEvery listed location.
workplaceTypestring | nullremote / hybrid where flagged.
commitmentstring | nullEmployment type (Full-time, Part-time, Internship, …).
countrystring | null2-letter country code.
urlstring | nullPublic posting URL.
applyUrlstring | nullDirect apply URL.
postedAtstring | nullPublish date (ISO).
updatedAtstring | nullLast update (ISO).
salaryobject | null{ min, max, period, currency } when the company sets it.
descriptionTextstring | nullFull description + requirements as clean text (when includeDescription is on).
_scrapedAtstringISO timestamp this record was fetched.

Use cases

  • Sales intelligence / hiring-signal tracking. Which companies are hiring for which roles — a leading indicator of growth and budget. Feed department, location, postedAt, and salary into a lead-scoring/intent model.
  • Compensation & salary benchmarking. Recruitee's salary field makes this board one of the few ATS sources you can use to track posted pay ranges by role, country, and time.
  • Recruiting & talent sourcing. Aggregate live openings across target employers into one table; filter workplaceType: remote or commitment with no Recruitee-specific adapter.
  • Job boards & aggregators. Need to scrape Recruitee jobs into a uniform feed? Point it at your company list and ingest normalized records on a schedule.

Input

FieldTypeRequiredNotes
companiesstring[]Recruitee identifiers (bunq) or board URLs (https://bunq.recruitee.com). One per row. The identifier is the subdomain in the company's {name}.recruitee.com URL.
includeDescriptionbooleanInclude the full description + requirements text. Default true. Recruitee returns these in the same request, so turning it off only trims output size (no change to cost or speed).
maxJobsPerCompanyintegerCap per company (1–5000). Default 1000.
{
"companies": ["bunq", "https://channable.recruitee.com"],
"includeDescription": true,
"maxJobsPerCompany": 1000
}

Output sample

{
"_type": "job",
"_schemaVersion": "1.0",
"_source": "recruitee",
"company": "bunq",
"jobId": "2620732",
"title": "Senior Backend Engineer",
"department": "Engineering",
"team": null,
"location": "Amsterdam, Netherlands",
"allLocations": ["Amsterdam, Netherlands"],
"workplaceType": "hybrid",
"commitment": "Full-time",
"country": "NL",
"url": "https://careers.bunq.com/o/senior-backend-engineer",
"applyUrl": "https://careers.bunq.com/o/senior-backend-engineer/c/new",
"postedAt": "2026-05-29T09:45:21.000Z",
"updatedAt": "2026-05-30T11:02:00.000Z",
"salary": { "min": 65000, "max": 90000, "period": "year", "currency": "EUR" },
"descriptionText": "About the role... Requirements...",
"_scrapedAt": "2026-06-02T18:00:00.000Z"
}

Use with AI agents (MCP)

This scraper is callable as a tool by AI agents via the Apify MCP server — so assistants like Claude, Cursor, and VS Code can run it and use the structured results mid-conversation, with no glue code.

Simplest path: in a recent Claude Desktop, add the hosted server https://mcp.apify.com under Settings → Connectors and authorize with OAuth. For any config-file client:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}

Then ask in plain language, e.g. "List the open jobs at bunq from its Recruitee board with titles, locations, salary, and apply links." — the agent calls freshactors/recruitee-jobs-scraper with the right input and reads back the JSON. Full setup: Apify MCP docs.

Pricing

Pay-per-event — no subscription. You pay only for the boards you fetch and the postings you receive:

EventPrice (USD)When it fires
Company jobs fetched$0.02Once per company board successfully fetched (with ≥1 published job).
Job posting fetched$0.0005Once per job posting returned.

Worked example — "how much do 100 results cost?" Scrape 5 companies for 100 postings total:

  • Boards: 5 × $0.02 = $0.10
  • Postings: 100 × $0.0005 = $0.05
  • Total: $0.15 for 100 normalized jobs (with descriptions + salary) across 5 companies.

(Apify platform usage is billed separately per their standard rates.)

FAQ

Is scraping Recruitee jobs legal? This actor reads public, non-personal job-posting data from companies' own public Recruitee boards — the same data their careers pages serve to any visitor. No login, no personal data. Use responsibly and in line with applicable terms and laws.

Do I need an API key? No. There's no Recruitee API key, account, or login — it reads the public Offers API.

How do I find a company's Recruitee identifier? It's the subdomain in the careers URL — **bunq**.recruitee.com. You can paste either the identifier or the full URL. (Companies on a custom careers domain still have a {name}.recruitee.com address — use that subdomain.)

Does it include salary? Yes — when the company fills it in. Recruitee is one of the few ATS that exposes pay, so you get a structured salary object where available, and null where not.

Does it include full job descriptions? Yes — includeDescription defaults to true, returning each offer's description + requirements as clean text. They come in the same request, so turning it off only trims output size; it doesn't change cost or speed.

Can I scrape many companies at once? Yes — pass as many identifiers/URLs in companies as you need. Each board is fetched in isolation; a dead or private board is skipped, not fatal. Cap volume with maxJobsPerCompany (1–5000).

How often is the data updated? It's live — every run fetches the companies' current public boards. The actor itself is monitored by a daily canary so parsing stays correct as the Offers API evolves.

Other FreshActors tools

FreshActors actorWhat it scrapes
Greenhouse & Lever Jobs ScraperGreenhouse + Lever — normalized job postings
Workable Jobs ScraperWorkable — normalized job postings, full descriptions
SmartRecruiters Jobs ScraperSmartRecruiters — normalized job postings, full descriptions
App Store ScraperApple App Store — app details, search, reviews
Google Play ScraperGoogle Play — app details + reviews
Shopify App Store ScraperShopify App Store — app details, reviews, discovery
Redfin ScraperRedfin — US real-estate listings

Reliability

A scheduled daily canary scrapes a known Recruitee board, validates the normalized schema, and alerts the moment a parse changes. When Recruitee shifts its Offers API, we patch the same day and record it in the changelog below. Every record carries _schemaVersion and _scrapedAt.

Changelog

  • 2026-06-02 — v1.0 launch. Single-call public Offers API (full description + requirements + salary per offer), normalized schema, published-only filtering, per-company isolation, daily canary monitoring.

Legal note: Reads public, non-personal job-posting data from companies' own public Recruitee boards (the same data their careers pages serve). No login, no personal data. Use responsibly and in line with applicable terms and laws.

Found a problem? Open an issue on the actor — issues are answered fast.