SmartRecruiters Jobs & Salary Scraper avatar

SmartRecruiters Jobs & Salary Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
SmartRecruiters Jobs & Salary Scraper

SmartRecruiters Jobs & Salary Scraper

Scrape SmartRecruiters company job boards by company. Extract job title, location, department, industry, employment type, experience level, apply URL, full description and salary text. Export JSON, CSV or Excel. No login or API key.

Pricing

from $6.15 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

SmartRecruiters Jobs & Salary Scraper

SmartRecruiters Jobs & Salary Scraper

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": "Industrial Maintenance Tech (2nd Shift)",
"company": "Bosch Group",
"companyId": "BoschGroup",
"location": "West Memphis, AR, United States",
"city": "West Memphis",
"region": "AR",
"country": "US",
"postalCode": "72301",
"streetAddress": "2700 College Boulevard",
"latitude": 35.1741063,
"longitude": -90.2266043,
"remote": false,
"hybrid": false,
"department": null,
"jobFunction": "Distribution",
"industry": "Warehousing",
"employmentType": "Full-time",
"experienceLevel": "Entry Level",
"url": "https://jobs.smartrecruiters.com/BoschGroup/744000142655939-industrial-maintenance-tech-2nd-shift-",
"jobId": "744000142655939",
"refNumber": "REF289682L",
"releasedDate": "2026-08-10T14:01:50.778Z",
"language": "English",
"customFields": [
{ "label": "Contract type", "value": "Unlimited" },
{ "label": "Global Salary Level", "value": "Junior/ Lower Tariff" },
{ "label": "Legal Entity", "value": "Robert Bosch Tool Corporation" }
],
"applyUrl": "https://jobs.smartrecruiters.com/BoschGroup/744000142655939-industrial-maintenance-tech-2nd-shift-?oga=true",
"referralUrl": "https://jobs.smartrecruiters.com/external-referrals/company/BoschGroup/publication/fa7556de-17a1-4ef9-9fc2-69c5d067fad1?dcr_ci=BoschGroup",
"recruiter": null,
"recruiterAvatarUrl": null,
"videoUrls": [
"https://www.youtube.com/watch?v=7xW4eguGuhc",
"https://www.youtube.com/watch?v=hAD6sl-MtjU"
],
"salaryText": "$26.94 - $32.96",
"companyDescription": "Welcome to Bosch Power Tools in West Memphis, AR, where innovation meets action in a high-volume, fast-moving warehousing operation...",
"jobDescription": "The Industrial Maintenance Technician supports a highly automated warehouse environment by maintaining, troubleshooting, and repairing material handling and automation equipment...",
"qualifications": "Qualifications & Education - High School Diploma/GED REQUIRED - Technical/Vocational training in industrial maintenance, electrical, or mechanical fields PREFERRED...",
"additionalInformation": "The U.S. base salary range for this full-time position is hourly $26.94 - $32.96 (plus shift differential)...",
"descriptionText": "The Industrial Maintenance Technician supports a highly automated warehouse environment...",
"observedAt": "2026-08-10T14:17:49.391Z",
"error": null
}

The most complete SmartRecruiters jobs scraper available. It returns every field a company's SmartRecruiters job board exposes for each opening, plus a parsed salary range, geocoded location and structured custom fields, and gives you keyword, remote, employment type, experience level, department, country and date filters plus an optional contact enrichment add-on to target exactly the jobs you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

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. An optional paid contact enrichment add-on can look up a public business email and contact person for each result.

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

FieldTypeRequiredDefaultDescription
companiesstring[]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.
maxJobsintegerno10Maximum number of jobs to collect across all boards. Free Apify plans are capped at 10 per run.
withDetailsbooleannotrueWhen 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.
searchQuerystringno(empty)Optional keyword filter applied after fetch. Matches title, department, location, function and description (case-insensitive).
remoteOnlybooleannofalseWhen on, return only jobs flagged remote.
employmentTypestringno(empty)Keep only jobs whose employment type contains this text (for example Full-time, Intern). Case-insensitive.
experienceLevelstringno(empty)Keep only jobs whose experience level contains this text (for example Entry, Senior). Case-insensitive.
departmentstringno(empty)Keep only jobs whose department contains this text (for example Engineering, Sales). Case-insensitive.
countrystringno(empty)Keep only jobs whose country or location contains this text (for example US, Germany). Case-insensitive.
releasedAfterstringno(empty)Keep only jobs released on or after this date (YYYY-MM-DD). Jobs without a release date are excluded when set.
enrichContactsbooleannofalseOptional paid add-on, off by default. For each result without an email, attempt to find a public business contact email and a contact person's name. Billed per attempt, plus an extra charge only when an email is found.
enrichContactsMaxintegerno50Cap how many results the add-on tries to enrich. Free Apify accounts are capped at 3.

