# SmartRecruiters Jobs Scraper - Career Page Jobs API (`groupoject/smartrecruiters-jobs-scraper`) Actor

Scrape SmartRecruiters jobs from public company career pages. Extract titles, companies, locations, departments, descriptions, employment data, dates, and apply links. Monitor new openings without a login, proxy, or API key.

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

## Pricing

from $1.00 / 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.

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

## SmartRecruiters Jobs Scraper - Career Page Jobs API

Scrape public job postings from any company using SmartRecruiters. Extract structured titles, companies, locations, departments, employment types, experience levels, descriptions, release dates, job links, and application URLs without a browser, login, proxy, or SmartRecruiters API key.

The Actor reads SmartRecruiters' public Posting API, making it fast and suitable for job-board feeds, recruitment intelligence, competitor hiring monitoring, sales signals, and scheduled new-job alerts.

### Why use this SmartRecruiters scraper?

- **Direct structured data** - no brittle CSS selectors or browser rendering.
- **Multiple companies per run** - paste company IDs or public career URLs.
- **Full descriptions** - optionally enrich every row with all job-ad sections.
- **Practical filters** - keyword, location, department, employment type, remote, and posting age.
- **New-job monitoring** - remember seen job IDs and output only fresh openings on schedules.
- **Normalized output** - one consistent row per job for CSV, JSON, Sheets, databases, or APIs.

### Input

You can provide company career URLs:

```json
{
  "companyUrls": [
    "https://jobs.smartrecruiters.com/BoschGroup",
    "https://jobs.smartrecruiters.com/Visa"
  ],
  "keywords": ["engineer", "developer", "data"],
  "maxTotalJobs": 100
}
````

Or provide company identifiers directly:

```json
{
  "companyIds": ["BoschGroup", "Visa", "Ubisoft2"],
  "remoteOnly": true,
  "postedWithinDays": 30
}
```

The company ID is the first path segment after `jobs.smartrecruiters.com/`. For example, the ID in `https://jobs.smartrecruiters.com/BoschGroup` is `BoschGroup`.

### Output

Each dataset item represents one public job posting:

```json
{
  "companyName": "Example Company",
  "companyId": "ExampleCompany",
  "jobId": "744000123456789",
  "referenceNumber": "REF123",
  "title": "Senior Data Engineer",
  "department": "Engineering",
  "jobFunction": "Information Technology",
  "industry": "Software",
  "location": "London, England, gb",
  "country": "gb",
  "remoteType": "Remote",
  "employmentType": "Full-time",
  "experienceLevel": "Mid-Senior Level",
  "description": "Build reliable data products...",
  "postedAt": "2026-06-20T12:00:00Z",
  "jobUrl": "https://jobs.smartrecruiters.com/ExampleCompany/744000123456789",
  "applyUrl": "https://jobs.smartrecruiters.com/ExampleCompany/744000123456789/apply",
  "isNew": true
}
```

Fields vary because companies choose what to publish. The Actor never invents missing values.

### Monitor new jobs

Turn on `monitorMode` to save job IDs between runs. Pair it with an Apify schedule and `onlyNewJobs` to create a clean feed of openings that appeared since the previous run.

```json
{
  "companyIds": ["BoschGroup", "Visa", "Ubisoft2"],
  "monitorMode": true,
  "onlyNewJobs": true,
  "stateKey": "enterprise-hiring-watch"
}
```

Use a different `stateKey` for each saved task or monitoring scope.

### Use cases

#### Recruitment and job aggregation

Build fresh SmartRecruiters job feeds without depending on delayed aggregator copies.

#### Competitor hiring intelligence

Track which departments, countries, and role families target companies are expanding.

#### Sales and investment signals

Use new openings as indicators of headcount growth, technology investment, or geographic expansion.

#### Job alerts and automation

Schedule the Actor and send new rows to Slack, email, Make, Zapier, n8n, Google Sheets, or your database.

### Performance and cost

