Karriere.at Scraper — Austria's #1 Job Board avatar

Karriere.at Scraper — Austria's #1 Job Board

Pricing

from $1.50 / 1,000 job results

Go to Apify Store
Karriere.at Scraper — Austria's #1 Job Board

Karriere.at Scraper — Austria's #1 Job Board

Scrape karriere.at — Austria's #1 job board. Structured EUR salary (min/max + pay period), employer website, apply URL, full descriptions, home-office flags. Search by keyword & location or paste any URL. Optional employer email enrichment. JSON/CSV for recruiting, leads & salary analytics.

Pricing

from $1.50 / 1,000 job results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Karriere.at Scraper — Austria's #1 Job Board (with structured EUR salary)

Extract structured job data from karriere.at — Austria's largest job board. Get the full description (text + HTML), structured EUR salary (min/max + pay period, not just a string), the employer's own website, the outbound apply URL, employment types, job level, and home-office flags for every posting. Paste any karriere.at search URL or use the built-in keyword/location filters; results arrive as clean JSON or CSV, one row per job.

How it works

How Karriere.at Scraper works

✨ Why use this scraper?

  • Austria's biggest job source — karriere.at is the country's leading job platform, carrying openings from Austria's top employers across every industry and region.
  • Structured EUR salary on most rows — Austrian postings must state pay, and this scraper turns it into numbers: salary {min, max, currency, unit} parsed from the site's own structured data, with the original string kept in salaryRaw. When a posting only states pay in prose, the description is mined as a fallback.
  • Employer website captured per job — each posting links the company's own site (companyWebsite / companyDomain) — ready-made input for lead enrichment, not just a karriere.at profile link.
  • External apply URL captured — when the employer routes applicants to their own careers page or ATS, the direct URL lands in externalApplyUrl.
  • Contacts mined from descriptions — recruiter emails, Austrian phone numbers, and URLs are extracted into extractedEmails / extractedPhones / extractedUrls.
  • Optional employer-email enrichment — flip enrichEmails to visit each employer's website and pull a verified contact email (contactEmail), billed only on hits.
  • Search exactly like the site — keyword, location, radius, and home-office filters map 1:1 to karriere.at's own search; or paste any search URL (query-string or SEO form) with your filters already applied. Direct job URLs work too.
  • No browser, no drama — the data comes from the site's own JSON responses, so runs are fast, cheap, and resilient to cosmetic layout changes. Full pagination is honored — no silent 15-row cap.

🎯 Use cases

WhoWhat for
Recruiters & staffing agenciesMonitor fresh postings in a region or profession; see what competitors pay
Salary benchmarking & HR analyticsStructured EUR min/max + pay period across Austrian postings, by role and region
Job boards & aggregatorsSyndicate Austrian job data with stable structured fields
Lead generationCompanies that are hiring, each with its own website and mined contacts
Relocation & talent platformsTrack English-friendly and home-office roles across Austria
Researchers & journalistsStudy the Austrian labour market with employment types, levels, and salary data

📥 Supported inputs

InputExampleWhat happens
Search URLhttps://www.karriere.at/jobs?keywords=software&locations=WienWalks all result pages, scrapes each job
SEO search URLhttps://www.karriere.at/jobs/software-engineer/wienSame — both URL forms paginate fully
Search URL with site filters...jobs?keywords=sales&radius=20&homeoffice=1Filters pass through unchanged
Direct job URLhttps://www.karriere.at/jobs/10009538Scrapes that one job
Built-in filters (no URL)keyword: "Pflege", location: "Graz", remoteOnly: trueBuilds the search URL for you

Not supported: company profile pages (/f/{company}) as start URLs, karriere.at's CV/candidate features, and any content behind a login.

🔄 How it works

  1. Classify every start URL — search page vs direct job detail.
  2. Walk each search's result pages (~15 jobs per page) via the site's own JSON responses, streaming details in parallel while pagination continues.
  3. Fetch each job's detail payload — keyfacts, description (text + HTML), apply action, and the embedded schema.org JobPosting in one request.
  4. Parse structured EUR salary, employer website, employment types, job level, and locations; mine emails/phones/URLs from the description.
  5. Push one normalized row per job to the dataset — JSON, CSV, or Excel export via the Apify platform.

