ParseForge Scrapers

StepStone Scraper

parseforge/stepstone-scraper

JobsLead generationAutomation

Scrape StepStone.de job listings with full descriptions, employer benefits and geo coordinates. Export to CSV, Excel, JSON or XML.

Run this scraper See the API call
Total runs
6
Bookmarked
0
Last modified
3 days ago

This scraper was last updated on .

What does the StepStone Scraper return?

ParseForge Banner

๐Ÿ’ผ StepStone Scraper

๐Ÿš€ Export Germany's largest job board in seconds. 34 fields per posting, the employer benefits list StepStone shows on the ad, and exact ISO posting timestamps instead of "vor 12 Stunden".

StepStone.de is the biggest job board in the German-speaking market, and it sits behind an Akamai edge that answers a plain HTTP request with Access Denied. This Actor gets past that with German residential routing and reads the same server-rendered result list the site builds for a real browser, so the data you get is the data StepStone actually published. Paste a search URL such as https://www.stepstone.de/jobs/software-engineer, paste a single job ad, or just type a keyword and a city and let the Actor build the search for you.

Measured on live runs while building this Actor: software-engineer returns 4,650 postings across 186 pages, manager returns 25,665 across 1,027 pages, and page 1,027 hands back the exact 15-item remainder rather than looping. A 5-job run with full detail pages finished in 14 seconds. Every one of the 34 fields was populated on the verification run, benefits ran 8 to 20 entries per ad, and descriptions ran 2,900 to 7,600 characters.

๐ŸŽฏ Target Audience ๐Ÿ’ก Primary Use Cases
Recruiters and talent intelligence teams in DACH Track which competitors are hiring, where, and on what contract terms
HR and compensation teams Benchmark the benefits packages employers actually advertise, by sector and region
Job board and aggregator operators Feed a niche German board with fresh postings, deduplicated and geo-coded
Market researchers and investors Read hiring velocity by sector as an expansion signal
Job seekers and career coaches Export every matching role into a spreadsheet and filter it your own way

๐Ÿ“‹ What the StepStone Scraper does

  • ๐Ÿ”“ Gets through the Akamai edge. StepStone answers a normal HTTP client with a 403 and occasionally serves an interstitial challenge instead of the page. The Actor routes through German residential IPs and retries on a rotated session, so a challenge costs a second, not a run.
  • ๐ŸŽ Employer benefits, as a list. Every ad carries the benefit chips the employer paid to display, from Betriebliche Altersvorsorge to Dienstrad. The Actor returns them as a clean array of 8 to 20 entries. Nothing else in this niche extracts them.
  • ๐Ÿ•ฐ Exact posting timestamps. StepStone shows visitors Erschienen: vor 12 Stunden. The Actor returns datePosted as a real timestamp with timezone offset, plus a plain postedDate for grouping.
  • ๐Ÿงญ Geo coordinates and postal codes. Latitude, longitude and the German postal code come straight off the ad, so postings map without a geocoding step.
  • ๐Ÿ“ No depth cap. A query is exhaustible to its last result. manager paginates cleanly through all 1,027 pages and stops, with no wrap-around and no duplicate rows.
  • ๐ŸŽ›๏ธ Every StepStone filter. Posting age, home office, full or part time, 13 contract types, 3 experience levels, 28 disciplines, 31 sectors, ad language and application method, each one taken from StepStone's own live facet list rather than invented.
  • ๐Ÿ“ Description twice. descriptionText is clean plain text with German entities decoded, ready for an LLM or a spreadsheet. descriptionHtml keeps the original markup for rendering.
  • โšก Two speeds. Full detail mode opens every ad for benefits, coordinates and the description. Listing-only mode collects 25 jobs per request when you just need titles, companies and links.

๐Ÿ’ก Why it matters: the benefits package and the exact posting date are the two things a DACH hiring analyst reads a job ad for, and they are the two StepStone does not hand you in a usable form. This Actor returns both on every row.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

๐Ÿ“Š Output

Every run writes one flat row per job posting. 34 fields, always the same keys, so the dataset is safe to load straight into a pipeline. Fields the source withholds on a given ad carry Not Disclosed rather than an empty cell.