The Actor uses HTTP requests rather than a browser. Listing-only runs need one request per 100 jobs. Full descriptions require one additional public request per job, so disable `includeDescription` when you only need a fast title-and-link feed.

### FAQ

#### Does this need a SmartRecruiters account or API key?

No. It reads public company job boards and public posting endpoints.

#### Does it scrape applicant or candidate data?

No. It only collects publicly advertised jobs. It does not access recruiter dashboards, applications, candidates, or private records.

#### Can it scrape every SmartRecruiters company automatically?

Provide the companies you want to monitor. This keeps runs predictable and avoids billing users for unrelated jobs.

#### Why did a company return no jobs?

The company ID may be incorrect, the company may have no open public postings, or it may have moved to another recruiting platform. Check the public career URL in a browser.

#### Is the output legal to use?

The Actor accesses public job advertisements without bypassing authentication. You are responsible for complying with applicable laws, SmartRecruiters' terms, and the terms of the companies whose jobs you process.

# Actor input Schema

## `companyUrls` (type: `array`):

Public SmartRecruiters company or job URLs, for example https://jobs.smartrecruiters.com/BoschGroup.

## `companyIds` (type: `array`):

SmartRecruiters company identifiers such as BoschGroup, Visa, or Ubisoft2.

## `companyUrlsText` (type: `string`):

Paste one SmartRecruiters URL or company ID per line.

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

Keep jobs matching any keyword in the title, company, location, department, or description. Leave empty for all jobs.

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

Keep jobs matching any city, region, or country text.

## `departments` (type: `array`):

Filter by department or job function, such as Engineering, Sales, or Marketing.

## `employmentTypes` (type: `array`):

Filter by employment labels such as Full-time, Part-time, Contract, or Internship.

## `remoteOnly` (type: `boolean`):

Only keep postings marked or described as remote.

## `includeDescription` (type: `boolean`):

Fetch each posting and combine its description sections into clean text.

## `includeHtmlDescription` (type: `boolean`):

Also keep the original HTML from SmartRecruiters job-ad sections.

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

Maximum postings to read from each company board.

## `maxTotalJobs` (type: `integer`):

Maximum dataset rows across all company boards.

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

Optional freshness filter based on the SmartRecruiters release date.

## `monitorMode` (type: `boolean`):

Remember job IDs across runs so schedules can identify new openings.

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

With monitor mode enabled, save only postings not seen in previous runs.

## `stateKey` (type: `string`):

Optional stable key. Use a different value for each saved monitoring task.

## `requestDelayMs` (type: `integer`):

Delay between detail and company API calls.

## `debugMode` (type: `boolean`):

Enable verbose logs for troubleshooting.

## Actor input object example

```json
{
  "companyUrls": [
    "https://jobs.smartrecruiters.com/BoschGroup",
    "https://jobs.smartrecruiters.com/Visa"
  ],
  "keywords": [
    "engineer",
    "developer",
    "data"
  ],
  "remoteOnly": false,
  "includeDescription": true,
  "includeHtmlDescription": false,
  "maxJobsPerCompany": 100,
  "maxTotalJobs": 500,
  "monitorMode": false,
  "onlyNewJobs": false,
  "requestDelayMs": 100,
  "debugMode": false
}
```

# Actor output Schema

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

One row per public SmartRecruiters posting.

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

Counts, top companies, top locations, duration, and source health.

## `sources` (type: `string`):

Per-company API status, kept counts, and errors.

