Recruitee Jobs Scraper
Pricing
from $1.50 / 1,000 results
Recruitee Jobs Scraper
Scrape every job posting from any Recruitee-hosted employer career site via Recruitee's own public, unauthenticated JSON API, no login or browser required. One request per company returns titles, locations, salary, and full HTML descriptions.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
🎯 What this scrapes
Every employer whose career site lives at {company}.recruitee.com is served by the same public, unauthenticated JSON endpoint. This Actor talks to it directly: hand it one or more company identifiers — the subdomain in that employer's board URL, e.g. auditdata — and it fetches the entire current job board in a single request per company, normalizing every posting into one clean row schema. One scraper, every Recruitee employer.
🔥 Features
- 🔑 Keyless public API — no OAuth, no token, no per-company setup; the same endpoint the careers page itself calls.
- ⚡ One request per company — Recruitee's list endpoint already inlines the full HTML description, so there's no second per-posting fetch to orchestrate.
- 🏢 Multi-company in one run — pass many company identifiers; rows come back identically shaped, tagged with
company_id/company_name. - 💵 Salary when published — numeric-string
salary.min/salary.maxvalues are parsed into clean floats, currency and period included. - 📝 Optional full descriptions — flip
includeDescriptionon for the complete HTML posting body at no extra request cost, or off for a leaner payload. - 🧊 Clean, typed rows — Pydantic-validated, ISO-8601 timestamps, stable IDs. Export JSON / CSV / Excel straight from the Apify Console.
💡 Use cases
- Recruiting & talent intelligence — track what a target employer is hiring for, where, and in which departments.
- Job-board aggregation — add Recruitee coverage next to Workday / SmartRecruiters / Greenhouse / Lever / Ashby in one pipeline.
- Labor-market research — sample hiring demand across an industry by role, category, or location.
- Competitive hiring intel — watch a competitor's open reqs, including salary bands where published, to infer team growth and direction.
- ATS data pipelines — wire structured job rows into your CRM, dashboard, or n8n / Make workflow on a schedule.
⚙️ How to use it
- Click Try for free at the top of the Store listing.
- Add one or more Company IDs — the subdomain from a
{company}.recruitee.comcareers URL (e.g.auditdata). - Optionally set Max results per company and toggle Include description.
- Click Start. Rows stream into the dataset as each company's board is fetched.
- Export from Storage → Dataset as JSON, CSV, or Excel — or pull via the Apify API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
companyIds | array | ✅ | — | Recruitee company subdomains (the {company} in {company}.recruitee.com, e.g. auditdata), or full board URLs. |
maxResultsPerCompany | integer | no | 100 | Client-side cap on rows emitted per company. |
includeDescription | boolean | no | false | Emit each posting's full HTML description (already fetched in the same request either way). |
proxyConfiguration | object | no | {"useApifyProxy": true} | Apify Proxy configuration. |
Example input
{"companyIds": ["auditdata"],"maxResultsPerCompany": 25,"includeDescription": true,"proxyConfiguration": { "useApifyProxy": true }}
📤 Output
One dataset item per job posting. description_html is populated only when includeDescription is on.
| Field | Type | Notes |
|---|---|---|
job_id | integer | Stable numeric Recruitee offer id. |
guid | string | Additional stable identifier. |
slug | string | URL path segment. |
title | string | Job title. |
company_id | string | Company identifier you supplied. |
company_name | string | Employer display name. |
department | string | null | Department, when published. |
category_code | string | null | Recruitee category code. |
employment_type_code | string | null | e.g. fulltime_permanent. |
experience_code | string | null | e.g. experienced. |
education_code | string | null | e.g. bachelor_degree. |
city | string | null | Posting city. |
country | string | null | Posting country. |
country_code | string | null | ISO country code. |
remote / hybrid / on_site | boolean | Work-arrangement flags. |
salary_min / salary_max | float | null | Parsed from Recruitee's numeric-string salary fields. |
salary_period | string | null | e.g. "year" or "hour". |
salary_currency | string | null | e.g. "USD". |
description_html | string | null | Full posting body (when includeDescription is on). |
careers_url | string | Canonical posting URL. |
careers_apply_url | string | Apply URL. |
published_at | string | null | ISO-8601 publish timestamp. |
updated_at | string | ISO-8601 last-updated timestamp. |
scraped_at | string | UTC ISO-8601 fetch timestamp. |
Example output
{"job_id": 2680730,"guid": "dl9ua","slug": "data-architect","title": "Data Architect","company_id": "auditdata","company_name": "Auditdata","department": "R&D","category_code": "information_technology","employment_type_code": "fulltime_permanent","experience_code": "experienced","education_code": "bachelor_degree","city": "remote","country": "Poland","country_code": "PL","remote": true,"hybrid": false,"on_site": false,"salary_min": null,"salary_max": null,"salary_period": null,"salary_currency": null,"description_html": "<h4>...</h4><p>... HTML string ...</p>","careers_url": "https://auditdata.recruitee.com/o/data-architect","careers_apply_url": "https://auditdata.recruitee.com/o/data-architect/c/new","published_at": "2026-07-21T07:48:42+00:00","updated_at": "2026-07-21T07:48:42+00:00","scraped_at": "2026-07-26T15:00:00+00:00"}
💰 Pricing
Pay-Per-Event — you're charged only when these fire:
| Event | USD | What it covers |
|---|---|---|
actor-start | $0.005 | One-off warm-up per run |
result | $0.0015 | Per job posting written to the dataset |
Example: 1 000 postings ≈ $1.51. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- Public postings only — the openly published careers boards, not authenticated internal/employee views.
- Company IDs, not company names — you supply the Recruitee subdomain from the careers URL; a display name like "Auditdata" may differ from its actual identifier.
- No board-side pagination observed — every sampled company returns its full board in one response; an unusually large board is fetched as-is, whatever the single response contains.
- Point-in-time snapshot — returns the board as it stands now; schedule recurring runs to track changes.
❓ FAQ
Do I need a Recruitee account or API key?
No — every field comes from Recruitee's own public offers API, the same one the careers page calls.
How do I find a company's ID?
It's the subdomain in the careers URL: https://{company}.recruitee.com. Paste that {company} (e.g. auditdata).
Can one run cover several employers?
Yes — put multiple identifiers in companyIds and every row comes back identically shaped, tagged with company_id / company_name.
Is this legal?
We fetch public, unauthenticated job-posting data that employers publish for candidates. No login, no private endpoints.
💬 Your feedback
Spotted a bug, hit a company that behaves differently, or need an extra field? Open an issue on the Actor's Issues tab in Apify Console — we ship fixes weekly and read every report.