SmartRecruiters Jobs Scraper
Pricing
from $2.00 / 1,000 results
SmartRecruiters Jobs Scraper
Scrape every job posting from any SmartRecruiters-hosted employer board via SmartRecruiters' own public JSON API, no login or browser required. Filter by keyword, department id, city, or country, and add full HTML descriptions plus verified apply links on request.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
🎯 What this 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.
🔥 Features
- 🔑 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, orcountrybefore a single row is billed. - 📝 Optional full descriptions — flip
includeDescriptionon for the complete posting body (an extra detail fetch per job), or off for a fast titles-and-locations pull. - 🔁 Retries with backoff + fingerprint impersonation —
curl-cffipresents a real browser handshake and retries transient429/5xxso 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.
⚙️ How to use it
- Click Try for free at the top of the Store listing.
- Add one or more Company IDs — the
{companyId}from ajobs.smartrecruiters.com/{companyId}careers URL (e.g.Visa). - Optionally set Search query, Department, City, Country, Max results per company, and toggle Include description.
- Click Start. Rows stream into the dataset as each company paginates.
- Export from Storage → Dataset as JSON, CSV, or Excel — or pull via the Apify API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
companyIds | array | ✅ | — | SmartRecruiters company identifiers (the {companyId} in jobs.smartrecruiters.com/{companyId}, e.g. Visa). |
searchQuery | string | no | null | Free-text keyword filter (server-side). |
department | string | no | null | Department facet filter. |
city | string | no | null | City facet filter. |
country | string | no | null | Country facet filter. |
maxResultsPerCompany | integer | no | — | Cap on rows emitted per company. |
includeDescription | boolean | no | false | Fetch each posting's full description (one extra call per job). |
proxyConfiguration | object | no | {"useApifyProxy": true} | Apify Proxy configuration. |
Example input
{"companyIds": ["Visa"],"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 |
|---|---|---|
posting_id | string | Stable SmartRecruiters posting UUID. |
title | string | Job title. |
company_id | string | Company identifier you supplied. |
company_name | string | Employer display name. |
location_city | string | null | Posting city. |
location_region | string | null | Region / state. |
location_country | string | null | Country. |
is_remote | boolean | Whether the posting is flagged remote. |
department | string | null | Department label. |
function | string | null | Job function label. |
employment_type | string | null | e.g. Full-time. |
industry | string | null | Industry label. |
ref_number | string | null | Employer reference number. |
released_date | string | null | ISO-8601 posting release date. |
apply_url | string | Canonical jobs.smartrecruiters.com apply URL. |
description_html | string | null | Full posting body (when includeDescription is on). |
scraped_at | string | UTC ISO-8601 fetch timestamp. |
Example output
{"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
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.
- Descriptions cost an extra fetch —
includeDescriptionadds 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.
💬 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.