StepStone.de - German Jobs, Employers & Salaries avatar

StepStone.de - German Jobs, Employers & Salaries

Pricing

from $1.20 / 1,000 job results

Go to Apify Store
StepStone.de - German Jobs, Employers & Salaries

StepStone.de - German Jobs, Employers & Salaries

Scrape StepStone.de jobs by keyword, location, filters, or URL. Extract 35+ fields including employer, logo, location, posting date, home-office status, and optional full descriptions, GPS, employment type, and company profiles.

Pricing

from $1.20 / 1,000 job results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Share

StepStone.de Jobs Scraper

Scrape job postings from StepStone.de — Germany's #1 job platform. Fast, reliable. Returns 35+ listing fields per job. Optional detail enrichment adds 12 extra fields including the full German description, GPS coordinates, employment type, and company profile. Supports search by keyword, location and seven working filters, plus URL paste mode.

Key features

  • Search mode — keyword + location plus working-hours, contract-type, date, home-office, language, experience and apply-method filters. One run per location. Leave locations empty to search all of Germany.
  • URL mode — paste one or more StepStone.de search-result URLs; each is expanded page by page.
  • Detail enrichment (fetchDetails) — adds full description (HTML + plain text), structured address with lat/lng, employment type, contract type, work type, valid-through date, company profile (benefits, industries, size, logo, videos), and best-effort recruiter contact harvesting from tel:/mailto: links and the description text.
  • 35+ SERP fields — title, employer (name, id, logo URL, profile URL), location text, date posted, work-from-home status, labels, text snippet, partnership info.
  • Resume & recurring updates built in (resumeFromRunId continues an interrupted run; incremental mode (NEW/UPDATED/REAPPEARED/EXPIRED) remembers state across scheduled daily/weekly runs — no dataset ID to paste each time).
  • MCP connector export — pipe results into Notion / Linear / Airtable / Apify (discovery from the input form, no extra config).

Filters — what each one actually does

Every filter below was measured live against the search python in Berlin, which returned 310 jobs with no filter applied. The number is how many of those 310 remain when the filter is set. Nothing is advertised here that does not move the result count.

FieldValueJobs left (of 310)
workTypevollzeit (full time)278
teilzeit (part time)57
contractTypepermanent (Feste Anstellung)261
student (Werkstudent)19
fixed-term (Befristeter Vertrag)6
internship (Praktikum)6
freelance (Freie Mitarbeit)5
apprenticeship (Ausbildung, Studium)4
trainee (Berufseinstieg)3
doctorate (Promotion/Habilitation)3
datePosted1 (last 24 hours)22
7 (last 7 days)116
14254
30309
workFromHomeremote (Nur Home-Office)15
hybrid (Teilweise Home-Office)208
jobLanguagede (German advert)222
en (English advert)86
experienceLevelexperienced (Mit Berufserfahrung)264
entry (Ohne Berufserfahrung)83
management (Mit Personalverantwortung)6
applyMethodcompany-website170
quick-apply (Schnelle Bewerbung)112
sortByrelevance / date310 — sorting changes the order, not the match count

All eight filters combine: vollzeit + permanent + last 7 days + German + hybrid + experienced + company-website + newest-first returns 27 of the 310.

What StepStone.de does not offer

  • No salary filter. The site's salary facet exists but ships no options at all, so this actor deliberately has no minimum-salary input rather than a switch that silently does nothing.
  • No salary in listing results either. Across a 25-job sample every salary and unifiedSalary.min/max came back empty (19 of 25 were flagged "salary available" while still publishing no figure). salary is returned for completeness and is usually null.
  • No employer-vs-agency filter, and no salary or distance sort — StepStone.de offers relevance and most-recent only.
  • No per-advert language field. Ad language exists as a search filter (jobLanguage) but the job pages expose no language attribute, so there is no language column in the output.
  • skills, postCode, travelTime, publishFromDate/publishToDate and crossPostedCount were empty for all 25 jobs in the sample — the site serves them as null, and detail enrichment does not fill them either.

Input reference

