# LinkedIn Jobs Scraper + StepStone, XING, Reed & 20 Job Boards (`liveclaude/job-scraper`) Actor

Job scraper for 12 boards in 20 countries – LinkedIn, StepStone, XING, Reed, Totaljobs, Pracuj, JustJoin.it, jobs.ch, karriere.at, Welcome to the Jungle – plus Indeed & Glassdoor add-on and company career sites by name. EUR salaries, remote, skills, dedupe, hiring signals, alerts.

- **URL**: https://apify.com/liveclaude/job-scraper.md
- **Developed by:** [FlareWOW](https://apify.com/liveclaude) (community)
- **Categories:** Jobs, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 job (job board)s

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Job Scraper – LinkedIn, StepStone, XING, Reed, Totaljobs, Indeed & 20 Countries

**One actor for the whole European job market.** Pick a country, type a job title – the actor searches **all the right job boards for that country at once** (LinkedIn, StepStone, XING, Totaljobs, Reed, karriere.at, jobs.ch, Pracuj.pl, JustJoin.it, No Fluff Jobs, Welcome to the Jungle, Dice, Built In…), pulls every open position straight from **company career sites** (just type the company name – the career site is found automatically) and returns everything in **one clean, normalized format**: salaries converted to yearly EUR, remote/hybrid detection, seniority, department, skills, cross-board duplicates merged, **company hiring signals** and **new-job / closed-job monitoring**.

From **$1.80 per 1,000 jobs**. No login, no cookies, no API keys.

![Results](https://api.apify.com/v2/key-value-stores/gtfUYklwD7PHbuDWt/records/screen-results.png)

### Why this actor?

| | Typical single-site scraper | **Jobs & Hiring Signals** |
|---|---|---|
| Sources | 1 board | **16 job boards + Indeed & Glassdoor add-on + 16 career-site platforms** in one run |
| Countries | 1 | **20 countries** – pick one, the right boards are used automatically |
| Output format | different for every site | **one schema** for all sources |
| Duplicates | same job 3× from 3 boards | **merged**, with `alsoFoundOn` links |
| Salary | raw text | `salaryMin/Max`, currency, period **+ yearly EUR** |
| Remote / seniority / skills | – | **detected for every job** |
| Company career sites | you need the exact ATS link | **type "N26" or "n26.com"** – found automatically |
| Company view | – | **hiring signals** per company (velocity, departments, locations, skills, salary) |
| Alerts | re-scrape everything | **only new jobs** + **closed jobs** for career sites |

### Who uses it

- **Recruiters & agencies** – find companies that are hiring right now, monitor competitors' openings, source roles for candidates.
- **Sales & business development** – hiring = budget. Companies posting 10 DevOps roles need tooling, consultants and contractors. Use hiring signals as buying-intent signals for lead generation.
- **Job seekers & job boards** – daily feed of new remote / senior / well-paid jobs from every board in one list.
- **Analysts & investors** – track hiring velocity of companies, departments and skills over time (HR analytics, labor-market research, alternative data).

### How to use it

1. **Choose a country** (e.g. 🇬🇧 United Kingdom) – the boards for that country are selected for you.
2. **Type job titles or keywords** (`data analyst`, `Pflegefachkraft`, `programista java`) and optionally **cities** (`Manchester`, `Wien`, `Kraków`). Leave cities empty to search the whole country.
3. Optionally add **companies** by name or website to get all their jobs from their own career site.
4. Set filters (posted within, remote, salary…) and run. Export to Excel/CSV/JSON or connect Google Sheets, Slack, Make, Zapier, n8n.

### Countries and job boards

| Country | Job boards searched automatically |
|---|---|
| 🇩🇪 Germany | LinkedIn, StepStone, XING |
| 🇦🇹 Austria | LinkedIn, karriere.at, StepStone.at, XING\* |
| 🇨🇭 Switzerland | LinkedIn, jobs.ch, XING\* |
| 🇵🇱 Poland | Pracuj.pl, JustJoin.it, No Fluff Jobs, LinkedIn |
| 🇬🇧 United Kingdom | LinkedIn, Reed, Totaljobs, Welcome to the Jungle (+ CWJobs on request) |
| 🇫🇷 France · 🇪🇸 Spain · 🇮🇹 Italy · 🇵🇹 Portugal · 🇮🇪 Ireland · 🇱🇺 Luxembourg · 🇨🇿 Czechia | LinkedIn, Welcome to the Jungle |
| 🇳🇱 Netherlands · 🇧🇪 Belgium | LinkedIn, StepStone, Welcome to the Jungle |
| 🇸🇪 Sweden · 🇩🇰 Denmark · 🇳🇴 Norway · 🇫🇮 Finland | LinkedIn |
| 🇺🇸 United States | LinkedIn, Dice, Built In, Welcome to the Jungle (+ Remote OK, We Work Remotely for remote searches) |
| 🇨🇦 Canada | LinkedIn, Welcome to the Jungle |
| 🌐 Worldwide | LinkedIn, Welcome to the Jungle |

\* XING is used in Austria and Switzerland when you enter a city.

You can always pick the boards yourself in **Job boards** (e.g. only JustJoin.it + No Fluff Jobs for Polish IT jobs, or Reed + Totaljobs for the UK).

**What each board gives you:**

| Board | Native filters | Salary |
|---|---|---|
| LinkedIn | date, remote/hybrid/onsite, employment type, experience | when published |
| StepStone (DE/AT/BE/NL) | date, home office, radius | published + StepStone estimate |
| Totaljobs / CWJobs (UK) | date, work from home, radius | published (per year / day / hour) |
| Reed (UK) | date, remote/hybrid/onsite, employment type, radius | published (per year / day / hour) |
| XING (DACH) | radius | published + XING estimate |
| karriere.at (AT) | – | published (mandatory in Austria) |
| jobs.ch (CH) | – | jobs.ch estimate (CHF) |
| Pracuj.pl (PL) | date, remote/hybrid/office, radius | published (B2B / UoP) |
| JustJoin.it (PL, IT) | remote, experience, contract type | published, per contract type |
| No Fluff Jobs (PL, IT) | remote, seniority, contract type | always published, per contract type |
| Welcome to the Jungle (FR + 15 countries) | date, remote, contract type | published |

#### 💎 Premium add-on: Indeed & Glassdoor

Tick **Indeed** and/or **Glassdoor** in *Premium boards* to search them too, in the selected country (de.indeed.com, uk.indeed.com, glassdoor.co.uk, glassdoor.de…). Both sites block normal scrapers, so these requests go through a professional unblocking service – that's why their jobs are billed as *premium jobs*. Everything else (normalization, EUR salaries, dedupe, hiring signals, monitoring) works exactly the same.

### Company career sites

Type the **company name** (`Datadog`), its **website** (`datadoghq.com`) or paste the **careers link** – the actor finds the career site and returns **every** open job with full description and (when published) salary ranges, straight from the employer's own system.

| Platform | Example |
|---|---|
| Greenhouse | `N26`, `https://job-boards.greenhouse.io/n26` or `greenhouse:n26` |
| Lever | `Spotify`, `https://jobs.lever.co/palantir` |
| Ashby | `https://jobs.ashbyhq.com/ramp` or `ashby:ramp` |
| SmartRecruiters | `https://jobs.smartrecruiters.com/BoschGroup` |
| Recruitee | `https://company.recruitee.com` |
| Personio | `personio.com`, `https://company.jobs.personio.de` |
| Workday | `https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite` |
| Workable | `https://apply.workable.com/company` or `workable:company` |
| Teamtailor | `https://company.teamtailor.com` or the company's Teamtailor career domain |
| JOIN | `https://join.com/companies/company` |
| Softgarden | `https://company.softgarden.io` |
| BambooHR | `https://company.bamboohr.com/careers` |
| Breezy HR | `https://company.breezy.hr` |
| Pinpoint | `https://company.pinpointhq.com` |
| Rippling | `https://ats.rippling.com/company/jobs` |
| Jobvite | `https://jobs.jobvite.com/company` |

Company lookup checks the company website for career-site links first and then tries the known platforms. If a company uses its own in-house career site (e.g. Zalando, Revolut), the log tells you – use the job boards for those.

You can also paste **search URLs or single job URLs** from any supported board in `startUrls`.

### Features

- 🌍 **Country presets** – one click selects the right boards and keeps LinkedIn results inside the country ("London" means London, UK – not London, Ontario).
- 🔎 **Multi-source search** – every query × location runs on all selected boards in parallel.
- 🧹 **Normalized output** – same fields for every source; ISO dates; `id` = `source:jobId`.
- 💶 **Salary normalization** – parses "45.000 – 60.000 € / Jahr", "£85000 - £115000 per annum", "18 000–24 000 zł / mies.", "$120k–150k", day rates and hourly rates; converts everything to a yearly amount in EUR (daily ECB rates). Estimates are flagged with `salaryIsEstimate`. Polish boards also return `salaryByContract` (B2B vs. employment contract).
- 🏠 **Remote / hybrid / onsite** detection in EN, DE, PL and FR.
- 📈 **Seniority** (internship, junior, mid, senior, lead, director), **department group** (engineering, data, product, design, sales, marketing, finance…), **65+ skills** (Python, React, AWS, SAP, Salesforce, Excel…) plus the board's own `requiredSkills` where available.
- 🔁 **Cross-board deduplication** – one record per job, gaps filled from the other boards, `alsoFoundOn` lists the duplicates.
- 📄 **Job details** (optional) – full description, employment type, applicants count (LinkedIn), industry, address, requirements.
- 🏢 **Company hiring signals** – one record per company: open jobs, jobs posted in the last 7 days, hiring velocity, departments, seniority mix, locations, remote share, top skills, median salary, sample jobs.
- 🔔 **Monitoring** – `onlyNewJobs` returns only jobs not seen in previous runs; for career sites, jobs that disappeared are emitted as `listingStatus: "closed"` with `daysOpen`.
- 🎯 **Filters** – posted within (24h / 3 days / week / month), workplace, employment type, experience, minimum yearly salary in EUR (jobs without a published salary are kept unless you also tick *only jobs with salary*), only jobs with salary, title must include, exclude keywords, location must include, exclude companies (e.g. agencies).
- 🛡️ **Robust** – rotating proxy sessions, per-host pacing, automatic retries, early stop on budget limit.

### Input examples

**Data analyst jobs in Manchester from the last 3 days (LinkedIn, Reed, Totaljobs, WTTJ):**

```json
{
  "country": "gb",
  "searchQueries": ["data analyst"],
  "locations": ["Manchester"],
  "postedWithin": "3d",
  "includeDetails": true
}
```

**Remote Java jobs in Poland with salary (Pracuj, JustJoin.it, No Fluff Jobs, LinkedIn):**

```json
{
  "country": "pl",
  "searchQueries": ["java"],
  "workplace": "remote",
  "onlyWithSalary": true
}
```

**All open jobs of selected companies + hiring signals + closed-job alerts (schedule daily):**

```json
{
  "companies": ["N26", "datadoghq.com", "Spotify", "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],
  "companySignals": true,
  "onlyNewJobs": true,
  "monitorId": "my-target-companies"
}
```

**Sales leads – companies hiring sales people in Germany:**

```json
{
  "country": "Germany",
  "searchQueries": ["account executive", "sales manager"],
  "companySignals": true,
  "minJobsPerCompany": 2,
  "excludeKeywords": ["personalvermittlung"]
}
```

### Output

Each job is one dataset item (`recordType: "job"`). Real example from a run:

```json
{
  "id": "stepstone:11627166",
  "source": "stepstone",
  "title": "Senior Python Developer (gn)",
  "company": "Ambrosys GmbH Gesellschaft für Management komplexer Systeme",
  "location": "Potsdam",
  "city": "Potsdam",
  "country": "Germany",
  "postedAt": "2026-10-04T23:03:25.65Z",
  "remote": "hybrid",
  "employmentType": "full-time",
  "seniority": "senior",
  "departmentGroup": "engineering",
  "skills": [
    "Python",
    "TypeScript",
    "Scala",
    "AWS",
    "Azure"
  ],
  "salaryMin": 40000,
  "salaryMax": 58000,
  "salaryCurrency": "EUR",
  "salaryPeriod": "year",
  "salaryIsEstimate": true,
  "salaryYearlyMinEur": 40000,
  "salaryYearlyMaxEur": 58000,
  "daysSincePosted": 12,
  "industry": "IT, IT-Softwareentwicklung",
  "descriptionSnippet": "Gesucht wird ein Senior Python Developer (gn) für die Entwicklung von Backends und skalierbaren Dateninfrastrukturen für verschiedene Projekte. Mindestens drei Jahre Python-Erfahrung, umfassende Kenntnisse in Microservice-Architektur und Cloud-Systemen sowie ein Bachelor in MINT oder vergleichbar werden vorausgesetzt.",
  "url": "https://www.stepstone.de/stellenangebote--Senior-Python-Developer-gn-Potsdam-Ambrosys-GmbH-Gesellschaft-fuer-Management-komplexer-Systeme--11627166-inline.html",
  "recordType": "job"
}
```

Company hiring signal (`recordType: "company-signal"`, enable `companySignals`):

```json
{
  "recordType": "company-signal",
  "company": "N26",
  "openJobs": 8,
  "jobsPostedLast7Days": 0,
  "hiringVelocity": "low",
  "sources": [
    "greenhouse"
  ],
  "departments": [
    {
      "departmentGroup": "operations-logistics",
      "jobs": 4
    },
    {
      "departmentGroup": "engineering",
      "jobs": 1
    },
    {
      "departmentGroup": "legal",
      "jobs": 1
    }
  ],
  "seniorityMix": [
    {
      "seniority": "lead",
      "jobs": 4
    }
  ],
  "locations": [
    {
      "city": "Madrid",
      "jobs": 3
    },
    {
      "city": "Berlin",
      "jobs": 3
    },
    {
      "city": "Paris",
      "jobs": 2
    }
  ],
  "remoteShare": 0,
  "topSkills": [
    "Excel",
    "Salesforce"
  ],
  "medianSalaryYearlyEur": null,
  "newestJobAt": "2026-10-01T11:42:40.000Z"
}
```

With monitoring on, new jobs carry `listingStatus: "new"` and `firstSeenAt`; jobs already returned by earlier runs are skipped (and not charged); jobs that disappeared from a career site come as `listingStatus: "closed"` with `firstSeenAt`, `lastSeenAt` and `daysOpen`. A run summary is stored in the key-value store under `RUN_SUMMARY`.

The dataset has ready-made views: **Jobs**, **Job details**, **Company hiring signals** and **Monitoring**. Export to JSON, CSV, Excel, or connect to Google Sheets, Slack, Make, Zapier, n8n, webhooks or the API.

### Use with AI agents (MCP)

This actor works as a tool for AI agents (Claude, ChatGPT, Cursor, n8n AI agents…) through the [Apify MCP server](https://mcp.apify.com). Add it to your MCP client and ask in plain language, e.g. *"Find senior data analyst jobs in Manchester posted this week with salary"* or *"Which companies in Berlin are hiring the most sales people?"*. The country selector and company lookup by name make it easy for agents – no URLs or IDs needed.

### Pricing

Pay only for results (pay-per-event). Platform usage is included.

| Event | Free | Starter | Scale | Business |
|---|---|---|---|---|
| Job from a job board (per 1,000) | $2.50 | $2.20 | $2.00 | **$1.80** |
| Job from a company career site (per 1,000) | $6.00 | $5.50 | $5.00 | **$4.50** |
| Job details add-on (per 1,000) | $1.00 | $0.90 | $0.80 | **$0.70** |
| 💎 Premium job – Indeed / Glassdoor (per 1,000) | $4.50 | $4.20 | $3.90 | **$3.50** |
| 💎 Premium job details – Indeed / Glassdoor (per 1,000) | $6.00 | $5.70 | $5.40 | **$5.00** |
| Company hiring signal (each) | $0.010 | $0.009 | $0.008 | **$0.007** |

Example: 1,000 jobs from the job boards with full descriptions on the Starter plan = $2.20 + $0.90 = **$3.10**. Jobs already seen are **not charged again** when `onlyNewJobs` is on. Set *Maximum cost per run* in the run options to cap spending – the actor stops cleanly when the budget is reached.

### Tips

- Leave **cities empty** to search a whole country, or add cities to narrow it down.
- Use **several short queries** (`"python"`, `"backend"`) instead of one long one – boards match titles.
- LinkedIn shows max ~1,000 results per search; split big searches by location or `postedWithin`.
- For daily alerts: create a task with `onlyNewJobs: true` + a `monitorId`, then add a **schedule** and a Slack / e-mail integration.
- `includeDetails` is needed for full descriptions, LinkedIn applicants count and the most accurate skills.
- Career sites are the best source for **closed-job detection** and complete company coverage.

### Limitations

- **InfoJobs** (Spain) is not supported. Indeed and Glassdoor are available as a paid premium add-on.
- Totaljobs / CWJobs job pages are protected – their results contain title, company, location, salary and snippet, but no full description.
- XING has no native remote/date filters – these are applied after scraping. XING only understands city names, so it is skipped for country-wide searches in Austria and Switzerland.
- karriere.at shows relative dates ("vor 5 Tagen"), so `postedAt` there is accurate to the day.
- Closed-job detection works for **career sites** only (job boards hide expired ads inconsistently).
- Salary estimates (StepStone, XING, jobs.ch) are provided by the board and flagged with `salaryIsEstimate: true`.
- Only publicly visible job data is collected – no login, no personal data of applicants.

### FAQ

**Is it legal?** The actor collects publicly available job postings, the same information anyone sees without logging in. Make sure your use complies with GDPR and the terms of the respective sites.

**How fresh is the data?** Live – every run reads the sites at that moment.

**Can I add my own job board or ATS?** Open an issue on the Issues tab – popular requests are added quickly.

**Something broke?** Sites change. Report it in Issues with the run ID and it will be fixed fast.

***

### 🇩🇪 Deutsch

**Jobs & Hiring Signals** durchsucht mit einem Klick alle passenden Jobbörsen eines Landes: Deutschland (LinkedIn, StepStone, XING), Österreich (karriere.at, StepStone.at), Schweiz (jobs.ch), dazu UK, Polen, Frankreich und 15 weitere Länder. Alle offenen Stellen einer Firma holt der Actor direkt von der Karriereseite – einfach den Firmennamen oder die Website eingeben (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio, Workday, Workable, Teamtailor, JOIN, Softgarden, BambooHR, Breezy, Pinpoint, Rippling, Jobvite werden automatisch erkannt). Ergebnis: ein einheitliches Format mit Jahresgehalt in EUR, Remote/Hybrid, Seniorität, Abteilung und Skills; Dubletten über alle Jobbörsen werden zusammengeführt. **Hiring Signals** zeigen pro Firma offene Stellen, Einstellungstempo, Abteilungen und Standorte – ideal für Recruiter, Personalvermittler und Vertrieb. Mit `onlyNewJobs` nur neue Stellen. Ab **1,80 $ pro 1.000 Jobs**, ohne Login.

### 🇵🇱 Polski

**Jobs & Hiring Signals** – wybierz kraj, wpisz stanowisko i gotowe. Dla Polski przeszukuje jednocześnie **Pracuj.pl, JustJoin.it, No Fluff Jobs i LinkedIn**, a dla innych krajów odpowiednie portale (StepStone, XING, Reed, Totaljobs, karriere.at, jobs.ch, Welcome to the Jungle). Oferty firm pobiera prosto ze stron kariery – wystarczy wpisać nazwę firmy lub jej stronę www. Wszystko w jednym formacie: wynagrodzenie (B2B i UoP osobno) przeliczone na rok w EUR, praca zdalna/hybrydowa, poziom stanowiska, dział i umiejętności; duplikaty z różnych portali są łączone. **Sygnały rekrutacyjne** pokazują, które firmy intensywnie zatrudniają – świetne źródło leadów sprzedażowych i dla agencji. Monitoring zwraca tylko nowe oferty. Od **1,80 $ za 1000 ofert**.

### 🇫🇷 Français

Choisissez un pays et un poste : l'actor interroge en une seule exécution **LinkedIn et Welcome to the Jungle** (et, selon le pays, StepStone, Reed, Totaljobs, jobs.ch, karriere.at, Pracuj…), et récupère toutes les offres des pages carrières des entreprises – il suffit d'entrer le nom de l'entreprise. Format unifié : salaire annuel en EUR, télétravail, séniorité, compétences, doublons fusionnés, **signaux de recrutement** par entreprise et alertes des nouvelles offres. À partir de **1,80 $ / 1 000 offres**.

### 🇪🇸 Español

Elige un país y un puesto: el actor busca a la vez en **LinkedIn y Welcome to the Jungle** (y según el país en StepStone, Reed, Totaljobs, jobs.ch, karriere.at, Pracuj…) y extrae todas las vacantes de las páginas de empleo de las empresas – basta con escribir el nombre de la empresa. Formato único: salario anual en EUR, remoto/híbrido, seniority, habilidades, duplicados fusionados, **señales de contratación** y alertas de nuevas ofertas. Desde **1,80 $ por 1.000 ofertas**.

### 🇮🇹 Italiano

Scegli un paese e una posizione: l'actor cerca contemporaneamente su **LinkedIn e Welcome to the Jungle** (e, a seconda del paese, StepStone, Reed, Totaljobs, jobs.ch, karriere.at, Pracuj…) e raccoglie tutte le posizioni aperte dai siti carriere aziendali – basta inserire il nome dell'azienda. Formato unico: stipendio annuo in EUR, remoto/ibrido, seniority, competenze, duplicati uniti, **segnali di assunzione** e avvisi per nuove offerte. Da **1,80 $ ogni 1.000 annunci**.

### 🇳🇱 Nederlands

Kies een land en een functie: de actor doorzoekt tegelijk **LinkedIn, StepStone en Welcome to the Jungle** (en afhankelijk van het land Reed, Totaljobs, jobs.ch, karriere.at, Pracuj…) en haalt alle vacatures direct van carrièresites – typ gewoon de bedrijfsnaam. Eén formaat: jaarsalaris in EUR, remote/hybride, senioriteit, skills, samengevoegde duplicaten, **hiring signals** per bedrijf en meldingen voor nieuwe vacatures. Vanaf **$1,80 per 1.000 vacatures**.

# Changelog

This Actor's version history is a separate document: https://apify.com/liveclaude/job-scraper/changelog.md

# Actor input Schema

## `searchQueries` (type: `array`):

What to search for, e.g. <code>python developer</code>, <code>account executive</code>, <code>Pflegefachkraft</code>. One search per line.

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

Cities or regions, e.g. <code>Berlin</code>, <code>London</code>, <code>Warszawa</code>, <code>Paris</code>. Leave empty to search the whole country selected below. Every search term is combined with every location.

## `country` (type: `string`):

Pick a country and the actor automatically searches the right job boards there (listed next to each country) and keeps LinkedIn results inside that country. Want different boards? Choose them below in <b>Job boards</b>.

## `sources` (type: `array`):

Leave empty to use the boards of the selected country. Or pick boards yourself – e.g. LinkedIn + Reed for the UK, or JustJoin.it + No Fluff Jobs for Polish IT jobs.

## `premiumSources` (type: `array`):

Also search <b>Indeed</b> and <b>Glassdoor</b> in the selected country. Both sites are heavily protected and need a paid unblocking service, so their jobs are billed as <b>premium jobs</b> (see Pricing tab). Leave empty to use the free-tier boards only.

## `startUrls` (type: `array`):

Paste search result links (with any filters) or single job links from LinkedIn, StepStone, Totaljobs, Reed, XING, karriere.at, jobs.ch, Pracuj, JustJoin.it, No Fluff Jobs or Welcome to the Jungle – or company career site links.

## `companies` (type: `array`):

Get every open job straight from the company's own career site. Just type the <b>company name</b> (<code>N26</code>) or <b>website</b> (<code>n26.com</code>) – the actor finds its career site automatically. Supported: Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio, Workday, Workable, Teamtailor, JOIN, Softgarden, BambooHR, Breezy, Pinpoint, Rippling and Jobvite. You can also paste the careers link (e.g. <code>https://jobs.lever.co/palantir</code>, <code>https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite</code>) or <code>greenhouse:stripe</code>.

## `postedWithin` (type: `string`):

Only recently posted jobs.

## `workplace` (type: `string`):

Remote, hybrid or on-site jobs.

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

Type of contract.

## `experience` (type: `string`):

LinkedIn experience filter.

## `radiusKm` (type: `integer`):

Search radius around the location (StepStone, XING, Pracuj).

## `minSalaryEur` (type: `integer`):

Skip jobs whose salary range is below this (converted to yearly EUR). Jobs without a salary are kept unless 'Only jobs with salary' is on.

## `onlyWithSalary` (type: `boolean`):

Keep only jobs that show a salary or salary estimate.

## `titleMustInclude` (type: `array`):

Keep only jobs whose title contains one of these words.

## `excludeKeywords` (type: `array`):

Skip jobs whose title or company contains any of these words, e.g. <code>werkstudent</code>, <code>praktikum</code>.

## `locationMustInclude` (type: `array`):

Keep only jobs whose location contains one of these words - useful for career sites, e.g. <code>Germany</code>, <code>Remote</code>.

## `excludeCompanies` (type: `array`):

Skip jobs from these companies (e.g. staffing agencies).

## `sort` (type: `string`):

Order of job board results.

## `maxJobsPerSearch` (type: `integer`):

Per search term + location + board. 0 = all available.

## `maxJobsPerCompany` (type: `integer`):

0 = all open jobs.

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

Open every job board posting for the full description, seniority, employment type, industry, applicant count (LinkedIn) and exact address. Career site jobs already include the full description.

## `dedupe` (type: `boolean`):

The same job posted on several boards is returned once, with links to all boards in alsoFoundOn.

## `companySignals` (type: `boolean`):

Adds one record per company: open jobs, jobs posted in the last 7 days, hiring velocity, departments, seniority mix, locations, remote share, top skills and median salary. Great for B2B sales prospecting.

## `minJobsPerCompany` (type: `integer`):

Only companies with at least this many jobs get a signal record.

## `onlyNewJobs` (type: `boolean`):

Remember jobs between runs and return only new ones. Schedule the Actor for job alerts.

## `monitorId` (type: `string`):

Optional name to keep separate memories for different monitors.

## `emitOnFirstRun` (type: `boolean`):

Turn off to only save a baseline on the first run.

## `detectClosedJobs` (type: `boolean`):

Report jobs that disappeared from company career sites since the last run, with the number of days they were open.

## `stepstoneCountry` (type: `string`):

StepStone site to search. By default it follows the selected country.

## `maxConcurrency` (type: `integer`):

Parallel requests.

## `proxyConfiguration` (type: `object`):

Apify Proxy is used automatically.

## Actor input object example

```json
{
  "searchQueries": [
    "python developer"
  ],
  "locations": [
    "Berlin"
  ],
  "country": "de",
  "companies": [],
  "postedWithin": "any",
  "workplace": "any",
  "employmentType": "any",
  "experience": "any",
  "onlyWithSalary": false,
  "sort": "date",
  "maxJobsPerSearch": 100,
  "maxJobsPerCompany": 0,
  "includeDetails": false,
  "dedupe": true,
  "companySignals": false,
  "minJobsPerCompany": 2,
  "onlyNewJobs": false,
  "emitOnFirstRun": true,
  "detectClosedJobs": true,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {
    "searchQueries": [
        "python developer"
    ],
    "locations": [
        "Berlin"
    ],
    "country": "de",
    "companies": [],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("liveclaude/job-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 = {
    "searchQueries": ["python developer"],
    "locations": ["Berlin"],
    "country": "de",
    "companies": [],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("liveclaude/job-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 '{
  "searchQueries": [
    "python developer"
  ],
  "locations": [
    "Berlin"
  ],
  "country": "de",
  "companies": [],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call liveclaude/job-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,liveclaude/job-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/rnIWMtINSxY8AGGzY/builds/A7erO3rve4zGcEymd/openapi.json
