# SmartRecruiters Jobs Scraper (`parseforge/smartrecruiters-jobs-scraper`) Actor

Scrape job postings from SmartRecruiters public company career pages. Get title, location, department, employment type, compensation, posted date, full description. No API key required.

- **URL**: https://apify.com/parseforge/smartrecruiters-jobs-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $33.68 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/parseforge-banner.png)

## 💼 SmartRecruiters Jobs Scraper

> 🚀 **Export every public job posting from any SmartRecruiters company career site in seconds.** Filter by country, department, or pull the entire catalog. No API key, no registration, no recruiter login.

> 🕒 **Last updated:** 2026-05-12 · **📊 38 fields** per record · **🏢 4,000+ employers** on SmartRecruiters · **🌍 100+ countries** · **🔓 Public API**

The **SmartRecruiters Jobs Scraper** pulls live job postings from any company's public career page on SmartRecruiters. Pass a `companyIdentifier` like `BoschGroup`, `Spotify1`, `OneSignal`, or `IKEA` and the Actor returns **38 fields per posting**: title, location with latitude and longitude, employment type, full HTML description, qualifications, custom fields, recruiter contact, and the canonical apply URL. The platform hosts careers pages for thousands of employers including Bosch, Square, Twitch, Visa, Marc Jacobs, IKEA, and Allianz, all reachable through one consistent endpoint.

The Actor walks the public `api.smartrecruiters.com` endpoints, paginates through every posting, and optionally fetches the full job ad detail for description, qualifications, and additional information sections. Records arrive ready for ATS sync, careers-board ingestion, compensation benchmarking, or geographic talent-market analysis. Server-side filters for country code (ISO alpha-2) and department label let you target exactly the slice you need without downloading the full catalog first.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Talent intelligence teams, ATS integrators, recruitment marketing agencies, job aggregators, market researchers, sourcing teams, HR-tech founders | Competitive hiring intel, location-based talent mapping, salary benchmarking, careers-page mirroring, recruiter outreach lists, internal mobility studies |

---

### 📋 What the SmartRecruiters Jobs Scraper does

Four filtering workflows in a single run:

- 🏢 **Company-wide export.** Pull every public posting for one employer slug across all locations.
- 🌍 **Country filter.** Restrict to ISO 3166-1 alpha-2 codes like `us`, `de`, `fr`, `mx`, or `in`.
- 🏷️ **Department filter.** Narrow to a single department label such as Engineering, Finance, or Sales.
- 📦 **Volume control.** Cap with `maxItems`, or leave empty to fetch the full posting count.

Each record includes a stable job ID and UUID, posting URL, apply URL, employer description, full geographic context with latitude and longitude, industry classification, function, type of employment, experience level, language, full HTML job ad sections, recruiter name and avatar, and an array of custom fields the employer attached such as contract type, working hours, brand, and legal entity.

> 💡 **Why it matters:** SmartRecruiters powers careers pages for thousands of mid-market and enterprise employers including Bosch, IKEA, Square, and Visa. Scraping each careers site one-off means writing brittle HTML parsers and refreshing daily. This Actor hits the platform's public API once per company and returns clean structured data with geocoded locations, employment metadata, and custom HR fields ready to load into your warehouse.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded jobs dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>companyIdentifier</code></td><td>string</td><td><code>"BoschGroup"</code></td><td>SmartRecruiters company slug from the careers URL. Case sensitive. Find it on careers.smartrecruiters.com/{Identifier}.</td></tr>
<tr><td><code>country</code></td><td>string</td><td><code>""</code></td><td>Optional ISO 3166-1 alpha-2 lowercase code (e.g. <code>us</code>, <code>de</code>, <code>fr</code>). Empty = all countries.</td></tr>
<tr><td><code>department</code></td><td>string</td><td><code>""</code></td><td>Optional department label filter. Empty = all departments.</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
</tbody>
</table>

**Example: every Bosch posting in Germany.**

