{"description":"Searches StepStone, a large German job board, like its search: job title, company, locations, home-office option, salary when StepStone shows it (often only to logged-in users), how long ago it was posted, labels such as 'Schnelle Bewerbung', and the job link. Radius around the location, newest first or most relevant, pages of 25.","effect":"read","id":"stepstone.de/search-jobs","keywords":["stepstone","jobs","stellenangebote","stellenanzeigen","jobsuche","arbeit","karriere","homeoffice","job search","vacancies","hiring","career","germany jobs"],"output":{"schema":{"properties":{"jobs":{"items":{"properties":{"company":{"type":["string","null"]},"home_office":{"description":"e.g. 'Teilweise Home-Office', 'Nur Home-Office'","type":["string","null"]},"id":{"type":"string"},"label":{"type":["string","null"]},"location":{"type":["string","null"]},"posted":{"description":"As StepStone shows it, e.g. 'vor 2 Tagen'","type":["string","null"]},"salary":{"type":["string","null"]},"title":{"type":"string"},"url":{"type":["string","null"]}},"type":"object"},"type":"array"},"location":{"type":"string"},"page":{"type":"integer"},"query":{"type":"string"},"total":{"type":["integer","null"]}},"type":"object"},"value":"{query: params.query, location: params.location || 'deutschland', total: (steps.search[0].title_text && contains(steps.search[0].title_text, ' Jobs') && to_number(split(split(steps.search[0].title_text, ' Jobs')[0], ': ')[-1])) || `null`, page: params.page || `1`, jobs: map(&{id: replace(card_id || '', 'job-item-', ''), title: title, company: company || `null`, location: location || `null`, home_office: home_office || `null`, salary: salary || `null`, posted: posted || `null`, label: label || `null`, url: href || `null`}, steps.search[0].jobs[?title != `null`])}"},"params":{"additionalProperties":false,"properties":{"location":{"default":"deutschland","description":"City or region, e.g. 'berlin', 'münchen'; 'deutschland' for all of Germany","maxLength":60,"minLength":2,"type":"string"},"page":{"default":1,"maximum":20,"minimum":1,"type":"integer"},"query":{"description":"Job title or skill, e.g. 'python entwickler', 'pflegefachkraft', 'data analyst'","maxLength":100,"minLength":2,"type":"string"},"radius_km":{"default":30,"enum":[5,10,20,30,50,100],"type":"integer"},"sort":{"default":"relevance","enum":["relevance","date"],"type":"string"}},"required":["query"],"type":"object"},"provenance":{"method":"browser-inspect","notes":"Search page /jobs/<what>/in-<where> (spaces and umlauts URL-encoded work: in-m%C3%BCnchen = in-muenchen), radius, sort=2 for newest, page. Pagination is plain links, so the page itself is the API. Job cards: article[data-at=job-item] with data-at hooks; Emotion <style> tags inside the cards pollute textContent, so fields read the innermost TEXT elements. The page state window.__PRELOADED_STATE__['app-unifiedResultlist'] has the same data, but its script begins with '|| {}', so strip_js would take that empty object. Total from the <title> ('Python Entwickler: 34 Jobs & …'). Answers servers too (200).","recorded_at":"2026-11-07T18:53:00+01:00","recorded_by":"C4"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"DE","id":"stepstone.de","language":"de","name":"StepStone","origin":"https://www.stepstone.de","origins":["https://www.stepstone.de"]},"steps":[{"description":"The search results page (server-rendered job cards, data-at hooks). Cards carry styled-components <style> tags, so text is read from the innermost elements.","expect":{"assert":"contains(body, 'job-item') || contains(body, 'noResults')","content_type":"html","status":[200]},"extract":{"html":{"title_text":{"selector":"title"}},"html_items":{"jobs":{"fields":{"card_id":{"attr":"id","selector":":scope"},"company":{"selector":"[data-at=\"job-item-company-name\"] [data-genesis-element=\"TEXT\"]"},"home_office":{"selector":"[data-at=\"job-item-work-from-home\"] [data-genesis-element=\"TEXT\"]"},"href":{"attr":"href","selector":"a[data-at=\"job-item-title\"]"},"label":{"selector":"[data-at=\"job-item-badge\"] [data-genesis-element=\"TAG_TEXT\"]"},"location":{"selector":"[data-at=\"job-item-location\"] [data-genesis-element=\"TEXT\"]"},"posted":{"selector":"[data-at=\"job-item-timeago\"]"},"salary":{"selector":"[data-at=\"job-item-salary-info\"] [data-genesis-element=\"TEXT\"]"},"title":{"selector":"[data-at=\"job-item-title\"] div:not(:has(div))"}},"max":25,"selector":"article[data-at=\"job-item\"]"}}},"foreach":{"as":"f","in":"[{sort: params.sort == 'date' && '2' || `null`}]","max":1},"id":"search","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"page":"{{params.page}}","radius":"{{params.radius_km}}","sort":"{{f.sort}}"},"url":"/jobs/{{params.query | lower | urlencode}}/in-{{params.location | lower | urlencode}}"}}],"task":"Search jobs on StepStone by title and location","tos":{"notes":"One results page per call, as a person browsing would. No account, no applications.","reviewed":false},"verify":{"checks":["length(output.jobs) > `5`","length(output.jobs[?company != `null`]) > `5`","length(output.jobs[?starts_with(url, 'https://www.stepstone.de/')]) == length(output.jobs)","output.total > `0`"],"example_params":{"location":"berlin","query":"python entwickler"},"max_ms":5000},"version":1}