Field Type Description
๐Ÿ–ผ imageUrl string Employer logo hosted by StepStone
๐Ÿ“Œ title string Job title as published
๐Ÿ”— url string Public job ad URL
๐Ÿ†” jobId number StepStone posting ID
๐Ÿข companyName string Hiring company
๐Ÿท companyId number StepStone company ID, stable across postings
๐ŸŒ companyUrl string Company profile page on StepStone
๐Ÿ•ต isAnonymousEmployer string Yes when the employer hides its identity
๐Ÿ“ location string Work location as StepStone displays it
๐Ÿ“ฎ postalCode string German postal code
๐ŸŒ country string ISO country code
๐Ÿงญ latitude number Latitude of the work location
๐Ÿงญ longitude number Longitude of the work location
๐Ÿ•ฐ datePosted string Exact publication timestamp with timezone offset
๐Ÿ“… postedDate string Publication date, YYYY-MM-DD
โณ validThrough string When the posting expires
๐Ÿ’ผ employmentType string FULL_TIME, PART_TIME, INTERN and so on
๐Ÿ“ contractType string StepStone's German contract label, e.g. Feste Anstellung
๐Ÿ•“ workType string e.g. Vollzeit, Teilzeit, Homeoffice mรถglich
๐Ÿ  homeOffice string No, Partial or Full
๐Ÿญ industry string StepStone's discipline and sub-discipline
โšก directApply string Yes when the application completes on StepStone
๐Ÿš€ quickApply string Yes when the ad carries the quick-apply badge
โœ‰๏ธ coverLetterRequired string No when the ad says a cover letter is not needed
๐Ÿ“ฃ isSponsored string Yes for promoted, top-job or highlighted placements
๐Ÿ—‚ resultSection string Whether StepStone ranked the hit as a main or semantic match
โœ‚๏ธ textSnippet string The teaser StepStone shows on the result card
๐Ÿ“„ descriptionText string Full ad text, HTML stripped, entities decoded
๐Ÿงพ descriptionHtml string Full ad, original HTML
๐ŸŽ benefits array Employer benefit chips shown on the ad
๐Ÿ… labels array Badges such as "Anschreiben nicht erforderlich"
๐Ÿ”Ž searchUrl string The page this row was collected from
๐Ÿ•’ scrapedAt string ISO timestamp of collection
โŒ error string Populated only on a row that reports a failure

Three real records from a verification run on https://www.stepstone.de/jobs/software-engineer:

{
  "imageUrl": "https://www.stepstone.de/upload_DE/logo/E/logoAtotech-Deutschland-GmbH-Co-KG-8107DE-2208291700.gif",
  "title": "Software Engineer, Commissioner (w/m/d)",
  "url": "https://www.stepstone.de/stellenangebote--Software-Engineer-Commissioner-w-m-d-Feucht-bei-Nuernberg-Atotech-Deutschland-GmbH-Co-KG--14445878-inline.html",
  "jobId": 14445878,
  "companyName": "Atotech Deutschland GmbH & Co. KG",
  "companyId": 8107,
  "location": "Feucht (bei Nรผrnberg)",
  "postalCode": "90537",
  "country": "DE",
  "latitude": 49.35676,
  "longitude": 11.204779,
  "datePosted": "2026-09-01T08:54:46+02:00",
  "postedDate": "2026-09-01",
  "validThrough": "2026-10-01T07:15:11.65Z",
  "employmentType": "FULL_TIME",
  "contractType": "Feste Anstellung",
  "workType": "Vollzeit",
  "homeOffice": "No",
  "industry": "IT, IT-Softwareentwicklung",
  "directApply": "Yes",
  "benefits": ["Betriebskantine", "Coaching-Angebote", "Betriebsarzt im Unternehmen", "Betriebliche Altersvorsorge", "Flexible Arbeitszeiten", "Gute Verkehrsanbindung", "Homeoffice", "Parkplatz"],
  "scrapedAt": "2026-09-01T18:26:40.978Z",
  "error": null
}
{
  "title": "Software Engineer (w/m/d) AWION",
  "url": "https://www.stepstone.de/stellenangebote--Software-Engineer-w-m-d-AWION-Holzwickede-Rhenus-Group--14438282-inline.html",
  "jobId": 14438282,
  "companyName": "Rhenus Group",
  "companyId": 55272,
  "location": "Holzwickede",
  "postalCode": "59549",
  "country": "DE",
  "datePosted": "2026-08-31T04:10:06+02:00",
  "validThrough": "2026-09-30T07:28:49.157Z",
  "employmentType": "FULL_TIME",
  "contractType": "Feste Anstellung",
  "workType": "Vollzeit",
  "industry": "IT, IT-Softwareentwicklung",
  "coverLetterRequired": "No",
  "benefits": ["Bonus", "Betriebskantine", "Karrierechancen", "Dienstrad", "Mitarbeiter-Laptop", "Kostenfreie Getrรคnke", "Umfangreiche Einarbeitung", "Mitarbeiterrabatte", "Ergonomischer Arbeitsplatz", "Flache Hierarchien", "Flexible Arbeitszeiten", "Homeoffice", "Firmenevents- und Veranstaltungen", "Ein modernes Arbeitsumfeld", "Bรผrokรผche", "Eigene Ideen", "Parkplatz", "Unbefristeter Arbeitsvertrag", "Tรคtigkeit in Festanstellung", "Weiterbildungsmรถglichkeiten"],
  "labels": ["Anschreiben nicht erforderlich"],
  "error": null
}
{
  "title": "Software Engineer (m/w/d) fรผr hardwarenahe Algorithmik (Informatik, Elektrotechnik oder Physik)",
  "jobId": 14342448,
  "companyName": "Diehl Defence GmbH & Co. KG",
  "companyId": 98925,
  "location": "รœberlingen am Bodensee",
  "postalCode": "88662",
  "latitude": 47.75776,
  "longitude": 9.187225,
  "datePosted": "2026-08-29T04:54:53+02:00",
  "employmentType": "FULL_TIME",
  "contractType": "Feste Anstellung",
  "workType": "Vollzeit",
  "industry": "Ingenieurwesen, Ingenieurwesen-Elektrotechnik",
  "benefits": ["Betriebskantine", "Coaching-Angebote", "Firmenwagen", "Betriebsarzt im Unternehmen", "Firmenhandy", "Betriebliche Altersvorsorge", "Mitarbeiterrabatte", "Fitnessangebote", "Flexible Arbeitszeiten", "Homeoffice", "Firmenevents- und Veranstaltungen", "Essenszulage", "Vorsorgeuntersuchung", "Parkplatz", "Sportaktivitรคten"],
  "error": null
}