```json
{
    "companyIdentifier": "BoschGroup",
    "country": "de",
    "maxItems": 500
}
````

**Example: a full company catalog for a smaller employer.**

```json
{
    "companyIdentifier": "OneSignal",
    "maxItems": 1000
}
```

> ⚠️ **Good to Know:** the `companyIdentifier` is case sensitive. Use the exact spelling from the careers URL (e.g. `BoschGroup`, not `boschgroup`). When `country` and `department` are both set, both filters apply.

***

### 📊 Output

Each job posting record contains up to **38 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `id` | string | `"744000126124207"` |
| 🔗 `url` | string | `"https://jobs.smartrecruiters.com/BoschGroup/744000126124207-..."` |
| 📌 `name` | string | `"Finanzbuchhalter/Controller (w/m/div.)"` |
| 🏷️ `uuid` | string | `"a2d822e3-c2e9-4ba2-adf5-ecdbf24fac47"` |
| 🆔 `jobId` | string | null | `"244cd569-81f8-4af4-ad1b-38ee56d25c74"` |
| 🏷️ `jobAdId` | string | null | `"02cea24a-4b9d-436c-9177-11dd6f0fe42d"` |
| 🔢 `refNumber` | string | null | `"REF280969S"` |
| 🔗 `applyUrl` | string | null | `"https://jobs.smartrecruiters.com/.../apply"` |
| 🔗 `postingUrl` | string | null | `"https://jobs.smartrecruiters.com/..."` |
| 🔗 `referralUrl` | string | null | `"https://jobs.smartrecruiters.com/external-referrals/..."` |
| ✅ `active` | boolean | null | `true` |
| 👁️ `visibility` | string | null | `"PUBLIC"` |
| 🏢 `companyIdentifier` | string | `"BoschGroup"` |
| 🏢 `companyName` | string | `"Bosch Group"` |
| 📝 `companyDescription` | string | null | `"<p><strong>Die AIG...</strong></p>"` |
| 👤 `creatorName` | string | null | `"Jane Recruiter"` |
| 🖼️ `creatorAvatarUrl` | string | null | `"https://..."` |
| 📅 `releasedDate` | ISO 8601 | `"2026-05-12T15:41:07.354Z"` |
| 🏙️ `city` | string | null | `"Stuttgart"` |
| 🗺️ `region` | string | null | `"BW"` |
| 🏳️ `country` | string | null | `"de"` |
| 📍 `address` | string | null | `"Weissacher Straße 11"` |
| 📮 `postalCode` | string | null | `"70499"` |
| 🏠 `remote` | boolean | null | `false` |
| 🔀 `hybrid` | boolean | null | `false` |
| 📍 `latitude` | number | null | `48.8239254` |
| 📍 `longitude` | number | null | `9.091698` |
| 🌍 `fullLocation` | string | null | `"Stuttgart, BW, Germany"` |
| 🏭 `industry` | string | null | `"Architecture And Planning"` |
| 🏷️ `department` | string | null | `"Sales"` |
| ⚙️ `function` | string | null | `"Finance"` |
| 💼 `typeOfEmployment` | string | null | `"Full-time"` |
| 📈 `experienceLevel` | string | null | `"Associate"` |
| 🗣️ `language` | string | null | `"de"` |
| 📝 `description` | string | null | `"<p>Zahlen sind für dich...</p>"` |
| 🎓 `qualifications` | string | null | `"<ul><li><strong>Ausbildung...</strong></li></ul>"` |
| 📋 `additionalInformation` | string | null | `"<p>Wir bieten flexible...</p>"` |
| 🧩 `customFields` | array | `[{"field":"Contract type","value":"Unlimited"}]` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-12T16:30:13.696Z"` |

#### 📦 Sample records

<details>
<summary><strong>🇩🇪 Senior finance role at Bosch Stuttgart with full custom HR fields</strong></summary>

