SmartRecruiters Jobs Scraper — Postings to JSON/CSV avatar

SmartRecruiters Jobs Scraper — Postings to JSON/CSV

Pricing

from $10.00 / 1,000 company jobs fetcheds

Go to Apify Store
SmartRecruiters Jobs Scraper — Postings to JSON/CSV

SmartRecruiters Jobs Scraper — Postings to JSON/CSV

Reliable, always-fresh job postings from any SmartRecruiters company board. Public Posting API, no login, full descriptions. Monitored daily. By FreshActors.

Pricing

from $10.00 / 1,000 company jobs fetcheds

Rating

0.0

(0)

Developer

Freshactors

Freshactors

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

20 days ago

Last modified

Share

SmartRecruiters Jobs Scraper — Every Company Board as Clean JSON (No API Key)

Scrape SmartRecruiters ATS job postings from any company's public board into clean, structured JSON — title, full description, location, department, function, employment type, remote/hybrid flag, and apply URL. No account, no login, no API key. Point it at a list of SmartRecruiters companies and get a normalized jobs feed back.

SmartRecruiters Jobs Scraper — normalized job postings with full descriptions

Last verified working: 2026-08-03. Monitored by an automated daily canary. When SmartRecruiters changes its Posting API, we patch fast and log it in the changelog below — so your hiring-data pipeline doesn't silently break.


Why this SmartRecruiters scraper

SmartRecruiters powers thousands of enterprise career sites (Visa, Bosch, and more), and every one exposes a public Posting API — no key, no login, no browser. The catch is the usual one: it's a two-tier API (a list endpoint for metadata, a detail endpoint for the full description), and the moment the response shape shifts, a naive scraper silently returns nothing. This actor is built to stay working:

  • One normalized schema — the same stable job record as our Greenhouse & Lever and Workable scrapers, so SmartRecruiters companies slot into the exact same pipeline with no special-casing.
  • Full descriptions, handled for you — we paginate the list and enrich each posting with the detail endpoint's jobAd sections (company description + job description + qualifications + additional info), cleaned to plain text.
  • A fast, list-only mode — set includeDescription: false and you get full metadata + the posting URL in a single request per page, no per-posting detail calls.
  • Per-company isolation + retries — a dead, renamed, or private board is skipped and logged; it never crashes the run. Transient errors retry with backoff.
  • Stable, versioned output (_schemaVersion) + a daily canary — that "last verified working" date is real.

What data you get

Each row is one normalized job posting. Fields SmartRecruiters doesn't provide come back as null, never missing, so your downstream schema stays predictable.

FieldTypeDescription
_typestringAlways job.
_schemaVersionstringOutput schema version.
_sourcestringAlways smartrecruiters.
companystringCompany identifier.
jobIdstringSmartRecruiters posting ID.
titlestringJob title.
departmentstring | nullDepartment.
teamstring | nullFunction (e.g. "Information Technology").
locationstring | nullFull location string.
allLocationsstring[] | nullListed location(s).
workplaceTypestring | nullremote / hybrid where flagged.
commitmentstring | nullEmployment type (Full-time, …).
countrystring | null2-letter country code.
urlstringPublic posting URL.
applyUrlstring | nullDirect apply URL.
postedAtstring | nullRelease date (ISO).
updatedAtstring | nullLast-updated date; reserved — currently always null.
descriptionTextstring | nullFull description text (when includeDescription is on).
_scrapedAtstringISO timestamp this record was fetched.

Use cases

  • Sales intelligence / hiring-signal tracking. Which enterprises are hiring for which roles — a leading indicator of growth and budget. Feed department, team, location, postedAt into a lead-scoring/intent model.
  • Recruiting & talent sourcing. Aggregate live openings across target employers into one table; filter workplaceType: remote or commitment with no SmartRecruiters-specific adapter.
  • Job boards & aggregators. Need to scrape SmartRecruiters jobs into a uniform feed? Point it at your company list and ingest normalized records on a schedule.
  • Labor-market & VC research. postedAt gives a clean time series of when roles open across companies.

Input