⚙️ Input parameters

FieldTypeDefaultDescription
startUrlsarraykarriere.at search URLs and/or direct job URLs. When set, the filters below are ignored
keywordstringSearch keyword — title, skill, or profession
locationstringCity or region (Wien, Graz, Salzburg, …)
radiusKmintegerRadius around the location in km
remoteOnlybooleanfalseOnly jobs with a home-office option
postedWithinHoursintegerPost-scrape recency gate (24 = last day) for monitoring runs
enrichEmailsbooleanfalseOpt-in: pull a contact email from each employer's website
maxItemsinteger1000Hard cap on jobs collected
maxConcurrencyinteger10Parallel detail fetches
proxyobjectApify autoProxy configuration; default works fine

📊 Output overview

Each dataset row is one job. The canonical core (identity, company, location, dates, description, apply flow) is always present — fields the source doesn't provide are null, never missing. Karriere.at-specific extras follow the core: structured salary, employer profile (website, logo, size, main location), job level, sponsored/anonymous flags, and contacts mined from the description.

📦 Output sample

Real row (trimmed) from a live run:

{
"type": "job",
"source": "karriere.at",
"jobId": "10009538",
"jobUrl": "https://www.karriere.at/jobs/10009538",
"title": "Senior Full Stack Software Engineer (all genders)",
"companyName": "PRODYNA SE",
"companyWebsite": "https://www.prodyna.com/",
"companyDomain": "prodyna.com",
"location": "Wien",
"remote": false,
"salary": { "currency": "EUR", "min": 4500, "max": 5000, "unit": "month", "raw": "4.500 € – 5.000 € monatlich" },
"salaryRaw": "4.500 € – 5.000 € monatlich",
"employmentTypes": ["Vollzeit"],
"postedDate": "2026-08-01T00:00:00+02:00",
"description": "<p>Bist du auf der Suche nach …</p>",
"descriptionText": "Bist du auf der Suche nach …",
"applyType": "external",
"applyUrl": "https://de.prodyna.com/jobs/senior-full-stack-software-engineer-vienna",
"externalApplyUrl": "https://de.prodyna.com/jobs/senior-full-stack-software-engineer-vienna",
"companySlug": "prodyna",
"companyProfileUrl": "https://www.karriere.at/f/prodyna",
"companyLogoUrl": "https://kcdn.at/company/108321/1903002/logo-gross.companysquare.gif",
"companyEmployees": "101 - 500",
"companyMainLocation": "Wien",
"region": "Wien",
"country": "AT",
"locations": [{ "city": "Wien", "region": "Wien", "postcode": null, "country": "AT", "street": null }],
"jobLevel": "Berufserfahrung",
"isSponsored": true,
"isActive": true,
"extractedEmails": [],
"extractedPhones": [],
"scrapedAt": "2026-08-04T09:43:01.239Z"
}

Postings that carry recruiter contacts in the text come out ready for outreach (real values from the same run):

{
"title": "Senior Software Entwickler:in C++",
"companyName": "STEINER-HITECH GmbH",
"salary": { "currency": "EUR", "min": 3500, "max": 5000, "unit": "month", "raw": "3.500 € – 5.000 € monatlich" },
"applyType": "external",
"extractedEmails": ["office@steiner-hitech.at"],
"extractedPhones": ["01/ 876 77 88"]
}

With enrichEmails: true, employer contact discovery runs on the company's own website:

{
"companyName": "PÜSPÖK Erneuerbare Energie GmbH",
"companyWebsite": "https://www.puespoek.at/",
"contactEmail": "office@puespoek.at",
"contactWebsite": "https://www.puespoek.at"
}

🗂 Key output fields