```json
{
    "id": "744000126124207",
    "url": "https://jobs.smartrecruiters.com/BoschGroup/744000126124207-finanzbuchhalter-controller-w-m-div-",
    "name": "Finanzbuchhalter/Controller (w/m/div.)",
    "uuid": "a2d822e3-c2e9-4ba2-adf5-ecdbf24fac47",
    "refNumber": "REF280969S",
    "active": true,
    "visibility": "PUBLIC",
    "companyName": "Bosch Group",
    "releasedDate": "2026-05-12T15:41:07.354Z",
    "city": "Stuttgart",
    "region": "BW",
    "country": "de",
    "postalCode": "70499",
    "latitude": 48.8239254,
    "longitude": 9.091698,
    "fullLocation": "Stuttgart, BW, Germany",
    "industry": "Architecture And Planning",
    "function": "Finance",
    "typeOfEmployment": "Full-time",
    "experienceLevel": "Associate",
    "language": "de",
    "customFields": [
        {"field": "Contract type", "value": "Unlimited"},
        {"field": "Legal Entity", "value": "AIG Planungs- und Ingenieurgesellschaft mbH"},
        {"field": "Working hours", "value": "Full-time and/or part-time"}
    ],
    "scrapedAt": "2026-05-12T16:30:13.696Z"
}
```

</details>

<details>
<summary><strong>🇲🇽 SAP consultant role at Bosch Guadalajara (LATAM market)</strong></summary>

```json
{
    "id": "744000126123389",
    "url": "https://jobs.smartrecruiters.com/BoschGroup/744000126123389-sap-fico-tax-process-expert",
    "name": "SAP FICO Tax Process Expert",
    "uuid": "f100433d-f710-4107-9c1b-9922305f810d",
    "refNumber": "REF285103J",
    "active": true,
    "companyName": "Bosch Group",
    "releasedDate": "2026-05-12T15:34:41.353Z",
    "city": "Guadalajara",
    "region": "Jal.",
    "country": "mx",
    "address": "Avenida Ignacio L Vallarta",
    "postalCode": null,
    "latitude": 20.6746706,
    "longitude": -103.3639544,
    "fullLocation": "Guadalajara, Jal., Mexico",
    "industry": "Mechanical Or Industrial Engineering",
    "function": "Engineering",
    "typeOfEmployment": "Full-time",
    "experienceLevel": "Associate",
    "language": "en",
    "customFields": [
        {"field": "Local Grade", "value": "MX_E4"},
        {"field": "Country/Region", "value": "Mexico"}
    ],
    "scrapedAt": "2026-05-12T16:30:13.734Z"
}
```

</details>

<details>
<summary><strong>🌐 Minimal posting with sparse optional fields</strong></summary>