โœจ Why choose this Actor

  • ๐ŸŽ The benefits array. Employers pay StepStone to display a benefits package. Those chips are structured data on the page and this Actor returns them as an array. It is the single field a compensation or employer-branding analyst opens a German job ad for.
  • ๐Ÿงญ Geo-ready out of the box. Coordinates and postal codes mean postings plot on a map with no geocoding bill attached.
  • ๐Ÿ“ Exhaustible queries. Deep pagination was tested to the last page of a 25,665-result query. You can take a whole segment, not the first few hundred rows.
  • ๐Ÿ›ก๏ธ Honest about the wall. StepStone hides salary from logged-out visitors. This Actor does not ship a salary column that would be empty on every row, and says so up front rather than after purchase.
  • ๐Ÿงฑ Stable field contract. The same 34 keys on every row, sentinels instead of nulls, so a CSV import or a database load never breaks on a missing column.
  • โš™๏ธ Filters taken from the source. Every dropdown value was read off StepStone's live facet tree and verified against a result count, so no filter silently returns the unfiltered set.

๐Ÿ“ˆ How it compares to alternatives

This Actor Typical StepStone scrapers
Employer benefits list โœ… 8 to 20 chips per ad, as an array โŒ Not extracted
Geo coordinates โœ… Latitude, longitude, postal code โš ๏ธ Usually city name only
Posting date โœ… Exact timestamp with offset โš ๏ธ Often the relative "vor 12 Stunden" string
Pagination depth โœ… Tested to page 1,027 of 1,027 โš ๏ธ Commonly capped in the low hundreds
Salary โŒ Login-walled by StepStone, so not shipped โš ๏ธ Advertised by several, though the logged-out page does not carry it
Filters โœ… 10 facets, values read from the live source โš ๏ธ Keyword and location only
Description โœ… Plain text and HTML โš ๏ธ Often the short teaser snippet
Null handling โœ… Not Disclosed sentinels, fixed 34-key schema โš ๏ธ Missing keys and empty cells

On salary, plainly: StepStone renders a "Gehalt anzeigen" button to logged-out visitors instead of a figure, and its own front-end config carries salaryInfo: "disabled". There is no salary on the public page to extract. Rather than ship a column that is empty on every row, this Actor omits it. If salary is the field you need, the honest answer is that no logged-out StepStone scraper can give it to you.

๐Ÿš€ How to use

  1. Create a free Apify account. New accounts get $5 in free credit, no card required: sign up here.
  2. Open the Actor and go to the Input tab.
  3. Choose how to search. Either paste StepStone URLs into the URL field, or leave it empty and type a keyword and a location instead. A single job ad URL works as well as a search page.
  4. Set Max Items. Start with 10 to see the shape of the data, then raise it once you are happy.
  5. Pick your filters. Posting age, home office, contract type, sector and the rest are optional; StepStone applies them itself, so the reported result total already reflects your choices.
  6. Decide on detail depth. Leave "Scrape Full Job Details" on for benefits, coordinates and full descriptions. Turn it off for a fast titles-and-links run.
  7. Click Start, then download the results as CSV, Excel, JSON or XML, or pull them from the dataset API.
{
  "searchKeyword": "software engineer",
  "location": "Berlin",
  "postedWithin": "age_7",
  "jobLanguage": "en",
  "maxItems": 200
}

