Stepstone.de [Only $1π°] Search Jobs by Url or Keywords
Pricing
from $1.00 / 1,000 results
Stepstone.de [Only $1π°] Search Jobs by Url or Keywords
π° $1 per 1,000 results. Stepstone jobs scraper β paste any stepstone.de/at/fr/dk listing URL, keyword search, or direct job link and get one clean row per posting: title, company, salary, location, skills, dates, labels. Pure HTTP, no browser, no rental.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(9)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
7
Bookmarked
283
Total users
98
Monthly active users
6 hours ago
Last modified
Categories
Share
Stepstone Jobs Scraper β Germany, Austria, France, Denmark
How it works

All-in-one Stepstone jobs scraper β paste any Stepstone listing URL, keyword search, or individual job link and get one clean structured row per posting. Pure HTTP, no browser. Pay only for results you keep ($1 per 1,000 jobs). Works across stepstone.de, stepstone.at, stepstone.fr, jobindex.dk-style flows wherever Stepstone publishes.
| Input | Row(s) emitted |
|---|---|
Search listing URL (e.g. /jobs/it-jobs?β¦) | One row per job on the listing, across all paginated pages |
Work-by-keyword URL (e.g. /work/software-entwickler/in-berlin) | One row per job in the keyword corpus |
Direct job-detail URL (e.g. /stellenangebote--β¦--13865399-inline.html) | One row for that single job |
Keyword + Location filters (when no startUrls) | Builds the URL for you and crawls it |
Pure HTTP. No headless browser, no third-party CF-bypass service. Uses Stepstone's own public unified-resultlist API endpoint via Apify Residential proxy. That's why each row costs $1 per 1,000, not the $19/mo flat fee competitors charge.
- Resolve each input URL β strip
.htmlfrom search URLs, normalize the locale, classify aslistingordetail. - Fetch the listing via Stepstone's
/public-api/resultlist/unifiedResultlistJSON endpoint (no DOM scraping, no JS execution). - Filter out padding β when filters narrow the result set, Stepstone fills the 25-per-page response with
recommendedjobs that don't match your filter. By default we drop onlysection === "recommended";main,regional, andsemantic(all real filter matches that count towardpagination.totalCount) are kept and the output then matches what's visible on the Stepstone page. - Paginate through
unifiedPagination.links.nextuntil you hitmaxItemsor run out of results. - Charge per row kept β Apify's pay-per-event meter only ticks on dataset items you actually take.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
startUrls | array of {url} | optional | Listing URLs, work/keyword URLs, or direct /stellenangebote--... job URLs. When set, the filters below are ignored. |
keyword | string | optional | Free-text search (e.g. software, manager). Used only when startUrls is empty. |
category | string | optional | Category slug (e.g. verwaltung, it-jobs). Used when both startUrls and keyword are empty. Default verwaltung. |
location | string | optional | Location segment for /work/{keyword}/in-{location} (e.g. berlin, deutschland). |
postedWithin | enum all / 1 / 3 / 7 | optional | Stepstone age facet (ag=age_N). Default all. |
includeRelatedJobs | boolean | optional | When false (default), drops the recommended padding section β output matches what the Stepstone page visibly shows (keeps main, regional, semantic). When true, also keeps the recommended items. |
maxItems | integer | optional | Hard cap on rows produced. Default 10000. Apify pay-per-result limit is honoured automatically. |
maxConcurrency | integer | optional | Default 100. |
maxRequestRetries | integer | optional | Default 100. |
proxy | object | optional | Apify Proxy config. Default useApifyProxy: true, RESIDENTIAL. |
Example input
{"startUrls": [{ "url": "https://www.stepstone.de/jobs/it-jobs?action=facet_selected%3bdetectedLanguages%3ben&fdl=en&am=INTERNAL&wfh=2&di=IT" },{ "url": "https://www.stepstone.de/work/software-entwickler/in-deutschland" }],"maxItems": 200,"includeRelatedJobs": false,"postedWithin": "7","proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Output schema
One row per job posting. Sample (real, trimmed):
{"id": 13865399,"title": "Mitarbeiter (m/w/d) Postlogistik & Verwaltung Vollzeit (40 Wochenstunden) Standort DΓΌsseldorf","url": "/stellenangebote--Mitarbeiter-m-w-d-Postlogistik-Verwaltung-Vollzeit-40-Wochenstunden-Standort-Duesseldorf-Duesseldorf-PROSERVCE-Dienstleistungsgesellschaft-mbH--13865399-inline.html?rltr=1_1_25_seorl_m_0_0_0_0_1_0","companyId": 91004,"companyName": "PROSERV!CE Dienstleistungsgesellschaft mbH","companyUrl": "https://www.stepstone.de/cmp/de/proserv%21ce-dienstleistungsgesellschaft-mbh-91004/jobs","companyLogoUrl": "https://www.stepstone.de/upload_DE/logo/P/logoPROSERVICE-Dienstleistungsgesellschaft-mbH-91004DE.gif","datePosted": "2026-04-07T09:35:39+02:00","location": "DΓΌsseldorf","isAnonymous": false,"salary": "","unifiedSalary": {"min": null, "max": null, "currency": null, "period": null,"salaryAvailable": true, "salaryType": null},"workFromHome": "0","section": "main", // real filter match: "main" / "regional" / "semantic" β kept by default. "recommended" = padding, dropped unless includeRelatedJobs=true."labels": [ { "label": "Schnelle Bewerbung", "type": "QUICK_APPLY" } ],"topLabels": [],"skills": [],"textSnippet": "Mitarbeiter (m/w/d) Postlogistik & Verwaltung...","harmonisedId": "ACC40E9E-B26B-48F3-A600-5DF302EBE539","partnership": {"isPartnershipJob": false, "isBackfilled": false,"sourceSiteFriendlyName": "", "isCrossPosted": false},"metaData": { "positionOnPage": 1, "positionAbsolute": 1 },"isHighlighted": false, "isSponsored": false, "isTopJob": false,"isTrafficFromPartner": false, "hasFuturePosting": false,"cvToJobScore": null}
Field reference
| Group | Fields |
|---|---|
| Identity | id, harmonisedId, url, title |
| Company | companyId, companyName, companyUrl, companyLogoUrl, isAnonymous |
| Location & remote | location, postCode, workFromHome (0 on-site, 1 flexible, 2 remote-friendly) |
| Timing | datePosted (ISO-8601 + tz), publishFromDate, publishToDate, hasFuturePosting |
| Compensation | salary (raw), unifiedSalary.{min,max,currency,period,salaryAvailable,salaryType} |
| Classification | labels[] (e.g. QUICK_APPLY), topLabels[], skills[], section (main / recommended / semantic / regional) |
| Content | textSnippet (preview HTML), cvToJobScore (when available) |
| Distribution | partnership.* (cross-post / backfill flags), metaData.positionOnPage, isSponsored, isTopJob, isHighlighted |
Pricing
Pay-per-event (PPE) β $1 per 1,000 jobs returned. You pay only for rows that end up in the dataset, not for crawl attempts or padding rows.
| Event | Charged when | Rate |
|---|---|---|
apify-default-dataset-item | A job row is written to the dataset | $0.001 per row ($1 / 1,000) |
Cost examples:
- Scrape 250 jobs from a search β $0.25
- Scrape 5,000 jobs across multiple keywords β $5.00
- Daily monitoring of 500 newly posted jobs β $0.50 / day = ~$15 / month
Compare to FLAT_PRICE_PER_MONTH competitors at $19.99/mo: you break even at ~20,000 jobs per month. Below that, this actor is cheaper; above that, you'd still want this actor because the flat-rate ones are about to be force-migrated by Apify on October 1, 2026 (rental sunset).
What makes this richer than the competition
| Capability | Other Stepstone scrapers | This actor |
|---|---|---|
| Pricing model | Flat $19.99 / month (rental) β sunsetting Oct 1, 2026 | Pay-per-result $1/1k β survives the rental deprecation |
| Country coverage | Mostly stepstone.de only | stepstone.de + .at + .fr + .dk URL builder |
| Input flexibility | Listing URLs only | Listing URL OR keyword-search URL OR direct job-detail URL OR filter-builder (keyword + location + age) |
| Section filtering | Returns Stepstone's padded recommended / semantic jobs as if they matched your filter | section === "main" strict by default, includeRelatedJobs: true to opt in |
| Pagination | Often capped at page 1 | Full unifiedPagination.links.next walk to maxItems |
| Anti-bot | None or browser-based (slow + expensive) | Pure HTTP via Stepstone's own public unified-resultlist JSON API, behind Apify Residential |
| Pay-per-result enforcement | N/A | Respects ACTOR_MAX_PAID_DATASET_ITEMS + ACTOR_MAX_TOTAL_CHARGE_USD from Apify's charging manager |
| Success rate (live) | varies | 96 % over last 2,500 runs (Apify Store stats) |
Notes & limitations
- No full job-description body in the row. The unified-resultlist endpoint returns
textSnippet(~500 chars of preview), not the full description. If you need the long description, set the input to the job-detail URL form and we'll fetch it; or open an issue describing the use case and we can add afetchDetailsflag. postCodeis oftennull. Stepstone exposes city inlocation, not always postcode.unifiedSalaryis sparse. Most German employers don't publish ranges;salaryAvailable: truemeans the field exists, not that values are populated.workFromHomeis Stepstone's own code:0= on-site,1= hybrid/flexible,2= remote-friendly. There's no documented public mapping; values inferred from observed listings.section: "main"filter is enabled by default. If your filter is narrow (e.g.postedWithin: 1and a niche city), Stepstone may pad the page withrecommendedjobs that don't match β these are dropped. SetincludeRelatedJobs: trueto see them.
FAQ
Q. Does this work for Stepstone subsidiaries (Totaljobs, Cwjobs, Jobsite)?
No. Those run on a different platform under The Stepstone Group umbrella. This actor targets the stepstone.{de,at,fr,dk} domain family. For UK Stepstone-group sites, watch for a sibling actor.
Q. Can I scrape behind a logged-in Stepstone employer account? No. This actor uses the public unified-resultlist endpoint only β no authentication.
Q. Why do I sometimes see fewer jobs than the Stepstone page shows?
Because of section: "main" filtering. The Stepstone page count includes recommended/semantic/regional padding. Set includeRelatedJobs: true if you want parity with the on-page count.
Q. What's the max throughput?
Default maxConcurrency: 100. In practice, ~30β60 listing pages/sec sustained on Apify Residential. Listings cap at ~25 jobs each, so you'll see ~750β1,500 jobs/sec at peak.
Q. Does it respect Apify's pay-per-result limits?
Yes β ACTOR_MAX_PAID_DATASET_ITEMS and ACTOR_MAX_TOTAL_CHARGE_USD are honoured. You can never be charged for more rows than your limit, even if maxItems is higher.
β οΈ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Stepstone GmbH, The Stepstone Group, or any of their subsidiaries or related entities. All Stepstone-related trademarks, service marks, trade names, and logos are the property of their respective owners and are used here solely for descriptive purposes β to identify the public website from which this scraper extracts data.
This Actor accesses only publicly available job-listing pages on stepstone.de, stepstone.at, stepstone.fr, stepstone.dk and similar regional Stepstone domains. You are solely responsible for ensuring that your use of the data complies with Stepstone's Terms of Service, applicable copyright law, the EU Database Directive, GDPR, and any other regulations that may apply to your jurisdiction or use case. Do not use this Actor to bulk-republish copyrighted content, to harass employers or candidates, or to circumvent any rate-limiting or technical protection measure intentionally imposed by Stepstone.
The author provides this Actor "as is", without warranty of any kind, and disclaims any liability for damages arising from its use.
SEO Keywords
stepstone scraper, stepstone jobs scraper, stepstone.de scraper, stepstone.at scraper, stepstone.fr scraper, stepstone.dk scraper, germany jobs api, germany job board scraper, dach jobs scraper, deutschland jobs scraper, europe jobs scraper, job posting api germany, recruiter job market data, hr analytics germany, stepstone job listings, stepstone search api, stepstone bulk export, stepstone csv export, stepstone json export, stepstone unified resultlist, scrape stepstone with apify, apify stepstone actor, pay-per-result stepstone, job aggregator scraper
Support
- For issues or feature requests, please use the Issues section of this actor.
- For further assistance, contact the author:
- Author's website: https://muhamed-didovic.github.io/
- Email: muhamed.didovic@gmail.com
Additional services
- Request customization or a full dataset: muhamed.didovic@gmail.com
- Need other platforms scraped (Totaljobs, Indeed, Glassdoor, Naukri, Reed, CV-Library, β¦)? Contact muhamed.didovic@gmail.com
- For API services of this scraper, reach out to muhamed.didovic@gmail.com
- Explore other scrapers at memo23's Apify profile