StepStone Jobs Scraper
Scrape StepStone jobs in DE, AT, NL and BE by keyword and location. Get company, salary, posted date, remote flag and links. $3.00 per 1,000 jobs.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
keywords,location,site(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.003 per job = $3 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Job returned | Charged per job listing returned in the dataset (empty or blocked searches are not charged). | $0.003 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-13, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
keywords | What to search for, e.g. "software engineer", "marketing manager", "krankenpflege". | string |
location | City or region to search in, e.g. "Berlin", "München", "Wien". Leave empty for nationwide. | string |
site | Which StepStone country site to search. The UK site no longer lists jobs, so it is not offered, and a run asking for it stops before it searches. | string |
sortBy | Relevance is StepStone's usual order. Date gets the newest jobs first, on the German site only; asking for it on another site stops the run before it searches. | string |
experienceLevel | StepStone's own experience filter. A job can carry more than one level, so the same job can come back under two of them. Leave empty for all. | string |
radius | How far from the location to search, in km, using StepStone's own choices. Needs a location. Leave empty for StepStone's default of 30 km. | string |
maxItems | How many job listings to collect. The scraper paginates through results to reach this number (~25 per page). A narrow search can bring back fewer, because only StepStone's own matches are kept. | integer |
notionConnector | Optional. Write each job as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default), results are always saved to the dataset regardless. | string |
notionParentId | Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead. | string |
What you get
A structured dataset — each result includes fields like:
titlecompanylocationsalarypostedTexturlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
4 ready-to-run use cases
Software Engineer Jobs Berlin - Scraped From StepStone
Berlin dev roles off StepStone.de with company, town, posted date and apply link. Salary comes back empty on most of them, because the ads hide pay.
Remote Jobs in Germany: StepStone Marketing Roles
Marketing manager openings nationwide, each with a work-from-home flag, company and apply link. Nothing here is filtered by hand, so read the flag.
English Speaking Jobs Frankfurt - StepStone Sales Ads
Frankfurt sales listings with the description snippet from the card, so you can see which ads are written in English before opening any of them.
SAP Consultant Jobs in Germany - Bulk StepStone Export
Up to 500 SAP listings in one run: title, company, town, posted date, apply link. Pay stays blank unless the ad prints it, which is rare here.
Related tools in Job Market Scrapers
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Remotive Jobs Scraper
Scrape remote jobs from Remotive by keyword or category: company, region, salary, tags and plain-text descriptions. $2.00 per 1,000 jobs.
Multi-ATS Jobs Scraper (Greenhouse, Lever, Ashby)
Scrape open jobs from Greenhouse, Lever and Ashby boards. Get the title, location, department, posted date, description and apply link. $3.00 per 1,000.
LinkedIn Jobs Scraper
Scrape public LinkedIn jobs by keyword, location, URL or ID. Filter by date, workplace type and experience. Full descriptions. $0.80 per 1,000 jobs.
BuiltIn Jobs Scraper
Scrape Built In tech jobs: salary, all locations, skills, seniority, exact posted date. No login, no API key. $0.81 per 1,000.
Dice Jobs Scraper
Scrape Dice jobs: title, company, location, type, posting age and apply URL. Descriptions optional. No login. $0.90 per 1,000 jobs.
SEEK Jobs Scraper
Scrape SEEK jobs in Australia and New Zealand: salary ranges, workplace type and full descriptions. No login. $0.81 per 1,000, flat at every volume.
Where this tool sits
- Categories
- Job Market Scrapers
- Platforms
- Job Boards & ATS
StepStone Jobs Scraper: job listings from Germany, Austria, the Netherlands and Belgium
Pick the country site, type a keyword and a city, and the job cards come back as rows: the title, the company, the location, the remote flag, how long ago it was posted, a short excerpt and the link. StepStone runs a separate site per country and they do not even agree on the word for a job, so the country is a choice you make first rather than something guessed from your location.
Two things to set expectations. You get what is on the results card, not the full advert, and salary is null on most rows because most StepStone listings never publish one.
| Input | A keyword, optionally a city, and which country site |
| Output | One row per job card |
| Ceiling | 2,000 jobs per run |
| Account needed | None, no login |
| Price | $3.00 per 1,000 jobs, flat on every plan |
💼 What StepStone Jobs Scraper does
It searches one of four StepStone sites, Germany, Austria, the Netherlands or Belgium, and pages through the results until it has as many jobs as you asked for. About 25 jobs per page.
The country comes from the site you pick, not from where the run happens, so the Austrian site gives you Austrian jobs wherever you are, and the Dutch site is read under its own vacatures path without you having to know that.
Your keyword and city are turned into the search path StepStone expects. German umlauts are converted the way StepStone converts them, so München searches muenchen. Other accents and symbols are not: Liège becomes li-ge and C++ becomes c. Spell the term plainly and you will get what you meant.
When StepStone runs out of matches it fills the page with other jobs: ones nearby whose titles do not match, ones further away, and recommendations. Those are left out on every search, so you get and pay for StepStone's own matches only. A niche title in a small town can come back with fewer jobs than you asked for, and a search with no matches at all ends as NO_RESULTS.
Paging stops when it has your number, after 50 pages, or when two pages in a row bring nothing new. A run also has a four-minute budget, so it ends rather than grinding at a search it is not going to win.
📥 What you give it
{
"keywords": "software engineer",
"location": "Berlin",
"site": "de",
"maxItems": 100
}
| Field | Default | What it is |
|---|---|---|
keywords | none, and required | The job title or search terms. The local language works: krankenpflege, vertrieb. The form starts with software engineer. |
location | none | A city or region such as Berlin, München, Wien. Leave it empty for a nationwide search. |
site | de | de, at, nl or be. The UK site no longer lists jobs, so uk stops the run before it searches. |
sortBy | relevance | relevance is StepStone's usual order. date gets the newest jobs first, on the German site only. |
experienceLevel | none | none (no experience needed), experienced or manager (managing people). One job can carry more than one level. |
radius | none | 5, 10, 20, 30, 40, 50, 75 or 100 km around location. Needs a location. Empty means StepStone's own 30 km. |
maxItems | 25 | How many jobs to collect, 1 to 2,000. This is your spending cap. |
notionConnector | none | Optional. Write each job into Notion as a page when the run finishes. Authorize the connector once under Settings, API and Integrations, MCP connectors, then pick it here. |
notionParentId | none | Optional. The Notion data source to write into. Empty creates the pages privately in your workspace. |
proxyConfiguration | on | Optional. Leave it as it is unless you need the run to go out through your own servers. |
📤 What you get back
A real row from a recent run on the German site:
{
"ok": true,
"site": "de",
"jobId": "14516532",
"title": "Software Engineer System Metrology (m/f/x)",
"company": "ZEISS",
"location": "Oberkochen bei Ulm",
"salary": null,
"postedText": "vor 2 Tagen",
"workFromHome": false,
"snippet": "Step out of your comfort zone, excel and redefine the limits of what is possible. That’s just what our employees are doing every single day – in order to set the pace through our innovations and enable outstanding achievements. ...",
"url": "https://www.stepstone.de/stellenangebote--Software-Engineer-System-Metrology-m-f-x-Oberkochen-bei-Ulm-ZEISS--14516532-inline.html"
}
The excerpt is cut short above. The real one ends where StepStone cuts its own card off.
| Field | What it is |
|---|---|
jobId | StepStone's listing id, taken from the URL. null when the link carries none. Use it as your dedupe key. |
company | The hiring company, or null when the card does not name one. |
salary | Only when the listing publishes one, which most German listings do not. |
postedText | Exactly as the card shows it, in the site's own language, for example vor 2 Tagen. It is text, not a date, so parse it yourself if you need one. |
workFromHome | The card's remote badge as true or false. |
snippet | The excerpt from the card, a couple of sentences. |
site | Which country site the row came from, useful when you run several. |
🧾 Reading the output
| Row | How to spot it | Charged |
|---|---|---|
| A job | ok: true | yes |
| A partial row | ok: false and partial: true | no |
| A diagnostic | ok: false with an errorCode | no |
Partial rows are worth understanding. If a search stops part-way, the jobs already collected are still written to your dataset, marked ok: false, partial: true, and none of them are charged. You keep the data and pay nothing for it. Run the search again for the rest.
The Console's overview table hides ok and partial, so those free rows look exactly like paid ones there. Filter on ok in the JSON if the difference matters to you.
| Code | What it means |
|---|---|
BAD_INPUT | No keyword was given, or a setting that cannot work, such as the uk site, date order outside the German site or a radius with no location. Nothing was searched. |
PARSE_ERROR | The page did not say which jobs were StepStone's own matches, so none were delivered. Run it again. |
SORT_IGNORED | You asked for date order and StepStone sent the page in another order, so none of it was delivered. |
NO_RESULTS | The search ran and StepStone had no matches for it. If it showed other jobs instead, the row says how many were left out. Try a broader keyword or drop the city. |
BLOCKED | StepStone answered with a verification page instead of results. Run it again. |
DEADLINE | The run reached its four-minute budget. Everything already delivered is complete. |
▶️ How to run it
1. Open StepStone Jobs Scraper and click Try for free. 2. Pick the StepStone site for the country you want. 3. Type your Keywords, and a Location if you want one city. 4. Set Max jobs, then click Start. 5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost?
$3.00 per 1,000 jobs. Flat on every Apify plan, no volume tiers.
You pay per job row that arrives complete. Diagnostic rows, partial rows from a search that stopped early, and a search that matches nothing are all free, so a run that brings back no jobs costs you nothing. The other jobs StepStone shows once its matches run out are never delivered, so never charged.
💡 What people use it for
- Tracking who is hiring for a role in one German city, weekly, and diffing on
jobId. - Comparing the same role across the four country sites in four runs.
- Pulling the companies hiring in a sector as a prospect list, from the
companycolumn. - Watching how long postings stay up, by scheduling and reading
postedTextover time. - Feeding titles and excerpts into a model to sort listings into the ones worth reading.
🚧 What it does not do
- Card data only. The full advert lives on the listing's own page and is not fetched.
- No salary on most rows. StepStone shows one when the employer published one, and usually the
employer did not.
postedTextis not a date. It is the site's own wording, in the site's language.- Four countries. Germany, Austria, the Netherlands and Belgium. The UK site stopped listing jobs,
so uk is refused before anything is searched.
- No contract type or salary range filter. Keyword, city, radius, experience and order are what it
takes.
- Newest first on the German site only. Asking for it on another site stops the run before it
searches.
- No company profiles, no recruiter contacts, and it does not apply to anything.
- Special characters in the search term are flattened. Plain spelling works best.
- Rows are a snapshot. A listing can be filled or pulled after it was read.
🧭 Which job scraper do you need?
| If you want | Use |
|---|---|
| StepStone jobs in DE, AT, NL or BE | This one |
| Jobs in Germany, Austria and Switzerland from XING | XING Jobs Scraper |
| Jobs in France | HelloWork Jobs Scraper |
| Startup jobs with the full description | Wellfound Jobs Scraper |
| Hackathons, internships and student jobs in India | Unstop Scraper |
❓ Questions people ask
Do I need a StepStone account? No. It reads what any visitor sees.
Can I search in German? Yes, and you should. krankenpflege will find more than nursing on the German site.
Why is salary empty? Because the employer did not publish one. Nothing is estimated here, so the field stays null rather than being filled with a guess.
Can I get the full job description? Not from this one. You get the card excerpt and the link.
Why did I get fewer jobs than I asked for? StepStone ran out of matches, and the other jobs it showed after them were left out.
What happens if the search gets stopped part-way? You keep the jobs already collected, marked partial: true, and you are not charged for them.
Is it stable enough to schedule? Yes. jobId comes from StepStone and does not change between runs.
Is this legal? These are public job listings naming companies rather than people. Apify's write-up on scraping and the law is a good start, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the keyword, the site and the run ID. A search you know has results coming back as NO_RESULTS is worth reporting, because it usually means the page layout moved.