# SmartRecruiters Jobs Feed | Public Posting API (`zinin/smartrecruiters-jobs-feed`) Actor

Collect published SmartRecruiters jobs from company identifiers. One structured posting per paid result, with free diagnostics.

- **URL**: https://apify.com/zinin/smartrecruiters-jobs-feed.md
- **Developed by:** [Tim Zinin](https://apify.com/zinin) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.80 / 1,000 result founds

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

## SmartRecruiters Jobs Feed

Read public job postings from SmartRecruiters company boards for job-market analysts and recruiting teams. Supply public company identifiers to receive structured titles, locations, departments, source references, and publication dates. The Actor excludes candidate records and reports blocked boards through free diagnostics.

### What you get

- One structured row per valid public job posting.
- Source identifiers, a direct source URL, and useful facts for analysis.
- Free diagnostics for source rejection, empty results, or buyer limits.
- Run it on Apify schedules, monitor it, call it through the API, and export JSON, CSV, or Excel.

### How to run it

1. Enter the public source value in **Public company identifiers**.
2. Adjust the optional result limit if needed.
3. Start the Actor and open its default dataset for results or free diagnostics.

### Pricing

Pay-per-event price: **$0.004 per valid job** (`result-found`), $0 per start and $0 per free diagnostic. 100 jobs cost $0.40. There is no Actor-specific free quota; Apify Free plan listed $5 monthly usage credit on 2026-11-01, subject to other usage. Comparator: `jobo.world/smartrecruiters-jobs-scraper-api`, observed at 5 users in the last 30 days and $0.004 for one `job` row on the Free tier (checked 2026-11-01). This matches the observed leader's unit and price; recheck Store at acceptance.

Only postings with `id`, `name`, and source `ref` are delivered through one linked dataset write and `result-found` charge. Diagnostic rows are free.

The current `result-found` event price is $0.004 per useful row. The following are Actor event charges:

| Useful rows | Actor event charges |
|---:|---:|
| 10 | $0.040 |
| 100 | $0.400 |
| 1,000 | $4.000 |

These examples assume that many valid, billed rows across one or more runs. Input limits and source availability may require several runs. Apify platform compute usage is separate.

### Input

| Field | Required | Purpose |
|---|---|---|
| `companyIdentifiers` | Yes | Company slugs used in the public SmartRecruiters postings API. |
| `maxItems` | No | Maximum number of published jobs returned across all companies. |
| `includeDescription` | No | Include sanitized public job descriptions in the output. |
| `proxyConfiguration` | No | Not used by this direct public API actor. |

```json
{
  "companyIdentifiers": [
    "SmartRecruiters",
    "Coca-Cola"
  ]
}
```

### Output

This row comes from a successful Actor run completed 2026-11-01T16:15:43.319Z. Values are copied from its dataset.

```json
{
  "id": "744000158320111",
  "name": "Senior / Lead Engineering Operations Manager",
  "department": "Engineering",
  "location": {
    "city": "Poland",
    "region": "Remote",
    "country": "pl",
    "remote": true
  },
  "companyIdentifier": "SmartRecruiters",
  "ref": "https://api.smartrecruiters.com/v1/companies/SmartRecruiters/postings/744000158320111"
}
```

| Field | Meaning |
|---|---|
| `id` | Public source identifier for this result. |
| `name` | Published product or job name. |
| `department` | Public hiring department. |
| `location` | Public job location. |
| `companyIdentifier` | Supplied public company identifier. |
| `ref` | Source posting reference or URL. |

### Other tools we built

#### Related tools

Related tools for adjacent workflows in jobs and hiring.

| Actor | What it does |
|---|---|
| [Ashby Jobs Feed | Public Posting API](https://apify.com/zinin/ashby-jobs-feed) | Pair it in the jobs and hiring workflow: Collect published Ashby jobs from supplied board names |
| [Lever Jobs Feed | Public Postings API](https://apify.com/zinin/lever-jobs-feed) | Pair it in the jobs and hiring workflow: Collect published Lever jobs from company boards |
| [Greenhouse Jobs Feed | Public Job Board API](https://apify.com/zinin/greenhouse-jobs-feed) | Pair it in the jobs and hiring workflow: Collect published Greenhouse Job Board vacancies from supplied board tokens |
| [Recruitee Jobs Feed | Public Career Offers](https://apify.com/zinin/recruitee-jobs-feed) | Pair it in the jobs and hiring workflow: Collect public Recruitee career offers from company subdomains |
| [Teamtailor Jobs Feed | Public Career Sites](https://apify.com/zinin/teamtailor-jobs-feed) | Pair it in the jobs and hiring workflow: Extract job titles, locations, dates and URLs from supplied public Teamtailor career sites |

### FAQ / Limitations

#### Source conditions

API endpoint: `https://api.smartrecruiters.com/v1/companies/{companyIdentifier}/postings?limit=100&offset=N`. GET for `SmartRecruiters` returned two posting records without authentication on 2026-11-01; GET for `Coca-Cola` returned an empty response (HTTP 200) on the same date.

The [official Posting API documentation](https://developers.smartrecruiters.com/docs/posting-api), checked 2026-11-01, says: “Posting API allows for access to a job posting that was previously made public using SmartRecruiters application.” Its [endpoint reference](https://developers.smartrecruiters.com/docs/endpoints) says `/postings` “Lists active postings published by given company.” The [Candidate Terms of Use](https://www.smartrecruiters.com/legal/terms-of-use/), checked the same date, say: “By accessing and using our Services, You agree to these Terms of Use and to our Privacy Policy.” Candidate terms cover candidate use and do not independently grant commercial redistribution rights. Operators must comply with applicable company and source conditions.

#### Limitations

- Public postings only; applicant/candidate records are not requested.
- Descriptions can contain employer-supplied personal contacts, so they are excluded by default.
- `Coca-Cola` was a live company-identifier request that returned zero postings at the snapshot time.
- No browser automation, proxy, or retries.

#### Frequently asked questions

**Does this find all SmartRecruiters companies?** No. Supply public company identifiers.

**Does it read candidates?** No. It uses the public Posting API, not applicant endpoints.

**What if the source rejects access?** HTTP 403/429 stops that source; no retry or bypass.

# Changelog

This Actor's version history is a separate document: https://apify.com/zinin/smartrecruiters-jobs-feed/changelog.md

# Actor input Schema

## `companyIdentifiers` (type: `array`):

Company slugs used in the public SmartRecruiters postings API.

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

Maximum number of published jobs returned across all companies.

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

Include sanitized public job descriptions in the output.

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

Not used by this direct public API actor.

## Actor input object example

```json
{
  "companyIdentifiers": [
    "SmartRecruiters",
    "Coca-Cola"
  ],
  "maxItems": 50,
  "includeDescription": false
}
```

# Actor output Schema

## `results` (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 = {
    "companyIdentifiers": [
        "SmartRecruiters",
        "Coca-Cola"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zinin/smartrecruiters-jobs-feed").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 = { "companyIdentifiers": [
        "SmartRecruiters",
        "Coca-Cola",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("zinin/smartrecruiters-jobs-feed").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 '{
  "companyIdentifiers": [
    "SmartRecruiters",
    "Coca-Cola"
  ]
}' |
apify call zinin/smartrecruiters-jobs-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zinin/smartrecruiters-jobs-feed"
        }
    }
}
```

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/IpafOSDBuzAh0qcU5/builds/Jg0DUm52dZ0mXscPl/openapi.json
