{"description":"Searches karriere.at, Austria's largest job board, like its search: job title, company, place, employment type (Vollzeit, Teilzeit, …), home office, the salary as the ad states it, when it was published, and the link, with the total number of matches. Sponsored ads are dropped by default; include_ads keeps them, marked.","effect":"read","id":"karriere.at/search-jobs","keywords":["karriere.at","jobs","stellenangebote","österreich","wien","graz","linz","vollzeit","teilzeit","homeoffice","gehalt","job search","austria","vacancies"],"output":{"schema":{"properties":{"jobs":{"items":{"properties":{"company":{"type":["string","null"]},"employment_type":{"description":"e.g. Vollzeit, Teilzeit, Lehre","type":["string","null"]},"home_office":{"type":"boolean"},"place":{"type":["string","null"]},"posted":{"description":"As shown: 'Heute veröffentlicht', 'Gestern veröffentlicht' or a date (dd.mm.yyyy)","type":["string","null"]},"salary":{"description":"As the ad states it, e.g. '3.500 € – 5.000 € monatlich', 'ab 55.000 € jährlich'","type":["string","null"]},"sponsored":{"type":"boolean"},"title":{"type":"string"},"url":{"type":"string"}},"type":"object"},"type":"array"},"keywords":{"type":"string"},"location":{"type":["string","null"]},"total":{"type":["integer","null"]}},"required":["keywords","jobs"],"type":"object"},"value":"let $ads = params.include_ads == `true`, $h = steps.search.heading || '' in {keywords: params.keywords, location: params.location || `null`, total: to_number(replace(split(trim($h), ' ')[0], '.', '')) || `null`, jobs: map(&(let $p = [p2 || '', p3 || '', p4 || ''] in {title: title, company: company || `null`, place: (locations && trim_right(replace(locations, ' ,', ','), ', ')) || `null`, employment_type: (p2 && !contains(p2, '€') && p2 != 'Homeoffice' && p2) || `null`, home_office: contains($p, 'Homeoffice'), salary: ($p[?contains(@, '€')] | [0]) || `null`, posted: date || `null`, sponsored: sponsored != `null`, url: href}), steps.search.jobs[?href != `null` && ($ads || sponsored == `null`)] || `[]`)}"},"params":{"additionalProperties":false,"properties":{"include_ads":{"default":false,"description":"Keep sponsored ads (marked)","type":"boolean"},"keywords":{"description":"Job title, skill or company, e.g. 'python', 'buchhaltung', 'data scientist'","maxLength":100,"minLength":2,"type":"string"},"location":{"description":"Austrian city or state, e.g. 'Wien', 'Graz', 'Oberösterreich'","maxLength":60,"minLength":2,"type":"string"}},"required":["keywords"],"type":"object"},"provenance":{"method":"browser-inspect","notes":"The search form (form.m-jobsSearchform, GET /jobs with keywords and locations) gives a server-rendered list of .m-jobsListItem cards: .m-jobsListItem__title, a.m-jobsListItem__titleLink (/jobs/<id>), .m-jobsListItem__companyName, .m-jobsListItem__date, and .m-jobsListItem__pills: first the locations pill, then plain pills for employment type, 'Homeoffice' and the salary text (read by position 2–4 and told apart by content). A card with .m-jobsListItem__sponsoredLabel ('Gesponsert') is a paid placement. The h1 starts with the total ('132 Python Jobs Wien'). The first page holds about 15 cards; later pages load by script. A search without matches answers HTTP 404 with a page that has no job cards; the recipe reads it as zero results.","recorded_at":"2026-11-07T22:28:00+01:00","recorded_by":"C4"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"AT","id":"karriere.at","language":"de","name":"karriere.at","origin":"https://www.karriere.at","origins":["https://www.karriere.at"]},"steps":[{"description":"karriere.at's search form (GET /jobs?keywords=…&locations=…), server-rendered with the first page of .m-jobsListItem cards.","expect":{"content_type":"html","status":[200,404]},"extract":{"html":{"heading":{"selector":"h1"}},"html_items":{"jobs":{"fields":{"company":{"selector":".m-jobsListItem__companyName"},"date":{"selector":".m-jobsListItem__date"},"href":{"attr":"href","selector":".m-jobsListItem__titleLink"},"locations":{"selector":".m-jobsListItem__locations"},"p2":{"selector":".m-jobsListItem__pills > .m-jobsListItem__pill:nth-child(2)"},"p3":{"selector":".m-jobsListItem__pills > .m-jobsListItem__pill:nth-child(3)"},"p4":{"selector":".m-jobsListItem__pills > .m-jobsListItem__pill:nth-child(4)"},"sponsored":{"selector":".m-jobsListItem__sponsoredLabel"},"title":{"selector":".m-jobsListItem__title"}},"max":30,"selector":".m-jobsListItem"}}},"id":"search","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"keywords":"{{params.keywords}}","locations":"{{params.location}}"},"url":"/jobs"}}],"task":"Search Austrian jobs on karriere.at","tos":{"notes":"robots.txt disallows nothing for general agents and has no rules for Claude agents or AI content signals. One request per call; no applications, job alerts or watchlist actions.","reviewed":false},"verify":{"checks":["length(output.jobs) >= `10`","output.total > `50`","length(output.jobs[?sponsored]) == `0`","length(output.jobs[?starts_with(url, 'https://www.karriere.at/jobs/')]) == length(output.jobs)","length(output.jobs[?company != `null` && place != `null`]) == length(output.jobs)","length(output.jobs[?salary != `null`]) > `5`"],"example_params":{"keywords":"python","location":"Wien"},"max_ms":4000},"version":1}