```json
{
    "id": "744000098234511",
    "url": "https://jobs.smartrecruiters.com/OneSignal/744000098234511-software-engineer",
    "name": "Software Engineer",
    "uuid": "c3a9bf80-1ff2-4c1f-9c6e-aa20fd9e1234",
    "refNumber": null,
    "active": true,
    "companyName": "OneSignal",
    "releasedDate": "2026-04-20T10:00:00.000Z",
    "city": null,
    "region": null,
    "country": "us",
    "remote": true,
    "hybrid": false,
    "latitude": null,
    "longitude": null,
    "fullLocation": "Remote, United States",
    "industry": null,
    "function": "Engineering",
    "typeOfEmployment": "Full-time",
    "experienceLevel": null,
    "language": "en",
    "customFields": [],
    "scrapedAt": "2026-05-12T16:30:13.812Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🏢 | **Any SmartRecruiters employer.** Works for every public careers page on the platform with just a slug. |
| 🌍 | **Geocoded locations.** Each posting includes latitude, longitude, region, postal code, and a clean `fullLocation` string. |
| 📝 | **Full job ad content.** Description, qualifications, and additional information are returned as HTML so you keep formatting and links. |
| 🏷️ | **Custom HR fields.** Employer-specific tags such as contract type, legal entity, brand, and working hours arrive as a structured array. |
| ⚡ | **Fast.** 100 postings per page with concurrency 10 on detail fetches. Hundreds of jobs in under a minute. |
| 🔓 | **No login or API key.** Hits public endpoints only. No recruiter account required. |
| 🔁 | **Always fresh.** Every run pulls live postings so closed roles drop out and new ones appear. |

> 📊 SmartRecruiters powers careers pages for 4,000+ employers including Bosch, Square, IKEA, Visa, and Marc Jacobs.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ SmartRecruiters Jobs Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **Any company slug** | **Live per run** | country, department, maxItems | ⚡ 2 min |
| Paid job-board aggregator APIs | $500+/month | Cross-platform | Daily | Many | ⏳ Hours |
| Manual HTML scraping per employer | Free | One company at a time | Manual | None | 🐢 Days |
| Recruiter ATS integration | Vendor lock-in | One ATS only | Push or pull | Vendor-defined | ⏳ Weeks |

Pick this Actor when you want clean, geocoded job postings from any SmartRecruiters employer without writing per-site parsers.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the SmartRecruiters Jobs Scraper page on the Apify Store.
3. 🎯 **Set input.** Enter a `companyIdentifier`, optionally filter by country or department, and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor walk the company's posting catalog.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🎯 Talent Intelligence & Sourcing

- Competitive hiring tracking across rival employers
- Location-based talent demand maps with geo coordinates
- Department mix analysis for org reconstruction
- Sourcing-list generation by function and seniority

</td>
<td width="50%" valign="top">

#### 📰 Job Boards & Aggregators

- Mirror enterprise careers pages into vertical job sites
- Daily refresh with active flag drops out closed roles
- Apply URL preserved for direct candidate routing
- Industry and function tags for filterable indexes

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 📊 HR Analytics & Compensation

- Salary band research via custom-field tier tags
- Remote vs hybrid vs onsite distribution
- Multi-region staffing benchmarks
- Internal mobility data for HRBP teams

</td>
<td width="50%" valign="top">

#### 🛍️ Recruitment Marketing

- Refresh employer landing pages without dev work
- A/B test job ad copy via description deltas
- Cross-channel syndication to LinkedIn, Indeed mirrors
- Localized translations from `language` metadata

</td>
</tr>
</table>

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Empirical datasets for papers, thesis work, and coursework
- Longitudinal studies tracking changes across snapshots
- Reproducible research with cited, versioned data pulls
- Classroom exercises on data analysis and ethical scraping

</td>
<td width="50%">

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Data visualizations, dashboards, and infographics
- Content research for bloggers, YouTubers, and podcasters
- Hobbyist collections and personal trackers

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Transparency reporting and accountability projects
- Advocacy campaigns backed by public-interest data
- Community-run databases for local issues
- Investigative journalism on public records

</td>
<td width="50%">

#### 🧪 Experimentation

- Prototype AI and machine-learning pipelines with real data
- Validate product-market hypotheses before engineering spend
- Train small domain-specific models on niche corpora
- Test dashboard concepts with live input

</td>
</tr>
</table>

***

### 🔌 Automating SmartRecruiters Jobs Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Hourly, daily, or weekly refreshes keep downstream ATS mirrors and job boards in sync automatically.

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Enter a company slug like `BoschGroup` or `Spotify1`, optionally add country or department filters, click Start, and the Actor hits the public SmartRecruiters API, paginates through every posting, and fetches the full job ad detail for each one. No browser automation, no captchas, no recruiter login.

#### 🔍 Where do I find a company's identifier?

The slug is the last path segment in the careers URL. For example `careers.smartrecruiters.com/BoschGroup` means the identifier is `BoschGroup`. The value is case sensitive, so copy it exactly as it appears.

#### 🔁 How often is the data refreshed?

Every run pulls live data from SmartRecruiters' public API. Closed roles drop out and new postings appear within minutes of publication. Schedule the Actor hourly or daily for a fresh mirror.

#### 🌍 Can I filter by country?

Yes. Set `country` to a lowercase ISO 3166-1 alpha-2 code such as `us`, `de`, `fr`, or `mx`. Leave it empty to pull every country.

#### 🏷️ Can I filter by department?

Yes. Pass an exact department label string in the `department` field. The label must match what the employer set in SmartRecruiters (case sensitive). Leave empty for all departments.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval (hourly, daily, weekly) and keep a downstream database in sync.

#### ⚖️ Is this data legal to use?

SmartRecruiters job postings are publicly visible on each employer's careers page and indexed by major search engines. Only public listings are returned by this Actor. Review the downstream terms of your specific use case before redistributing job content.

#### 💼 Can I use this data commercially?

Yes. Public job postings are commercial-fair-use in most jurisdictions for purposes like aggregation, recruitment marketing, and analytics. You are responsible for complying with applicable laws in your region.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit and gives you access to scheduling, higher concurrency, and larger datasets.

#### 🔁 What happens if a run fails or gets interrupted?

Apify automatically retries transient errors. If a run still fails, you can inspect the log in the Runs tab, fix the input, and re-run. Partial datasets from failed runs are preserved so you never lose progress.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

SmartRecruiters Jobs Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe job data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh job postings into your ATS mirror, or alert your team in Slack.

***

### 🔗 Recommended Actors

- [**💼 Greenhouse Jobs Scraper**](https://apify.com/parseforge/greenhouse-jobs-scraper) - Public job postings from Greenhouse ATS careers pages
- [**💼 Workable Jobs Scraper**](https://apify.com/parseforge/workable-jobs-scraper) - Public job postings from Workable employer accounts
- [**💼 Lever Jobs Scraper**](https://apify.com/parseforge/lever-jobs-scraper) - Public job postings from Lever careers pages
- [**💼 Glassdoor Scraper**](https://apify.com/parseforge/glassdoor-scraper) - Company reviews, salaries, and ratings
- [**🏢 Crunchbase Scraper**](https://apify.com/parseforge/crunchbase-scraper) - Company profiles, funding rounds, and employee counts

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more recruitment and HR data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by SmartRecruiters or any of the employers whose careers pages it scrapes. All trademarks mentioned are the property of their respective owners. Only publicly available job postings are collected.

# Actor input Schema

## `companyIdentifier` (type: `string`):

SmartRecruiters company slug as shown in the careers URL (case-sensitive, e.g. 'BoschGroup', 'Spotify1', 'OneSignal'). Find it on careers.smartrecruiters.com/{Identifier}.

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

ISO 3166-1 alpha-2 lowercase country code (e.g. us, de, fr)

## `department` (type: `string`):

Department label filter

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "companyIdentifier": "BoschGroup",
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

Overview of scraped data

## `fullData` (type: `string`):

Complete dataset

# 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 = {
    "companyIdentifier": "BoschGroup",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/smartrecruiters-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 = {
    "companyIdentifier": "BoschGroup",
    "maxItems": 10,
}

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

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

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

```

## CLI example

```bash
echo '{
  "companyIdentifier": "BoschGroup",
  "maxItems": 10
}' |
apify call parseforge/smartrecruiters-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/smartrecruiters-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SmartRecruiters Jobs Scraper",
        "description": "Scrape job postings from SmartRecruiters public company career pages. Get title, location, department, employment type, compensation, posted date, full description. No API key required.",
        "version": "0.0",
        "x-build-id": "0H2D8QjvRaT43ZbLk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~smartrecruiters-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-smartrecruiters-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~smartrecruiters-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-smartrecruiters-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~smartrecruiters-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-smartrecruiters-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "companyIdentifier"
                ],
                "properties": {
                    "companyIdentifier": {
                        "title": "Company identifier",
                        "type": "string",
                        "description": "SmartRecruiters company slug as shown in the careers URL (case-sensitive, e.g. 'BoschGroup', 'Spotify1', 'OneSignal'). Find it on careers.smartrecruiters.com/{Identifier}."
                    },
                    "country": {
                        "title": "Country filter (optional)",
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 lowercase country code (e.g. us, de, fr)"
                    },
                    "department": {
                        "title": "Department filter (optional)",
                        "type": "string",
                        "description": "Department label filter"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