FieldTypeRequiredNotes
companiesstring[]SmartRecruiters identifiers (visa) or board URLs (https://jobs.smartrecruiters.com/Visa). One per row.
includeDescriptionbooleanFetch the full description per posting (one extra request each). Default true. Turn off for a fast, list-only run (metadata + URL).
maxJobsPerCompanyintegerCap per company (1–5000). Default 100 — plenty for a first run; raise it for boards with more roles. Pulling 1000+ roles? Run asynchronously, not Run-and-wait — see FAQ.
{
"companies": ["BoschGroup", "https://jobs.smartrecruiters.com/Visa"],
"includeDescription": true,
"maxJobsPerCompany": 100
}

Output sample

{
"_type": "job",
"_schemaVersion": "1.0",
"_source": "smartrecruiters",
"company": "BoschGroup",
"jobId": "744000132704230",
"title": "Digital Marketing Coordinator",
"department": null,
"team": "Manufacturing",
"location": "Lincolnshire, IL, United States",
"allLocations": ["Lincolnshire, IL, United States"],
"workplaceType": "hybrid",
"commitment": "Full-time",
"country": "US",
"url": "https://jobs.smartrecruiters.com/BoschGroup/744000132704230",
"applyUrl": "https://jobs.smartrecruiters.com/BoschGroup/744000132704230?oga=true",
"postedAt": "2026-06-17T18:16:57.596Z",
"updatedAt": null,
"descriptionText": "Company Description... Job Description... Qualifications... Additional Information...",
"_scrapedAt": "2026-06-17T18:20:43.161Z"
}

Use with AI agents (MCP)

This scraper is callable as a tool by AI agents via the Apify MCP server — so assistants like Claude, Cursor, and VS Code can run it and use the structured results mid-conversation, with no glue code.

Simplest path: in a recent Claude Desktop, add the hosted server https://mcp.apify.com under Settings → Connectors and authorize with OAuth. For any config-file client:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}

Then ask in plain language, e.g. "List the open jobs at Visa from its SmartRecruiters board with titles, locations, and apply links." — the agent calls freshactors/smartrecruiters-jobs-scraper with the right input and reads back the JSON. Full setup: Apify MCP docs.

No Apify account? x402-enabled AI agents can also run this actor autonomously and pay per use via the x402 payment protocol — no signup, subscription, or API token required.

Pricing

Volume discounts — applied automatically. Running at scale on a paid Apify plan? The company board fee drops with your plan tier — up to 50% off at Gold and more on Platinum/Diamond, with no start fee and nothing to apply for. Free and Bronze keep the standard price shown below.

Pay-per-event — no subscription. You pay only for the boards you fetch and the postings you receive:

EventPrice (USD)When it fires
Company jobs fetched$0.02Once per company board successfully fetched (with ≥1 open job).
Job posting fetched$0.0005Once per job posting returned.

Worked example — "how much do 100 results cost?" Scrape 5 companies for 100 postings total:

  • Boards: 5 × $0.02 = $0.10
  • Postings: 100 × $0.0005 = $0.05
  • Total: $0.15 for 100 normalized jobs across 5 companies.

(Apify platform usage is billed separately per their standard rates.)

FAQ

I got 0 jobs back — does that company really have no openings? Maybe, but SmartRecruiters can't tell us for certain, and we won't pretend otherwise. Its public Posting API answers with an empty list both when a company genuinely has no current openings and when the company identifier isn't recognised — the two responses are identical, and there is no reliable public signal separating them (we tested the careers-page redirect and rejected it: real companies like Ubisoft and LinkedIn behave exactly like unknown identifiers). So an all-empty run succeeds — it won't fail your daily "any new roles?" poll — but the run summary says plainly that the zero is unverifiable. If you expected jobs, check the identifier at careers.smartrecruiters.com/<company>. Note this ambiguity is specific to SmartRecruiters; on our other ATS scrapers an unknown company returns a real error and the run fails loudly.

Is scraping SmartRecruiters jobs legal? This actor reads public, non-personal job-posting data from companies' own public SmartRecruiters boards — the same data their careers pages serve to any visitor. No login, no personal data. Use responsibly and in line with applicable terms and laws.

Do I need an API key? No. There's no SmartRecruiters API key, account, or login — it reads the public Posting API.

How do I find a company's SmartRecruiters identifier? It's the company segment in the careers URL — jobs.smartrecruiters.com/**Visa**. You can paste either the identifier or the full URL.

Does it include full job descriptions? Yes — includeDescription defaults to true, fetching each posting's detail (company description, job description, qualifications, additional info) as clean text. Turn it off for a faster, list-only run with metadata + the posting URL.

Can I scrape many companies at once? Yes — pass as many identifiers/URLs in companies as you need. Each board is fetched in isolation; a dead or private board is skipped, not fatal. Cap volume with maxJobsPerCompany (1–5000).

Scraping a very large board (1000+ roles)? Run the actor asynchronously rather than with a synchronous Run-and-wait / run-sync call. A synchronous request is held open only for a couple of minutes, and because this actor fetches each posting's full description individually, one very large board can exceed that and time out. Two easy fixes: in the Apify Console click Start (a normal async run — it uses the actor's full timeout, not the sync limit); or via the API use the standard run endpoint (POST /v2/acts/.../runs) and read the dataset once the run finishes. You can also set includeDescription: false for a much faster list-only pass, or lower maxJobsPerCompany.

How often is the data updated? It's live — every run fetches the companies' current public boards. The actor itself is monitored by a daily canary so parsing stays correct as the Posting API evolves.

Other FreshActors tools

FreshActors actorWhat it scrapes
App Store ScraperApple App Store — app details, search, reviews
Google Play ScraperGoogle Play — app details, reviews, search
Microsoft Store ScraperMicrosoft Store — app details, rating windows, search, reviews
VS Code Marketplace ScraperVS Code extensions — install/trending stats, search, reviews
Shopify App Store ScraperShopify App Store — app details, reviews, discovery
Redfin ScraperRedfin — US real-estate listings
Greenhouse & Lever Jobs ScraperGreenhouse + Lever — normalized job postings
Workable Jobs ScraperWorkable — normalized job postings, full descriptions
Recruitee Jobs ScraperRecruitee — normalized job postings + salary
Teamtailor Jobs ScraperTeamtailor — normalized job postings, full descriptions
Personio Jobs ScraperPersonio — normalized job postings, departments + seniority

Reliability

A scheduled daily canary scrapes a known SmartRecruiters board, validates the normalized schema, and alerts the moment a parse changes. When SmartRecruiters shifts its Posting API, we patch the same day and record it in the changelog below. Every record carries _schemaVersion and _scrapedAt.

Changelog

  • 2026-08-03 — Volume discounts added: the per-company board fee now scales down with your Apify plan tier — about 50% off at Gold and 70% off at Diamond, applied automatically with nothing to apply for. Free and Bronze pay exactly what they did before — no price went up, and the per-job price is unchanged.
  • 2026-08-03 — Honest-failure fix: if none of the requested company boards could be fetched, the run now fails loudly and names them, instead of reporting success with zero results (a wrong answer stated confidently). Partial runs are unaffected — they keep every delivered record and list exactly what was unreachable in the run summary, so you can re-run just that slice. Separately, we verified that SmartRecruiters returns an identical empty response for "no current openings" and "unknown company identifier": rather than guess, an all-empty run now succeeds and states that the zero is unverifiable, with a pointer to check the identifier (see the FAQ). No change to pricing, output schema, or the behaviour of runs that return data.
  • 2026-07-08 — Freshness pass: re-verified working across every mode via the daily monitoring battery; documented x402 support (AI agents can run this actor pay-per-use with no Apify account). No change to scraping behavior, output, or pricing.
  • 2026-06-29 — Added guidance for very large boards: run asynchronously (Console Start / API run endpoint) instead of a synchronous Run-and-wait call, which is time-limited. No change to scraping behavior or output.
  • 2026-06-17 — Refreshed the one-click example to BoschGroup (4,600+ live roles with full descriptions) and added a description-quality assertion to the daily canary.
  • 2026-06-02 — v1.0 launch. Per-company Posting API (paginated list + detail-endpoint description enrichment), normalized schema, list-only fast mode, per-company isolation, daily canary monitoring.

Legal note: Reads public, non-personal job-posting data from companies' own public SmartRecruiters boards (the same data their careers pages serve). No login, no personal data. Use responsibly and in line with applicable terms and laws.

Found a problem? Open an issue on the actor — issues are answered fast.