SmartRecruiters Jobs Scraper icon

Jobs

SmartRecruiters Jobs Scraper

Scrape job postings from any SmartRecruiters-hosted employer via SmartRecruiters' own keyless public JSON API — titles, locations, departments, apply URLs, full descriptions. One scraper, every employer.

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

What this Actor scrapes

Thousands of companies run their careers page on SmartRecruiters, and every one of those boards is served by the same public JSON API (api.smartrecruiters.com/v1/companies/{companyId}/postings). This Actor talks to it directly: hand it one or more company IDs — the {companyId} in a jobs.smartrecruiters.com/{companyId} URL, e.g. Visa — and it paginates each employer's full posting list, optionally fetches every posting's detail for the full description, and normalizes it all into one row schema. One scraper, every SmartRecruiters 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.
  • 🏢 Multi-company in one run — pass many company IDs; rows come back identically shaped, tagged with company_id / company_name.
  • 🎯 Server-side filters — narrow by free-text searchQuery, department, city, or country before a single row is billed.
  • 📝 Optional full descriptions — flip includeDescription on for the complete posting body (an extra detail fetch per job), or off for a fast titles-and-locations pull.
  • 🔁 Retries with backoff + fingerprint impersonationcurl-cffi presents a real browser handshake and retries transient 429/5xx so a large multi-employer batch finishes instead of dying midway.
  • 🧊 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 SmartRecruiters coverage next to Workday / Greenhouse / Lever / Ashby in one pipeline.
  • Labor-market research — sample hiring demand across an industry by role, function, or location.
  • Competitive hiring intel — watch a competitor's open reqs 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 SmartRecruiters company identifier, e.g. "Visa" (the path segment in jobs.smartrecruiters.com/{companyId}), or a full board URL — the companyId is regex-extracted automatically. A plain string with no…
searchQuery string no Passthrough to SmartRecruiters' own free-text search facet (q) on every page request. Leave empty to return every posting.
department string no Passthrough to SmartRecruiters' department facet. Must be SmartRecruiters' own internal department id (e.g. "868639"), not the human-readable label — there is no label-to-id resolver. Leave empty to skip.
city string no Passthrough to SmartRecruiters' city facet. Leave empty to skip.
country string no Passthrough to SmartRecruiters' country facet; lowercased automatically before sending, e.g. "gb", "us". Leave empty to skip.
maxResultsPerCompany integer no Cap job postings emitted per companyIds entry.
includeDescription boolean no When enabled, fetch the full job description (HTML) plus the verified apply URL for every emitted job. Roughly doubles HTTP calls for emitted rows.
{
  "companyIds": [
    "Visa"
  ],
  "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.

posting_idtitlecompany_namelocation_citylocation_countrydepartmentemployment_typeapply_urldescription_html

{
  "posting_id": "743999...abc",
  "title": "Sr. Manager, Data Platform",
  "company_id": "Visa",
  "company_name": "Visa",
  "location_city": "Austin",
  "location_region": "Texas",
  "location_country": "US",
  "is_remote": false,
  "department": "Technology",
  "function": "Information Technology",
  "employment_type": "Full-time",
  "industry": "Financial Services",
  "ref_number": "REF12345",
  "released_date": "2026-07-18T00:00:00Z",
  "apply_url": "https://jobs.smartrecruiters.com/Visa/743999...abc",
  "description_html": "Visa is looking for a Sr. Manager...",
  "scraped_at": "2026-07-21T14:00:00Z"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0020Per 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.
  • Descriptions cost an extra fetchincludeDescription adds one detail request per posting; leave it off for the fastest pull.
  • Company IDs, not company names — you supply the SmartRecruiters {companyId} from the careers URL; a display name like "Bosch" may differ from its actual identifier.
  • Point-in-time snapshot — returns the board as it stands now; schedule recurring runs to track changes.

FAQ

Do I need a SmartRecruiters account or API key?
No — every field comes from SmartRecruiters' own public postings API, the same one the careers page calls.
How do I find a company's ID?
It's in the careers URL: https://jobs.smartrecruiters.com/{companyId}. Paste that {companyId} (e.g. Visa).
Can one run cover several employers?
Yes — put multiple IDs 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