# karriere.at Jobs Scraper - Austria Salaries & Apply URLs (`sian.agency/karriere-at-jobs-scraper`) Actor

Scrape every job on karriere.at, Austria's leading job board. Search by keyword, city or federal state and filter by employment type, career level, job field and home office. Each row carries the published EUR salary, employer, location, posted date and the direct apply URL.

- **URL**: https://apify.com/sian.agency/karriere-at-jobs-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.06 / 1,000 job searches

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## karriere.at Jobs Scraper — Austria Salaries & Apply URLs 🇦🇹

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Jobs Search API](https://img.shields.io/badge/Store-Jobs%20Search%20API-1AE392)](https://apify.com/sian.agency/jsearch-jobs-scraper?fpr=sian) [![Glassdoor Scraper](https://img.shields.io/badge/Store-Glassdoor%20Scraper-0CAA41)](https://apify.com/sian.agency/glassdoor-data-scraper?fpr=sian) [![SEEK Jobs Scraper](https://img.shields.io/badge/Store-SEEK%20Jobs%20Scraper-0D3880)](https://apify.com/sian.agency/seek-jobs-scraper?fpr=sian)

#### 💶 The salary column karriere.at makes you log in for

##### Every Austrian job advert as a row: employer, location, contract, published gross salary and the apply link

Austria is one of the few countries where the law makes an employer print a minimum salary in the advert. About nine adverts in ten on karriere.at carry one — and the site's own salary filter is behind a login. This karriere.at scraper reads the salary off every posting, splits it into from, to, period and currency, and lets you filter on it without an account.

Built for recruiters, HR analysts, job boards and anyone benchmarking Austrian pay. Test it with 25 jobs free — no credit card, no API key, no login.

### 🔎 What is the karriere.at Jobs Scraper — and when should you use it?

The **karriere.at Jobs Scraper** turns public job adverts from karriere.at, Austria's leading job board into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** Austrian job adverts as rows you can sort and filter: title, employer, employer website and headcount, city, federal state, employment type, career level, home-office flag and posted date. The published gross salary comes split into from, to, period and currency, with annual figures also expressed per month so a 42,000 EUR advert and a 3,000 EUR advert line up in the same column. Switch on full advert text and each row also carries the complete posting and the direct apply link.

**Use something else when:** the job is not on karriere.at. Use [Jobs Search API](https://apify.com/sian.agency/jsearch-jobs-scraper?fpr=sian) for openings across most countries by aggregating Indeed, LinkedIn and Glassdoor, where this actor is one Austrian board done in depth. Use [Glassdoor Scraper](https://apify.com/sian.agency/glassdoor-data-scraper?fpr=sian) for what employees say a company pays and what they think of working there, where karriere.at carries the minimum the employer published itself. Use [SEEK Jobs Scraper](https://apify.com/sian.agency/seek-jobs-scraper?fpr=sian) for the same national-job-board shape for Australia and New Zealand. This actor covers public karriere.at adverts only. Other Austrian boards are separate sources, and anything behind a karriere.at login — saved searches, job matching, the applicant side — is out of scope.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/karriere-at-jobs-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want Austrian job adverts with salaries from karriere.at using the Apify Actor `sian.agency/karriere-at-jobs-scraper`.

Use it when I need: Austrian job adverts as rows you can sort and filter: title, employer, employer website and headcount, city, federal state, employment type, career level, home-office flag and posted date. The published gross salary comes split into from, to, period and currency, with annual figures also expressed per month so a 42,000 EUR advert and a 3,000 EUR advert line up in the same column. Switch on full advert text and each row also carries the complete posting and the direct apply link.

Don't use it when: the job is not on karriere.at — use jsearch-jobs-scraper or glassdoor-data-scraper or seek-jobs-scraper instead.

How to call it: give `keywords` a list of roles or skills and `locations` a list of cities or federal states (`Wien`, `Graz`, `steiermark`, `tirol`). Every keyword runs against every location, so three roles across three states is nine searches in one dataset. Narrow with `employmentType` (`vollzeit`, `teilzeit`, `praktika`, `lehre`), `jobField`, `jobLevel`, `homeOfficeOnly`, `radiusKm` around a city, `minMonthlySalaryEur`, `requireSalary` and `postedWithinDays`. `includeDetails` adds the full advert text, the apply URL and the exact numeric salary for an extra charge per job. To expand adverts you already have, set `operation` to `detail` and pass `jobUrls`; to reuse a search you built on karriere.at, paste it into `searchUrls`.

Start with this input:
{
  "keywords": [
    "software entwickler"
  ],
  "locations": [
    "Wien"
  ],
  "employmentType": "vollzeit",
  "minMonthlySalaryEur": 3500,
  "maxResults": 100
}

Ask me which roles and which Austrian cities or federal states to search, and whether they want a salary floor, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Pull every full-time data role in Vienna, Graz and Linz paying at least 4,000 EUR a month and rank the employers by what they offer.*
- *Give me everything posted in the last three days across all nine federal states with home office, and include the apply link for each one.*
- *Compare the published salary range for project managers in Vienna against Upper Austria and show me the median for each.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/karriere-at-jobs-scraper.md](https://apify.com/sian.agency/karriere-at-jobs-scraper.md).

### 📋 Overview

**Type a role, pick a city, press Run** — this karriere.at scraper turns any Austrian job search into a spreadsheet in about twenty seconds.

**Why professionals choose this karriere.at scraper:**

- 💶 **Salary on 9 rows in 10**: parsed into `salaryMin`, `salaryMax`, period and currency, with annual figures also given per month so every advert compares
- 🔍 **Keywords × locations in one run**: three roles across three federal states is nine searches and one dataset
- 🇦🇹 **All of Austria**: any city karriere.at knows, all nine federal states, plus a 10–50 km radius around a city
- 🎯 **The site's own filters**: employment type, job field, career level and home office, using karriere.at's own taxonomy ids
- 🔐 **A salary filter without a login**: karriere.at gates its own behind an account; this one runs on the salary already parsed
- 💰 **From $1.20 per 1,000 jobs**: pay per row delivered, never for a failed one
- 📄 **Full advert text on demand**: complete posting, career level, employer website and the direct apply URL

### ✨ Features

- 🔑 **Multi-keyword search**: every role or skill you list runs its own search, merged into one dataset
- 📍 **City or federal state**: `Wien`, `Graz`, `Linz` — or `steiermark`, `tirol`, `niederoesterreich` for a whole region
- 📏 **Radius search**: 10, 20, 30 or 50 km around a city, the same control karriere.at offers
- 💼 **Employment type**: full time, part time, marginal, internship, apprenticeship, thesis or freelance
- 🗂️ **20 job fields**: IT, engineering, finance, accounting, marketing, sales, logistics, healthcare, hospitality and more
- 📈 **Career level**: entry, experienced, team lead, executive or self-employed
- 🏠 **Home-office filter**: only the adverts karriere.at flags as remote-friendly
- 💶 **Salary floor**: drop everything under a gross monthly figure, with annual salaries converted at 14 payments a year
- 🗓️ **Posted-within filter**: the cheap way to schedule this and pay only for adverts that are new
- 🔗 **Paste-a-URL mode**: drop in any karriere.at search URL and every filter in it is honoured
- 📄 **Full advert text on demand**: complete posting, apply URL and the exact numeric salary
- 📊 **Export anywhere**: JSON, CSV, Excel, or straight into your own code via the API

### 🎬 Quick Start

Give it a role and a city. No account, no API key, no proxy settings — press Run and the rows arrive.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~karriere-at-jobs-scraper/runs?token=YOUR_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"keywords": ["software entwickler"], "locations": ["Wien"], "maxResults": 100}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Say what you are looking for

Put one or more roles in **Search keywords** and one or more places in **Cities or federal states**. Leave both empty to take every current opening in Austria.

#### Step 2: Narrow it down

Pick an employment type, a job field, a career level or a salary floor. Every filter is optional.

#### Step 3: Press Run

Rows appear in the dataset as they are collected. Export as CSV, JSON or Excel, or read them straight from the API.

**That's it. In under a minute, you'll have:**

- Every matching Austrian job advert as a flat row
- A gross salary column you can sort, on roughly nine rows in ten
- A direct link to each posting, and the apply URL when you ask for full advert text

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | No | `search` (default) or `detail` |
| `keywords` | array | No | Roles or skills, one search per keyword |
| `locations` | array | No | Cities or federal states, one search per location |
| `radiusKm` | string | No | `0`, `10`, `20`, `30` or `50` km around a city |
| `employmentType` | string | No | `any`, `vollzeit`, `teilzeit`, `geringfuegig`, `praktika`, `lehre`, `diplomarbeit`, `freelancer` |
| `jobField` | string | No | One of 20 karriere.at industry categories, or `any` |
| `jobLevel` | string | No | `any`, `berufseinstieg`, `berufserfahrung`, `bereichsleitung`, `unternehmensfuehrung`, `selbstaendigkeit` |
| `homeOfficeOnly` | boolean | No | Keep only remote-friendly adverts |
| `minMonthlySalaryEur` | integer | No | Gross monthly floor in euro, `0` for no limit |
| `requireSalary` | boolean | No | Drop adverts that publish no salary |
| `postedWithinDays` | integer | No | Keep only adverts newer than N days, `0` for no limit |
| `maxResults` | integer | No | Whole-run row budget, default 100 |
| `includeDetails` | boolean | No | Add full advert text, apply URL and exact salary |
| `searchUrls` | array | No | Paste karriere.at search URLs instead of filling the fields |
| `jobUrls` | array | No | Job URLs for the `detail` operation |

**Example — a salary-filtered search:**

```json
{
  "keywords": ["software entwickler", "data engineer"],
  "locations": ["Wien", "steiermark"],
  "employmentType": "vollzeit",
  "minMonthlySalaryEur": 4000,
  "maxResults": 500
}
```

**Example — expand adverts you already have:**

```json
{
  "operation": "detail",
  "jobUrls": [
    "https://www.karriere.at/jobs/10026488",
    "https://www.karriere.at/jobs/10021751"
  ]
}
```

### 📤 Output

Results are saved to the Apify dataset with **38 fields** including:

| Field | Type | Description |
|-------|------|-------------|
| `jobTitle` | string | The advert's headline |
| `companyName` | string | Hiring employer |
| `companyWebsite` | string | The employer's own site (with full advert text) |
| `companySize` | string | Headcount band, e.g. `11 - 30` |
| `location` | string | City or district, as karriere.at prints it |
| `region` | string | Federal state (with full advert text) |
| `employmentTypes` | string | e.g. `Vollzeit, Teilzeit` |
| `jobLevel` | string | Career level (with full advert text) |
| `salaryMin` / `salaryMax` | number | Published gross salary, from and to |
| `salaryPeriod` | string | `MONTH`, `YEAR` or `HOUR` |
| `salaryMinMonthlyEur` | number | The same floor expressed per month, for comparison |
| `isHomeOffice` | boolean | Whether the advert offers home office |
| `postedAt` | string | Publication date, ISO |
| `applyUrl` | string | Direct application link (with full advert text) |
| `url` | string | The advert on karriere.at |

**Example row:**

```json
{
  "jobId": "10029847",
  "jobTitle": "Senior Backend Engineer (f/m/d) with Social Impact",
  "url": "https://www.karriere.at/jobs/10029847",
  "companyName": "Formunauts GmbH",
  "companyUrl": "https://www.karriere.at/f/formunauts",
  "companyWebsite": "https://www.formunauts.com",
  "companySize": "11 - 30",
  "location": "Wien 1. Bezirk (Innere Stadt)",
  "region": "Wien",
  "country": "AT",
  "employmentTypes": "Vollzeit, Teilzeit",
  "employmentTypeCodes": ["FULL_TIME", "PART_TIME"],
  "jobLevel": "Berufserfahrung",
  "salaryText": "4.000 € – 5.000 € monatlich",
  "salaryMin": 4000,
  "salaryMax": 5000,
  "salaryPeriod": "MONTH",
  "salaryCurrency": "EUR",
  "salaryMinMonthlyEur": 4000,
  "isHomeOffice": true,
  "postedAt": "2026-08-25T00:00:00.000Z",
  "applyUrl": "https://bewerben.karriere.at/6Gjs44S7",
  "status": "success"
}
```

### 💼 Use Cases & Examples

#### 1. Austrian Salary Benchmarking

**Compensation analysts and founders who need real Austrian pay data, not a survey.**

**Input:** one role, all nine federal states, `requireSalary: true`
**Output:** several hundred adverts with a from/to salary and a per-month comparison column
**Use:** build a pay curve for a role and see what Vienna costs against Styria before you write an offer.

#### 2. Recruitment Lead Generation

**Agency recruiters looking for Austrian companies that are hiring right now.**

**Input:** a job field, a federal state, `postedWithinDays: 7`
**Output:** employer name, karriere.at profile, own website and headcount for every fresh advert
**Use:** work this week's hiring list before it reaches the aggregators.

#### 3. Competitor Hiring Intelligence

**Strategy and talent teams tracking what a rival is building.**

**Input:** the competitor's name as a keyword, on a daily schedule
**Output:** every role they open, with level, location and the salary they are willing to print
**Use:** spot a new team forming from the job titles, months before it is announced.

#### 4. Job Board & Aggregator Feeds

**Niche boards and newsletters that need clean listings without a manual copy pass.**

**Input:** a job field plus `includeDetails: true`
**Output:** title, employer, location, contract, salary, full text and a direct apply URL
**Use:** map the rows straight onto a JobPosting schema and publish.

#### 5. Labour Market Research

**Economists and public-sector analysts measuring Austrian demand.**

**Input:** each job field in turn, run monthly
**Output:** counts by field, level, home-office flag and federal state, on karriere.at's own taxonomy
**Use:** track how remote-friendly Austrian hiring is, month over month, on categories that stay comparable.

#### 6. Relocation & Candidate Research

**Jobseekers and relocation consultants comparing Austrian cities.**

**Input:** one role, `radiusKm: 50` around Vienna, Graz and Linz
**Output:** every opening in commuting distance with its published salary
**Use:** answer "where does this job pay best" with adverts rather than anecdotes.

#### 7. Pay Transparency Reporting

**Works councils and HR teams auditing published salary practice.**

**Input:** a sector, whole country, `requireSalary: false`
**Output:** which employers publish a real range and which publish the bare legal minimum
**Use:** benchmark your own advert against what the rest of the sector prints.

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/karriere-at-jobs-scraper').call({
  keywords: ['software entwickler'],
  locations: ['Wien'],
  minMonthlySalaryEur: 4000,
  maxResults: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].jobTitle, items[0].salaryMinMonthlyEur);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/karriere-at-jobs-scraper').call(
    run_input={
        'keywords': ['software entwickler'],
        'locations': ['Wien'],
        'minMonthlySalaryEur': 4000,
        'maxResults': 200,
    }
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item['jobTitle'], item.get('salaryMinMonthlyEur'))
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~karriere-at-jobs-scraper/runs?token=YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"keywords": ["software entwickler"], "locations": ["Wien"], "maxResults": 200}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: a daily schedule
2. **HTTP Request**: run the actor with `postedWithinDays: 1`
3. **Process**: read the dataset, deduplicate against yesterday on `jobId`
4. **Action**: push new adverts into your ATS, a Google Sheet or a Slack channel

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 jobs** per run — every filter, every field, same quality
- No credit card required
- Enough to see the salary column before you commit

