SmartRecruiters Jobs Scraper & API - ATS Career Data
Pricing
from $6.15 / 1,000 results
SmartRecruiters Jobs Scraper & API - ATS Career Data
Scrape any SmartRecruiters career page into structured jobs data. Extract title, location, remote flag, department, salary text, full description, apply URL, recruiter and custom fields by company. ATS job postings scraper and API, no login or API key. Export JSON, CSV or Excel.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
SmartRecruiters Jobs Scraper & API
Scrape any SmartRecruiters career page into clean, structured job postings data. This ATS jobs scraper reads the public SmartRecruiters job board of any company you list and returns every field the source exposes for each opening, plus a parsed salary range, geocoded location and structured custom fields. No login, no API key, no browser. Export to JSON, CSV or Excel, or pull results straight from the job postings API.
Here is one real result, with every field the actor returns (long text fields and the customFields and videoUrls arrays are trimmed here with ... to keep the example readable; live records return them in full):
{"title": "Resident Engineer","company": "Bosch Group","companyId": "BoschGroup","location": "Guadalajara, Jal., Mexico","city": "Guadalajara","region": "Jal.","country": "MX","postalCode": "44690","streetAddress": "Avenida Ignacio L Vallarta 3090","latitude": 20.6752737,"longitude": -103.3929652,"remote": false,"hybrid": false,"department": null,"jobFunction": "Engineering","jobFunctionId": "engineering","industry": "Automotive","industryId": "automotive","employmentType": "Full-time","employmentTypeId": "permanent","experienceLevel": "Associate","experienceLevelId": "associate","url": "https://jobs.smartrecruiters.com/BoschGroup/744000147613789-resident-engineer","jobId": "744000147613789","uuid": "4d2bc37a-7d88-4834-8cdc-8c99b9b18711","jobAdId": "845b256e-8129-4243-89b4-414e819a36f8","refNumber": "REF295136V","visibility": "PUBLIC","active": true,"releasedDate": "2026-09-05T00:02:29.676Z","language": "English","languageCode": "en","languageNative": "English (US)","recruiter": "Diana De La Mora","recruiterAvatarUrl": null,"customFields": [{ "fieldId": "5abe2a4a...", "label": "Contract type", "value": "Unlimited" },{ "fieldId": "5abe295a...", "label": "Global Salary Level", "value": "Senior/ Upper Tariff" }],"applyUrl": "https://jobs.smartrecruiters.com/BoschGroup/744000147613789-resident-engineer?oga=true","referralUrl": "https://jobs.smartrecruiters.com/external-referrals/company/BoschGroup/publication/...","videoUrls": [],"salaryText": "$26.94 - $32.96","companyDescription": "Bosch was founded in Stuttgart in 1886 by Robert Bosch...","jobDescription": "The Resident Engineer serves as the primary on-site technical liaison...","qualifications": "Requirements: Minimum: Bachelor's degree in engineering...","additionalInformation": "Work #LikeABosch. Get to know more about how we work at Bosch...","descriptionText": "The Resident Engineer serves as the primary on-site technical liaison...","observedAt": "2026-09-05T03:15:19.391Z","error": null}
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Why this scraper
- Quickstart
- Input reference
- Output reference
- How it compares
- Use cases
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor reads the public SmartRecruiters job boards of the companies you list, paginates through every open posting, and writes one normalized record per job to the run's dataset. With withDetails on (the default) each record includes the full job description, qualifications, company description, apply URL, custom fields and a salary range parsed from the free-text ad. Location is split into city, region, country, postal code, street address and latitude/longitude when the source provides them.
You pass company identifiers taken from each board's URL (for example BoschGroup from jobs.smartrecruiters.com/BoschGroup). Optional filters (keyword, remote only, employment type, experience level, department, country, released-after date) are applied after jobs are fetched, so you can pull exactly the roles you need.
Why this scraper
- No API key, no login, no browser. Point it at a company identifier and go. Works on any SmartRecruiters-hosted board.
- Most complete field set. Full descriptions split into company / job / qualifications / additional-information sections, plus recruiter, apply URL, referral URL, video URLs, geocoded location, structured custom fields and a parsed
salaryText. - Every filter you need. Keyword, remote-only, employment type, experience level, department, country and released-after date.
- Recruiter and career-page contact. Each posting exposes the recruiter/creator name so you can build talent-mapping and BD lists.
- Multi-company in one run. Pass a list of identifiers or full career URLs and collect them all.
- Clean, honest nulls. Missing source values are
null, never invented.
Quickstart
Open the actor, paste this into the input, and press Run. It collects up to 10 detailed jobs from the Bosch, Ubisoft and Equinox SmartRecruiters boards.
{"companies": ["BoschGroup", "Ubisoft2", "Equinox"],"maxJobs": 10,"withDetails": true,"remoteOnly": false}
companies is required. Use the identifier from a board's careers URL, or paste the full URL. Identifiers are case-sensitive.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
companies | string[] | yes | (none) | Company identifiers whose SmartRecruiters boards to scrape, for example BoschGroup. Take the identifier from the careers URL jobs.smartrecruiters.com/<identifier>, or paste the full URL. Case-sensitive. |
maxJobs | integer | no | 10 | Maximum number of jobs to collect across all boards. Free Apify plans are capped at 10 per run. Alias: maxItems, limit. |
withDetails | boolean | no | true | When on, each job includes full description, qualifications, company description, apply URL, recruiter, custom fields and salary text. When off, only lightweight listing fields are collected. Alias: includeDetails. |
searchQuery | string | no | (empty) | Optional keyword filter applied after fetch. Matches title, department, location, function and description (case-insensitive). |
remoteOnly | boolean | no | false | When on, return only jobs flagged remote. |
employmentType | string | no | (empty) | Keep only jobs whose employment type contains this text (for example Full-time, Intern). Case-insensitive. |
experienceLevel | string | no | (empty) | Keep only jobs whose experience level contains this text (for example Entry, Senior). Case-insensitive. |
department | string | no | (empty) | Keep only jobs whose department contains this text (for example Engineering, Sales). Case-insensitive. |
country | string | no | (empty) | Keep only jobs whose country or location contains this text (for example US, Germany). Case-insensitive. |
releasedAfter | string | no | (empty) | Keep only jobs released on or after this date (YYYY-MM-DD). Jobs without a release date are excluded when set. |
proxyConfiguration | object | no | (none) | Optional Apify proxy settings, for very large boards that rate-limit a single IP. |
The actor also accepts companyIdentifiers, companyUrls and startUrls as aliases for companies, so inputs built for other SmartRecruiters scrapers work here unchanged.
Output reference
One dataset item per job. Types: string, number, boolean, object[], string[], or null when the source value is absent. Detail fields are populated only when withDetails is enabled.
| Field | Type | Description |
|---|---|---|
title | string | Job title. |
company | string | Company display name. |
companyId | string | SmartRecruiters company identifier (from the board URL). |
location | string | Full location string as posted. |
city | string | City parsed from the location. |
region | string | State or region parsed from the location. |
country | string | Country code or name. |
postalCode | string | Postal code of the job location, or null. |
streetAddress | string | Street address of the job location, or null. |
latitude | number | Latitude of the job location, or null. |
longitude | number | Longitude of the job location, or null. |
remote | boolean | true when the job is flagged remote. |
hybrid | boolean | true when the job is flagged hybrid. |
department | string | Department, or null when not set. |
jobFunction | string | Job function category. |
jobFunctionId | string | Machine code for the job function. |
industry | string | Industry category. |
industryId | string | Machine code for the industry. |
employmentType | string | Employment type (for example Full-time). |
employmentTypeId | string | Machine code for the employment type. |
experienceLevel | string | Experience level (for example Associate). |
experienceLevelId | string | Machine code for the experience level. |
url | string | Public job posting URL. |
jobId | string | SmartRecruiters posting identifier. |
uuid | string | Stable posting UUID, useful as a dedup key. |
jobAdId | string | Identifier of the job ad shown on the posting. |
refNumber | string | Employer reference/requisition number, or null. |
visibility | string | Posting visibility (for example PUBLIC). |
active | boolean | true when the posting is still active (with withDetails). |
releasedDate | string | ISO 8601 date the job was released. |
language | string | Posting language label. |
languageCode | string | Posting language code (for example en). |
languageNative | string | Native language label (for example English (US)). |
salaryText | string | Salary range parsed from the free-text ad, or null. |
applyUrl | string | Direct application URL (with withDetails). |
referralUrl | string | External referral URL (with withDetails). |
recruiter | string | Recruiter / posting creator name, or null. |
recruiterAvatarUrl | string | Recruiter avatar URL, or null. |
videoUrls | string[] | Video URLs embedded in the posting. Empty array when none. |
jobDescription | string | Full job description text (with withDetails). |
qualifications | string | Qualifications section text (with withDetails). |
companyDescription | string | Company description text (with withDetails). |
additionalInformation | string | Additional information section text (with withDetails). |
descriptionText | string | Combined plain-text description (with withDetails). |
customFields | object[] | Employer custom fields as {fieldId, label, value}. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
How it compares
Every input other SmartRecruiters scrapers accept, plus more filters, plus a richer output. Aliases mean their input files run here unchanged.
| Capability | This actor | Typical alternatives |
|---|---|---|
| Multiple companies per run | Yes | Some (many are single-company) |
| Company identifiers and full career URLs | Yes (companies, companyIdentifiers, companyUrls, startUrls) | Varies |
| Keyword filter | Yes (searchQuery) | Usually no (filter after export) |
| Remote-only filter | Yes | Rare |
| Employment type / experience level filters | Yes | Rare |
| Department and country filters | Yes | Sometimes |
| Released-after date filter | Yes | Rare |
| Full multi-section descriptions | Yes (company / job / qualifications / additional) | Often single blob or plain text only |
| Geocoded location (lat/lng, postal, street) | Yes | Rare |
| Parsed salary text | Yes | Rare |
| Recruiter / creator name | Yes | Rare |
| Apply URL and referral URL | Yes | Apply URL sometimes |
| Structured custom fields | Yes ({fieldId, label, value}) | Rare |
| Video URLs | Yes | Rare |
| Stable posting UUID for dedup | Yes | Rare |
| No API key or login | Yes | Usually |
| Export JSON / CSV / Excel | Yes | Usually |
Use cases
- Recruiting and talent market research. Track which roles a competitor is hiring for, where, and at what seniority.
- Job boards and aggregators. Ingest a clean, deduplicated feed of live postings with apply URLs.
- Sales and BD lead lists. Companies that are hiring engineers, sales, or ops are buying signals; pull recruiter names and departments.
- Compensation research. Collect
salaryTextand custom pay-grade fields across a set of employers. - HR and talent analytics dashboards. Feed structured postings into BI tools with geocoded locations and functions.
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~smartrecruiters-jobs-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"companies":["BoschGroup"],"maxJobs":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~smartrecruiters-jobs-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"companies":["Ubisoft2"],"remoteOnly":true,"maxJobs":100}'
Apify CLI:
apify call scrapers_lat/smartrecruiters-jobs-scraper \--input '{"companies":["Equinox"],"searchQuery":"manager"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per job returned (
resultevent). See the pricing tab for the current per-result price. - Detail add-on. With
withDetailson (the default), each record that is successfully enriched with detail-page data also charges thedetailsevent. TurnwithDetailsoff to pay the listing-only price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 jobs per run. Upgrade for higher
maxJobs.
FAQ and troubleshooting
Where do I get the company identifier?
Open a company's SmartRecruiters careers page. The identifier is the path segment after the domain, for example BoschGroup in jobs.smartrecruiters.com/BoschGroup. You can paste either the identifier or the full URL.
Do I need an API key or a SmartRecruiters login? No. The actor reads only public job board data, with no key, login, or browser required.
Why is salaryText null?
SmartRecruiters exposes no structured salary field, so the actor parses pay from the free-text ad. When the ad states no pay, salaryText is null. Missing source values are never invented.
How do I get only remote jobs?
Set remoteOnly to true, or combine country and searchQuery filters.
Do I need withDetails?
Only if you want full descriptions, qualifications, apply URL, custom fields and salary text. Turn it off for a faster, lightweight listing (title, location, department, dates).
Can I scrape several companies at once?
Yes. Pass a list of identifiers or full career URLs in companies. You can also use companyIdentifiers, companyUrls or startUrls.
A run returned 0 records. Why? Either the company identifier is wrong or case-mismatched, the board currently has no open jobs, or your filters excluded every job. Zero-result runs are not charged.
Is this an official SmartRecruiters tool? No. This actor is independent and has no affiliation with SmartRecruiters. It reads only publicly available job board data. Use the results in accordance with the source's terms.
Related scrapers
- Greenhouse Jobs Scraper: Jobs from Greenhouse-hosted career boards.
- Ashby Jobs Scraper: Jobs from Ashby-hosted career boards.
- BambooHR Jobs Scraper: Jobs from BambooHR career boards.
- Breezy HR Jobs Scraper: Jobs from Breezy HR career boards.
- Dice Jobs Scraper: US tech jobs from Dice.
- Himalayas Remote Jobs Scraper: Remote jobs from Himalayas.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with SmartRecruiters. Accesses only publicly available job board data. Use the results in accordance with the source's terms.