# 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 = {
    "companyUrls": [
        "https://jobs.smartrecruiters.com/BoschGroup",
        "https://jobs.smartrecruiters.com/Visa"
    ],
    "keywords": [
        "engineer",
        "developer",
        "data"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("groupoject/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 = {
    "companyUrls": [
        "https://jobs.smartrecruiters.com/BoschGroup",
        "https://jobs.smartrecruiters.com/Visa",
    ],
    "keywords": [
        "engineer",
        "developer",
        "data",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("groupoject/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 '{
  "companyUrls": [
    "https://jobs.smartrecruiters.com/BoschGroup",
    "https://jobs.smartrecruiters.com/Visa"
  ],
  "keywords": [
    "engineer",
    "developer",
    "data"
  ]
}' |
apify call groupoject/smartrecruiters-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SmartRecruiters Jobs Scraper - Career Page Jobs API",
        "description": "Scrape SmartRecruiters jobs from public company career pages. Extract titles, companies, locations, departments, descriptions, employment data, dates, and apply links. Monitor new openings without a login, proxy, or API key.",
        "version": "1.0",
        "x-build-id": "kHeUV8xRhnrfnrgUM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/groupoject~smartrecruiters-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-groupoject-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/groupoject~smartrecruiters-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-groupoject-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/groupoject~smartrecruiters-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-groupoject-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",
                "properties": {
                    "companyUrls": {
                        "title": "SmartRecruiters career URLs",
                        "type": "array",
                        "description": "Public SmartRecruiters company or job URLs, for example https://jobs.smartrecruiters.com/BoschGroup.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyIds": {
                        "title": "Company IDs",
                        "type": "array",
                        "description": "SmartRecruiters company identifiers such as BoschGroup, Visa, or Ubisoft2.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyUrlsText": {
                        "title": "URLs or company IDs as text",
                        "type": "string",
                        "description": "Paste one SmartRecruiters URL or company ID per line."
                    },
                    "keywords": {
                        "title": "Keyword filters",
                        "type": "array",
                        "description": "Keep jobs matching any keyword in the title, company, location, department, or description. Leave empty for all jobs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Location filters",
                        "type": "array",
                        "description": "Keep jobs matching any city, region, or country text.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "departments": {
                        "title": "Department or function filters",
                        "type": "array",
                        "description": "Filter by department or job function, such as Engineering, Sales, or Marketing.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "employmentTypes": {
                        "title": "Employment type filters",
                        "type": "array",
                        "description": "Filter by employment labels such as Full-time, Part-time, Contract, or Internship.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "remoteOnly": {
                        "title": "Remote jobs only",
                        "type": "boolean",
                        "description": "Only keep postings marked or described as remote.",
                        "default": false
                    },
                    "includeDescription": {
                        "title": "Include plain text description",
                        "type": "boolean",
                        "description": "Fetch each posting and combine its description sections into clean text.",
                        "default": true
                    },
                    "includeHtmlDescription": {
                        "title": "Include HTML description",
                        "type": "boolean",
                        "description": "Also keep the original HTML from SmartRecruiters job-ad sections.",
                        "default": false
                    },
                    "maxJobsPerCompany": {
                        "title": "Max jobs per company",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum postings to read from each company board.",
                        "default": 100
                    },
                    "maxTotalJobs": {
                        "title": "Max total jobs",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum dataset rows across all company boards.",
                        "default": 500
                    },
                    "postedWithinDays": {
                        "title": "Posted within days",
                        "minimum": 1,
                        "maximum": 3650,
                        "type": "integer",
                        "description": "Optional freshness filter based on the SmartRecruiters release date."
                    },
                    "monitorMode": {
                        "title": "Monitor mode",
                        "type": "boolean",
                        "description": "Remember job IDs across runs so schedules can identify new openings.",
                        "default": false
                    },
                    "onlyNewJobs": {
                        "title": "Only output new jobs",
                        "type": "boolean",
                        "description": "With monitor mode enabled, save only postings not seen in previous runs.",
                        "default": false
                    },
                    "stateKey": {
                        "title": "Monitor state key",
                        "type": "string",
                        "description": "Optional stable key. Use a different value for each saved monitoring task."
                    },
                    "requestDelayMs": {
                        "title": "Request delay (ms)",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Delay between detail and company API calls.",
                        "default": 100
                    },
                    "debugMode": {
                        "title": "Debug mode",
                        "type": "boolean",
                        "description": "Enable verbose logs for troubleshooting.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
