Recruitee Jobs Scraper icon

Jobs

Recruitee Jobs Scraper

Scrape every job posting from any Recruitee-hosted employer career site via Recruitee's own public, unauthenticated JSON API — titles, locations, salary, departments, and full HTML descriptions, one request per company, no login or browser required.

Free Apify credit covers a first run. No credit card to try.

What this Actor 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.

What we handle for you

  • 🔑 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.max values are parsed into clean floats, currency and period included.
  • 📝 Optional full descriptions — flip includeDescription on 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.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
companyIds array yes Recruitee company subdomain, e.g. "auditdata" (the {company} in {company}.recruitee.com), or a full board URL — the subdomain is regex-extracted automatically. A plain string with no "recruitee.com" substring is used…
maxResultsPerCompany integer no Cap job postings emitted per companyIds entry. A client-side slice of the single response array, not server-side pagination.
includeDescription boolean no When enabled, emit the full job description (HTML) already returned in the single company request. Does not add any extra HTTP calls either way.
{
  "companyIds": [
    "auditdata"
  ],
  "maxResultsPerCompany": 25,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

job_idtitlecompany_namecitycountrydepartmentremotesalary_minsalary_maxcareers_apply_urldescription_html

{
  "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

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0015Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

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.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run