SectionFieldDescription
Modemodesearch (filters) or url (paste links)
Search modelocationsArray of cities/regions; prefilled ["Berlin"]. Empty = all of Germany
keywordsJob title or skill (e.g. Softwareentwickler)
workTypevollzeit or teilzeit
contractTypepermanent, fixed-term, trainee, freelance, apprenticeship, internship, student, doctorate
datePostedDays: 1, 7, 14, 30
workFromHomeremote or hybrid
jobLanguagede or en
experienceLevelentry, experienced, management
applyMethodquick-apply or company-website
sortByrelevance or date
URL modeurlsArray of StepStone.de SERP URLs; each paginated forward
Output & limitsfetchDetailsFetch full detail pages (needs Residential DE proxy)
maxListingsThe cap — total jobs to collect (default 20; 0 = unlimited)
maxPagesOptional page cap per search (default 0 = unlimited — stops at Max jobs or the site's last page)
maxResidentialRequestsSafety cap on residential proxy usage (0 = unlimited)
Resume & recurringresumeFromRunIdContinue an interrupted run (delta)
incrementalModeDaily monitoring — only changes returned on later runs
stateKeyOptional — name this campaign to share state
emitUnchangedAlso return UNCHANGED rows (extra rows billed)
emitExpiredAlso return EXPIRED rows when a complete scan proves they're gone (extra rows billed)
ConnectionproxyProxy settings (Residential DE recommended; detail enrichment requires it)
Export to appsmcpConnectorsMCP connector IDs to forward each item to (e.g. Notion, Linear, Airtable, Apify)
notionParentPageUrlParent page URL/id for the Notion connector (required for the Notion export)
maxNotifyListingsMax items exported per connector per run (default 50; does not affect the dataset)

Output (per-job record)

Listing fields (always present)

  • jobId, harmonisedId, jobUrl, applyUrl, title, datePosted, publishFromDate, publishToDate
  • brand (stepstone-de), backend, scrapedAt
  • employer (id, name, url, logoUrl, isAnonymous)
  • location (text, postalCode + detail-only: locality, region, country, latitude/longitude (also lat/lng), streetAddress)
  • salary (min, max, currency, period — see "What StepStone.de does not offer": usually null)
  • workFromHome, labels, skills, textSnippet, crossPostedCount
  • isSponsored, isHighlighted, isTopJob, isTrafficFromPartner
  • partnership (isBackfilled, isCrossPosted, isPartnershipJob, sourceSiteFriendlyName)
  • travelTime, sourceSite, sourceSearchUrl

Multi-city adverts put every city into one location.text string ("Berlin, Frankfurt, Hamburg, München, Münster"); when fetchDetails is on, the coordinates that come with such an advert are for one of those cities only, not for all of them.

Detail fields (only when fetchDetails: true)

  • description, descriptionText (full German job description)
  • employmentType, industry, contractType, workType
  • jobLocationType, applicantLocationRequirements
  • directApply, applyType (DirekteBewerbung / ExterneBewerbung)
  • validThrough, externalId
  • contactPhones, contactEmails (best-effort)
  • company (benefits, industries, size, founded, description, videos, images, jobsCount)
  • detailFetched (boolean flag)

Incremental metadata (only in incremental mode)

  • changeType (NEW / UPDATED / REAPPEARED / EXPIRED)
  • changedFields, firstSeenAt, lastSeenAt

Scanned vs emitted caps

maxListings counts jobs scanned, not jobs returned. In incremental mode a quiet run that suppresses most of a page therefore stops paging at the same depth as a noisy one, instead of paging deeper to backfill the quota — which is what makes recurring runs genuinely cheaper.

Send results into your apps (MCP connectors)

Optionally pipe results into the apps you already use. Authorize a connector once under Apify, Settings, Integrations, then select it in the input. Set notionParentPageUrl for Notion. Each connector receives a condensed, human-readable summary per item (title plus key fields), not the full JSON; the complete record always stays in the Apify dataset. Supported: Notion, Linear, Airtable, Apify.

Proxy & connection

Search-result pages work on the default connection for most users. Detail pages (for fetchDetails) always require Apify Residential proxy with country set to DE; job pages refuse every other connection shape. Free-tier and non-Residential users get SERP-only results and the actor logs a clear warning. maxResidentialRequests puts a hard ceiling on Residential usage for a run.

StepStone.de sometimes refuses a page outright, on any connection — certain search URLs are simply expensive for the site to build, and it answers by dropping the request. The actor recognizes this as the site having a bad moment, not your connection being blocked, so it does not spend extra proxy budget retrying the same request: your proxy spend never goes up because of it.

If job detail pages start being refused across the board, detail enrichment is switched off for the rest of the run instead of retrying every remaining job: you still get every listing row, and the detail-enrichment event is not charged for jobs that were not enriched. The run summary reports this as detailEnrichmentDisabled.

If a run cannot read a single result page it fails with an explanatory message rather than reporting an empty search — an empty result set from this actor always means the filters really matched nothing. The message distinguishes the two causes, so you are never told to upgrade your proxy for a problem that a proxy cannot fix.