Output reference

One dataset item per job. Types: string, number, boolean, object[], string[], or null when the source value is absent. Detail and enriched* fields are populated only when withDetails / the enrichment add-on are enabled.

FieldTypeDescription
titlestringJob title.
companystringCompany display name.
companyIdstringSmartRecruiters company identifier (from the board URL).
locationstringFull location string as posted.
citystringCity parsed from the location.
regionstringState or region parsed from the location.
countrystringCountry code or name.
postalCodestringPostal code of the job location, or null.
streetAddressstringStreet address of the job location, or null.
latitudenumberLatitude of the job location, or null.
longitudenumberLongitude of the job location, or null.
remotebooleantrue when the job is flagged remote.
hybridbooleantrue when the job is flagged hybrid.
departmentstringDepartment, or null when not set.
jobFunctionstringJob function category.
industrystringIndustry category.
employmentTypestringEmployment type (for example Full-time).
experienceLevelstringExperience level (for example Entry Level).
urlstringPublic job posting URL.
jobIdstringSmartRecruiters job identifier.
refNumberstringEmployer reference number, or null.
releasedDatestringISO 8601 date the job was released.
languagestringPosting language.
salaryTextstringSalary range parsed from the free-text ad, or null.
applyUrlstringDirect application URL.
referralUrlstringExternal referral URL, or null.
recruiterstringRecruiter name, or null.
recruiterAvatarUrlstringRecruiter avatar URL, or null.
videoUrlsstring[]Video URLs embedded in the posting. Empty array when none.
jobDescriptionstringFull job description text (with withDetails).
qualificationsstringQualifications section text (with withDetails).
companyDescriptionstringCompany description text (with withDetails).
additionalInformationstringAdditional information section text (with withDetails).
descriptionTextstringCombined plain-text description (with withDetails).
customFieldsobject[]Employer custom fields as {label, value} pairs.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.
enrichedEmailstringPublic business contact email found by the add-on, or null.
enrichedContactNamestringContact person name found by the add-on, or null.
enrichedJobTitlestringContact person job title found by the add-on, or null.
enrichedEmailStatusstringVerification status of the enriched email, or null.
enrichedSourcestringSource URL the enriched contact was found on, or null.
enrichedConfidencestringConfidence label for the enriched contact, or null.

Example output record

Real record from a live run (input {"companies":["BoschGroup","Ubisoft2","Equinox"],"maxJobs":10,"withDetails":true}). Long text fields and the customFields and videoUrls arrays are trimmed here with ...; live records return them in full:

{
"title": "Industrial Maintenance Tech (2nd Shift)",
"company": "Bosch Group",
"companyId": "BoschGroup",
"location": "West Memphis, AR, United States",
"city": "West Memphis",
"region": "AR",
"country": "US",
"postalCode": "72301",
"streetAddress": "2700 College Boulevard",
"latitude": 35.1741063,
"longitude": -90.2266043,
"remote": false,
"hybrid": false,
"department": null,
"jobFunction": "Distribution",
"industry": "Warehousing",
"employmentType": "Full-time",
"experienceLevel": "Entry Level",
"url": "https://jobs.smartrecruiters.com/BoschGroup/744000142655939-industrial-maintenance-tech-2nd-shift-",
"jobId": "744000142655939",
"refNumber": "REF289682L",
"releasedDate": "2026-08-10T14:01:50.778Z",
"language": "English",
"salaryText": "$26.94 - $32.96",
"applyUrl": "https://jobs.smartrecruiters.com/BoschGroup/744000142655939-industrial-maintenance-tech-2nd-shift-?oga=true",
"customFields": [
{ "label": "Contract type", "value": "Unlimited" },
{ "label": "Global Salary Level", "value": "Junior/ Lower Tariff" }
],
"jobDescription": "The Industrial Maintenance Technician supports a highly automated warehouse environment...",
"observedAt": "2026-08-10T14:17:49.391Z",
"error": null
}

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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 (result event). See the pricing tab for the current per-result price.
  • Contact enrichment add-on. When enrichContacts is on, each enrichment attempt is billed, plus an extra charge only when an email is found. Leave it off to pay only the per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 jobs per run, and the enrichment add-on is capped at 3 attempts. 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.

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).

A run returned 0 records. Why? Either the company identifier is wrong or case-mismatched, 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.

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.