๐Ÿ’ผ Business use cases

Competitive hiring intelligence

Run the same keyword and sector filter weekly and diff the results. A competitor opening 12 Vertrieb und Verkauf roles in Nordrhein-Westfalen inside a fortnight is a go-to-market expansion you can see before the press release. companyId is stable across postings, so the diff is reliable even when a company renames a role.

Benefits and employer-branding benchmarking

The benefits array turns an unstructured perk list into countable data. Pull 5,000 ads in a sector and you can say what share of employers advertise Betriebliche Altersvorsorge, Homeoffice or Dienstrad, and how a client's package ranks against its actual competitors for the same candidates.

Job board and aggregator supply

Filter by discipline or sector, run on a schedule, and feed the rows straight into your own board. validThrough tells you when to expire a listing, directApply tells you whether the application completes on StepStone, and the deduplicated job URL is a natural primary key.

Recruitment market research

postedDate, industry, contractType and homeOffice across tens of thousands of ads give you hiring velocity by sector, the real share of remote-friendly roles in the German market, and the drift from permanent contracts toward Befristeter Vertrag over time.

๐Ÿ”Œ Automating StepStone Scraper

  • Make and Zapier: trigger on every new dataset item and route new postings into a CRM, an ATS or a Google Sheet.
  • Slack: post a daily digest of new roles matching a saved search into a recruiting channel.
  • Airbyte: sync the dataset into Snowflake, BigQuery or Postgres for joins against your own company list.
  • GitHub Actions: call the Actor on a cron and commit the JSON to a repo for a versioned, diffable hiring history.
  • Google Drive: drop a fresh CSV into a shared folder every morning for the team to work from.
  • Apify Schedules: run the same search nightly with postedWithin set to the last 24 hours for a pure new-postings feed.

๐ŸŒŸ Beyond business use cases

  • Research. Labour economists can study regional wage-adjacent signals, remote-work adoption and sector demand across the largest German-speaking job market, with real timestamps rather than scraped relative strings.
  • Personal. A job seeker can export every matching role in their state into a spreadsheet, sort by benefits that actually matter to them, and stop re-reading the same site every evening.
  • Non-profit. Career-guidance and refugee-integration organisations can build local, filtered job lists for the people they support, including English-language roles via the ad-language filter.
  • Experimentation. The plain-text descriptions are clean enough to feed straight into an LLM for skill extraction, seniority classification or automated matching without a cleanup pass.

๐Ÿค– Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or your assistant of choice:

I am using the ParseForge StepStone Scraper on Apify (parseforge/stepstone-scraper). It returns one row per StepStone.de job posting with 34 fields, including benefits (an array of employer benefit chips), latitude, longitude, postalCode, datePosted as an exact ISO timestamp, contractType, workType, homeOffice, industry and the full ad as both descriptionText and descriptionHtml. Salary is not included because StepStone hides it from logged-out visitors. Help me design a weekly hiring-intelligence report from this dataset.

โ“ Frequently Asked Questions

๐Ÿ” Does this need a StepStone login?

No. It reads only what StepStone serves to the public, and no account or cookie is involved.

๐Ÿ’ฐ Why is there no salary field?

StepStone shows logged-out visitors a "Gehalt anzeigen" button instead of a number, and its own page config disables salary display. There is no salary on the public page to read, so shipping a salary column would mean shipping an always-empty one.

๐ŸŒ Does it work outside Germany?

This Actor targets stepstone.de, the German site. StepStone's other national sites use different domains and are not covered here.

๐Ÿ›ก๏ธ Why does it need a proxy?

StepStone sits behind Akamai and answers non-German IPs with Access Denied on every path. German residential routing is on by default and is the only configuration verified to reach the site. Turning it off will almost certainly return nothing.

๐Ÿ“„ How many results can I get from one search?

As many as the search has. Pagination was verified to the last page of a 25,665-result query, page 1,027 of 1,027, with no wrap-around and no repeated rows.

๐Ÿ“ How many jobs come back per request?

25, which is StepStone's fixed page size. Requests for a larger page are ignored by the site, so the Actor does not pretend to offer that knob.

โšก How do I make a run faster?

Turn off "Scrape Full Job Details". Listing-only mode collects 25 jobs per request and skips the per-ad page, at the cost of benefits, coordinates and the full description.