GroupFields
IdentityjobId, jobUrl, title, snippet
CompanycompanyName, companyWebsite, companyDomain, companySlug, companyProfileUrl, companyLogoUrl, companyEmployees, companyMainLocation
Locationlocation, region, postcode, country, locations[], remote
Compensationsalary {min, max, currency, unit} — structured EUR from the site's own data, description-mined as fallback; salaryRaw — the original string
ClassificationemploymentTypes[] (Vollzeit, Teilzeit, …), jobLevel (Berufserfahrung, …)
DatespostedDate (ISO-8601), closingDate
Contentdescription (HTML), descriptionText (plain text)
Apply flowapplyType (internal / external / email), applyUrl, applyEmail, externalApplyUrl, directApply
Mined from descriptionextractedEmails[], extractedPhones[], extractedUrls[]
SignalsisSponsored (boosted listing), isAnonymousPosting (Chiffre), isStaffingAgency, isActive
Enrichment (opt-in)contactEmail, contactWebsite, emailEnrichment{}

❓ FAQ

Is the salary really structured? Yes, on most rows. Austrian law requires job ads to state at least the collective-agreement minimum, and karriere.at publishes it as structured data per job — that becomes salary {min, max, currency, unit}. Where a posting only writes pay in prose, the description text is parsed as a fallback. salaryRaw always keeps the original wording.

What do the applyType values mean? external — the posting routes applicants to the employer's own careers page or ATS (URL in externalApplyUrl). email — no external link, but a contact email was found in the description (in applyEmail). internal — applications go through the job's karriere.at page.

How many jobs can I scrape? A focused search (keyword + city) typically returns tens to a few hundred jobs; broad searches return thousands. Every result page is walked — including on SEO-style URLs, where plain HTML scrapers silently get page 1 over and over. Use maxItems to control billing.

Can I monitor for new postings? Yes — schedule the actor and set postedWithinHours: 24 to keep only jobs published since yesterday's run. Pair it with a keyword/location search for a daily fresh-jobs feed.

Are German and English postings both covered? Yes. Fields come out exactly as the employer wrote them — titles and descriptions may be German or English. employmentTypes and jobLevel use the site's German labels (Vollzeit, Berufserfahrung).

Do I need a special proxy? No — the default Apify proxy works. If you ever see repeated 403s, switch the proxy input to RESIDENTIAL.

💬 Support

  • 🐛 Found a bug or need a field added? Open an issue on the actor's Issues tab in Apify Console.
  • 💡 Custom requirements (different output shape, scheduled deliveries, other job boards)? Message me through Apify — details in Additional services below.

🛠 Additional services

Need something beyond this actor? I build and maintain custom scraping solutions:

  • Custom scrapers for any job board, directory, or listing site
  • Data pipelines — scheduled runs, deduplication, delivery to your DB/S3/webhook
  • Monitoring setups — daily fresh-postings feeds filtered to your criteria

🔎 Explore more scrapers

Building a DACH hiring dataset? Pair this with my Arbeitsagentur Scraper — Germany's federal job board with 1M+ offers — for full German + Austrian coverage. More job-board and directory scrapers (UK boards, business directories, real-estate portals) are on my Apify profile.

🤖 For AI Agents & LLM Apps

This actor is MCP-friendly: call it from Apify's MCP server or any agent framework and get back compact, predictable JSON — one object per job with stable field names, ISO dates, and numeric salary bounds. Typical agent patterns: "find Vienna backend jobs paying over €4,500/month and list the employers' websites", salary benchmarking by role, or a daily hiring-signals feed for account-based outreach. descriptionText gives clean plain text for LLM context windows; skip description (HTML) to save tokens.


⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by karriere.at GmbH or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available job listing pages — no authenticated endpoints, employer-only features, or content behind a karriere.at login. Users are responsible for ensuring their use complies with karriere.at's terms of use, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.


SEO Keywords

karriere.at scraper, scrape karriere.at, karriere.at api, austrian job board scraper, austria jobs api, scrape austrian jobs, jobs wien scraper, jobs österreich data, austrian salary data, gehalt daten österreich, job postings dataset austria, stellenangebote österreich scraper, recruiting data austria, hiring trends austria, austrian labour market data, vienna jobs scraper, graz jobs scraper, linz jobs scraper, karriere at jobs export, Apify karriere.at, stepstone austria alternative scraper, willhaben jobs alternative