#### PAID Tier (Production Ready)

- **Unlimited** jobs per run
- Keywords × locations fan-out across the whole country in one go
- Pay per result: charged only for jobs actually delivered, never for a failed one

💰 **From $1.20 per 1,000 jobs** — below every karriere.at scraper on the Store that offers a comparable filter set.

🔗 [View current pricing](https://apify.com/sian.agency/karriere-at-jobs-scraper?fpr=sian)

### ❓ Frequently Asked Questions

**Q: Do I need an account, an API key or a proxy?**
A: No. Type a keyword and press Start.

**Q: How many jobs can I collect?**
A: FREE tier: 25 per run. PAID tier: unlimited. A single keyword pages out when karriere.at runs out of matches, so wider coverage comes from more keywords and more locations.

**Q: Which locations are supported?**
A: Any Austrian city karriere.at knows, and all nine federal states: `wien`, `niederoesterreich`, `oberoesterreich`, `steiermark`, `tirol`, `salzburg`, `kaernten`, `vorarlberg`, `burgenland`. Cities also take a 10–50 km radius.

**Q: How reliable is the salary column?**
A: Austrian law obliges employers to publish a minimum salary, and roughly nine adverts in ten carry one. The actor splits it into from, to, period and currency, and adds a per-month figure so annual and monthly adverts compare. Anything it cannot parse comes back empty rather than guessed.

**Q: Why does the salary filter work here but not on karriere.at?**
A: karriere.at gates its own salary filter behind a login and drops it from the URL otherwise. This actor filters on the salary it has already read off the advert, so no account is involved.

**Q: What does the full advert text option cost?**
A: It opens one extra page per job, so it bills one Job Detail event per enriched posting on top of the search row. Leave it off and you pay for search rows only.

**Q: Can I paste a karriere.at search URL?**
A: Yes. Put it in Search URLs and the keyword, location, radius and every filter in that URL are read straight off it.

**Q: What output formats are available?**
A: JSON, CSV and Excel, exported from the dataset or read through the API.

### 🐛 Troubleshooting

**A run returns fewer jobs than `maxResults`**

- karriere.at simply had fewer matches. Widen the keyword, add locations, or drop a filter.
- A salary floor or a posted-within limit removes rows after they are fetched. The run log prints how many were filtered out.

**A location returns nothing**

- Use the German spelling karriere.at uses. Umlauts are handled for you, so `Kärnten` and `kaernten` both work.
- A federal state ignores the radius, because it is already an area.

**Salary columns are empty on some rows**

- Roughly one advert in ten publishes no figure. Turn on **Only postings that state a salary** to drop those.
- Hourly adverts keep `salaryMin` and `salaryPeriod: "HOUR"` but no monthly figure, because converting one needs contract hours the advert never states.

**A job URL returns an error row**

- The advert has expired or was withdrawn. Error rows are never charged.
- Paste the address from your browser: `https://www.karriere.at/jobs/10026488`.

**The run is slower than expected with full advert text on**

- Each enriched job costs one extra request. Lower `maxResults`, or leave the option off and enrich a shortlist afterwards with the `detail` operation.

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

karriere.at is a trademark of karriere.at GmbH. This actor is not affiliated with, endorsed by, or sponsored by karriere.at.

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

Pick one per run. Job Search returns rows from a keyword, city or federal-state search with filters; Job Detail takes karriere.at job URLs and returns the full text, exact salary and apply link.

## `keywords` (type: `array`):

Job titles or skills to search for, one per line. Each keyword runs its own search, so three keywords return roughly three times the rows. Leave empty to take every current opening in the locations you picked.

## `locations` (type: `array`):

Where to search, one per line. Takes a city (Wien, Graz, Linz, Salzburg, Innsbruck, Klagenfurt) or a whole federal state (niederoesterreich, oberoesterreich, steiermark, tirol, kaernten, vorarlberg, burgenland). Leave empty to search all of Austria.

## `radiusKm` (type: `string`):

How far around each city to look. Only applies to city names — a federal state is already an area, so the radius is ignored there.

## `employmentType` (type: `string`):

Restrict to one contract shape. Austrian postings often carry two at once, so 'Full time' also returns adverts open to both full and part time.

## `jobField` (type: `string`):

karriere.at's own industry taxonomy. Pick one to keep a broad keyword such as 'manager' inside a single sector.

## `jobLevel` (type: `string`):

Seniority as karriere.at classifies it. Useful for separating graduate hiring from senior roles in the same keyword.

## `homeOfficeOnly` (type: `boolean`):

Keep only postings karriere.at flags as offering home office.

## `minMonthlySalaryEur` (type: `integer`):

Drop postings below this gross monthly figure in euro. Annual salaries are converted at 14 payments a year, the Austrian norm, so a 42,000 EUR advert compares as 3,000 EUR a month. 0 turns the filter off. Postings that publish no salary are kept — set the next option to drop them.

## `requireSalary` (type: `boolean`):

Austrian law makes employers publish a minimum salary, and about nine in ten karriere.at adverts do. Turn this on to drop the rest instead of exporting blank salary columns.

## `postedWithinDays` (type: `integer`):

Keep only adverts published in the last N days. 0 means no date limit. This is the cheap way to run the actor on a schedule and pay for new postings only.

## `maxResults` (type: `integer`):

Stop after this many jobs across every keyword and location in the run. Each search request returns 15 postings, so the run stops on the first page that crosses your limit.

## `includeDetails` (type: `boolean`):

Open each posting to add the full advert text, the direct apply URL, the career level, the employer website and the exact numeric salary. Costs one extra request per job and bills the Job Detail event on top of the search row.

## `searchUrls` (type: `array`):

Paste karriere.at search URLs instead of filling the fields above. Keyword, location and every filter in the URL are read straight off it, so a search you built in the browser runs here unchanged.

## `jobUrls` (type: `array`):

Used by the Job Detail operation: karriere.at job URLs to expand, one per line, e.g. https://www.karriere.at/jobs/10026488. Paste the address straight from your browser — Apify checks this box holds real URLs, so a bare job number is rejected before the run starts.

## Actor input object example

```json
{
  "operation": "search",
  "keywords": [
    "software entwickler"
  ],
  "locations": [
    "Wien"
  ],
  "radiusKm": "0",
  "employmentType": "any",
  "jobField": "any",
  "jobLevel": "any",
  "homeOfficeOnly": false,
  "minMonthlySalaryEur": 0,
  "requireSalary": false,
  "postedWithinDays": 0,
  "maxResults": 100,
  "includeDetails": false,
  "searchUrls": [],
  "jobUrls": []
}
```

# Actor output Schema

## `karriereAtJobs` (type: `string`):

Every job this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "operation": "search",
    "keywords": [
        "software entwickler"
    ],
    "locations": [
        "Wien"
    ],
    "radiusKm": "0",
    "employmentType": "any",
    "jobField": "any",
    "jobLevel": "any",
    "homeOfficeOnly": false,
    "minMonthlySalaryEur": 0,
    "requireSalary": false,
    "postedWithinDays": 0,
    "maxResults": 100,
    "includeDetails": false,
    "searchUrls": [],
    "jobUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/karriere-at-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "operation": "search",
    "keywords": ["software entwickler"],
    "locations": ["Wien"],
    "radiusKm": "0",
    "employmentType": "any",
    "jobField": "any",
    "jobLevel": "any",
    "homeOfficeOnly": False,
    "minMonthlySalaryEur": 0,
    "requireSalary": False,
    "postedWithinDays": 0,
    "maxResults": 100,
    "includeDetails": False,
    "searchUrls": [],
    "jobUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/karriere-at-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "operation": "search",
  "keywords": [
    "software entwickler"
  ],
  "locations": [
    "Wien"
  ],
  "radiusKm": "0",
  "employmentType": "any",
  "jobField": "any",
  "jobLevel": "any",
  "homeOfficeOnly": false,
  "minMonthlySalaryEur": 0,
  "requireSalary": false,
  "postedWithinDays": 0,
  "maxResults": 100,
  "includeDetails": false,
  "searchUrls": [],
  "jobUrls": []
}' |
apify call sian.agency/karriere-at-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/karriere-at-jobs-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RAv8Nq4BeSJ45o73I/builds/T58TwgclpR9wazdYO/openapi.json