๐ŸŽฏ Can I scrape one specific job ad?

Yes. Paste the job URL into the URL field. Search pages and single ads can be mixed freely in the same run.

๐Ÿ” Are duplicates removed?

Yes. Rows are deduplicated on the canonical job URL across every search page and direct URL in the run, so a posting that appears in two searches is billed and delivered once.

๐Ÿ‡ฉ๐Ÿ‡ช Why are some values in German?

Because StepStone publishes them in German. contractType, workType, industry and benefits keep the source's exact wording so they match the site and stay joinable; the schema's dropdown labels carry English glosses alongside them.

๐Ÿ• What does validThrough mean?

The date StepStone expects the posting to expire. It is useful for ageing out listings in a downstream board.

โฐ Can I get only today's jobs?

Yes. Set "Posted Within" to the last 24 hours, or sort by date and cap Max Items.

๐Ÿ”Œ Integrate with any app

Results are available through the Apify API and the dataset endpoint in JSON, CSV, Excel and XML, so anything that speaks HTTP can consume them. Schedules, webhooks and the Apify integrations catalogue cover the rest.

๐Ÿ”— Recommended Actors

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection.

๐Ÿ†˜ Need Help? Open our contact form

โš ๏ธ Disclaimer: this is an independent tool and is not affiliated with, endorsed by, or connected to StepStone GmbH, The Stepstone Group, or any employer whose posting it collects. It gathers only publicly available data.

What input does the StepStone Scraper accept?

FieldTypeWhat it doesDefault
startUrls array Paste StepStone search result pages or single job ad pages, for example https://www.stepstone.de/jobs/software-engineer or https://www.stepstone.de/stellenangebote--...--14445878-inline.html. Leave empty to build the search from the fields below. [{"url":"https://www.stepstone.de/jobs/s
searchKeyword string Job title, skill or company to search for, exactly as you would type it into the StepStone search box. Ignored when StepStone URLs are supplied above. not set
location string City, region or postal code, for example Berlin, Nordrhein-Westfalen or 10115. Leave empty to search all of Germany. not set
searchRadius string (2 options) StepStone collapses every radius below 100 km into one default catchment area, so only these two settings actually change the result count. not set
sortBy string (2 options) Relevance is StepStone's own ranking. Date returns the newest postings first, which is what you want for a daily job feed. 1
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10
scrapeJobDetails boolean Open every job ad to add the full description, employer benefits, contract type, work type, industry, postal code and geo coordinates. Turn this off for a fast, listing-only run that uses one request per 25 jobs. true
postedWithin string (3 options) Only return postings published inside this window. not set
workFromHome string (3 options) Filter by how much of the role can be done from home. not set
workType string (3 options) Full time or part time. not set
contractType string (14 options) StepStone's contract categories, in the site's own German wording. not set
experienceLevel string (4 options) Filter by the experience StepStone assigns to the posting. not set
discipline string (29 options) StepStone's job family, for example IT or Ingenieurwesen. not set
sector string (32 options) The employer's industry, using StepStone's own sector list. not set
jobLanguage string (3 options) The language the job ad itself is written in, as detected by StepStone. Useful for finding English-language roles in Germany. not set
applicationMethod string (3 options) Whether the application is completed on StepStone or on the employer's own website. not set
proxyConfiguration object StepStone is behind Akamai and only answers German residential IPs, so residential proxies with country DE are on by default. Changing this will usually stop the run from returning data. {"useApifyProxy":true,"apifyProxyGroups"

How much does the StepStone Scraper cost?

from $2.00 per 1,000 results

Charged forWhat it isPrice each
Job posting One StepStone job posting delivered to the dataset, with 34 fields including employer benefits, geo coordinates and the full description. Failed rows are never charged. $0.002 to $0.0025

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the StepStone Scraper API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~stepstone-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [
      {
        "url": "https://www.stepstone.de/jobs/software-engineer"
      }
    ],
    "sortBy": "1",
    "maxItems": 10,
    "scrapeJobDetails": true,
    "proxyConfiguration": {
      "useApifyProxy": true,
      "apifyProxyGroups": [
        "RESIDENTIAL"
      ],
      "apifyProxyCountry": "DE"
    }
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "startUrls": [
    {
      "url": "https://www.stepstone.de/jobs/software-engineer"
    }
  ],
  "sortBy": "1",
  "maxItems": 10,
  "scrapeJobDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}

What do users say about the StepStone Scraper?

No reviews yet. Be the first.

How do I report an issue with the StepStone Scraper?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run StepStone Scraper on Apify All scrapers