# Recruitee jobs scraper with snapshots and change compare

> Recruitee jobs scraper for known company boards. Get job rows with the same 20 fields, a snapshot and a run summary. Compare snapshots for changes.

URL: https://cliqtomedia.com/actors/recruitee-jobs-monitor-scraper/

Category: Jobs & hiring · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/recruitee-jobs-monitor-scraper?fpr=cliqto

Enter a Recruitee company name or link. You get clean job rows with the same 20 fields. Keep the snapshot and compare it with a later run.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `channable` in Recruitee companies. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Use this Recruitee jobs scraper to turn known company boards into job data. Enter a company slug or its Recruitee URL. Get job rows, a saved snapshot and a run summary. To see changes, supply a previous snapshot yourself.





## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.019 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Job row | $0.00045 | A job row saved to the default Dataset. |

- One job: about $0.02.
- 1,000 jobs: about $0.47.
- Every day 100 jobs, for 30 days: about $1.92 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/recruitee-jobs-monitor-scraper?fpr=cliqto

## Questions

### How many companies can I add?

One to four companies, with up to 25 jobs each.

### How do I see changes?

Use changes mode and paste the full SNAPSHOT from your last run.

### Does it send alerts?

No. It does not send notifications or keep history for you.

### Is an empty salary zero pay?

No. It means the company did not publish a salary.

## Data fields

- `_type` (string): Always job for a job row.
- `_schemaVersion` (string): Job row format version, currently 1.0.
- `_source` (string): Always recruitee.
- `company` (string): Normalized Recruitee company slug.
- `jobId` (string): Source job ID or stable URL-derived fallback.
- `title` (string): Published job title.
- `department` (string): Source department, or null when absent.
- `team` (string): Source team, or null when absent; not inferred from department.
- `location` (string): Source primary location, required and trimmed.
- `allLocations` (array): Distinct location labels in source order.
- `workplaceType` (string): Source-derived remote, hybrid or on-site; absent or unusable flags cause schema drift.
- `commitment` (string): Full-time, Part-time, Contract, Freelance, Internship or Temporary from a supported source employment code; unknown codes cause schema drift.
- `country` (string): Valid two-letter source country_code uppercased, or required source country text when code is absent.
- `url` (string): Public job page URL.
- `applyUrl` (string): Public application URL; no applications are submitted.
- `postedAt` (string): UTC ISO date from the source; missing/invalid dates fail row validation.
- `updatedAt` (string): UTC ISO date from the source; missing/invalid dates fail row validation.
- `salary` (): Source amounts, period and currency, or null. No salary is estimated.
- `descriptionText` (string): Plain text from source description and requirements when requested; otherwise null.
- `_scrapedAt` (string): UTC ISO time when the row was normalized; excluded from change detection.

## Input settings

- `companies` (array, required): Enter 1–4 company slugs, such as channable, or HTTPS URLs on company.recruitee.com. The example is a UI prefill, not a default. Duplicates share one fetch but still count toward four entries. Custom domains are unsupported.
- `includeDescription` (boolean): Convert source description and requirements HTML to plain text. Default false writes descriptionText: null. Combined source text is limited to 100,000 bytes per job.
- `maxJobsPerCompany` (integer): Return 1–25 rows per unique company (default 25). A smaller cap can make the result partial and suppress removals. The full source response is still fetched, within a 2 MiB limit.
- `mode` (string): Snapshot returns current rows. Changes also requires an explicit previousSnapshot.
- `previousSnapshot` (object): For changes mode, paste the entire SNAPSHOT record with its rows array. Every row must have all 20 job keys. Empty rows starts a baseline with all current jobs added. Input limit: 256 KiB. The Actor does not load earlier runs by itself.

## Step by step on Apify

1. Open the Actor's Input tab. Enter a known slug such as `channable`. The filled-in example is a suggestion; `companies` has no runtime default.
2. For a small first run, set Maximum jobs per company to `10` and leave descriptions off. Choose Save current jobs.
3. Check the displayed price, run limits and selected build version. Start the run.
4. Open the Dataset when the run finishes. Check `RUN_SUMMARY` in the Key-value store for each company's outcome. A successful platform run alone does not prove complete source coverage.
5. In the Dataset, choose Export, select JSON, CSV or XLSX, then download. Select all fields if you need more than the Jobs table columns. Keep JSON for snapshots: CSV and XLSX turn nested fields into table cells.
6. Save the whole `SNAPSHOT` record if you want to compare jobs later.

## Use cases

| Your task | Fields or records to use |
|---|---|
| Keep a job list for known employers | `company`, `jobId`, `title`, `url`, `applyUrl`. |
| See new or changed postings | `CHANGES.added`, `updated.before`, `updated.after`, and the removal safety flags. Supply your own previous snapshot. |
| Compare published pay ranges | `salary` and its period/currency. A null salary is not zero pay. |
| Group jobs by place or work style | `allLocations`, `country`, `workplaceType`. Country can be source text. |
| Read job details in another tool | Enable `includeDescription`; use `descriptionText` for description and requirements. |
| Audit missing results | `RUN_SUMMARY`, `boardSummaries`, `inputOutcomes` and request attempts. |

## Tips

- Start small: 10 jobs per company and descriptions off.
- Export snapshots as JSON. CSV and Excel flatten nested fields.
- There are no title or place filters. Filter the rows in your own tool.

## Limits





## Sample result

```json
{
  "_type": "job",
  "_schemaVersion": "1.0",
  "_source": "recruitee",
  "company": "channable",
  "jobId": "2751915",
  "title": "Customer Success Manager Benelux - Dutch speaking",
  "department": "Customer Success",
  "team": null,
  "location": "Utrecht, Utrecht, Netherlands",
  "allLocations": [
    "Utrecht, Utrecht, Netherlands"
  ],
  "workplaceType": "hybrid",
  "commitment": "Full-time",
  "country": "NL",
  "url": "https://jobs.channable.com/o/customer-success-manager-benelux-dutch-speaking-3",
  "applyUrl": "https://jobs.channable.com/o/customer-success-manager-benelux-dutch-speaking-3/c/new",
  "postedAt": "2026-09-18T13:27:28.000Z",
  "updatedAt": "2026-10-01T14:29:22.000Z",
  "salary": {
    "min": 3750,
    "max": 5250,
    "period": "month",
    "currency": "EUR"
  },
  "descriptionText": null,
  "_scrapedAt": "2026-10-01T18:38:15.792Z"
}
```

## Use it from code

Actor ID: `cliqtomedia/recruitee-jobs-monitor-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/recruitee-jobs-monitor-scraper").call(run_input={
    "companies": [
        "channable"
    ],
    "includeDescription": False
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~recruitee-jobs-monitor-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies": ["channable"], "includeDescription": false}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/recruitee-jobs-monitor-scraper")
result = tool.invoke({"run_input": {"companies": ["channable"], "includeDescription": False}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Use cases with this tool

- [Reach out when the company is ready](https://cliqtomedia.com/actors/use-cases/buying-signals/): Know when a company hires, raises money or wins a contract. Reach out at the right moment.

## Similar tools

- [Greenhouse Jobs Monitor & Scraper](https://cliqtomedia.com/actors/greenhouse-jobs-monitor-scraper/)
- [Lever Job Scraper](https://cliqtomedia.com/actors/lever-jobs-scraper/)
- [Wellfound Jobs Scraper](https://cliqtomedia.com/actors/wellfound-jobs-scraper/)
- [Ashby Jobs Scraper](https://cliqtomedia.com/actors/ashby-jobs-scraper/)
- [SmartRecruiters Jobs Monitor & Scraper](https://cliqtomedia.com/actors/smartrecruiters-jobs-monitor-scraper/)
- [BambooHR Jobs Monitor & Scraper](https://cliqtomedia.com/actors/bamboohr-jobs-monitor-scraper/)
