# Teamtailor Jobs Scraper and Job Monitor

> Teamtailor scraper: get public jobs from the career feeds of companies you name. Filter by title, location, remote or date, and keep only new job IDs.

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

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

Get public Teamtailor jobs from the company feeds you choose. Filter the rows. In monitor mode, the tool returns only job IDs that it has not saved before.

## 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: `polestar` in Teamtailor company slugs. 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

Get public Teamtailor jobs from the company feeds you choose. Filter the rows and keep only job IDs that your monitor has not saved before.





## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Company feed checked | $0.018 | One verified company feed check per run: first acknowledged job, or a complete successful zero-match check. No charge for errors, not-found, cancellation or partial zero-row checks. |
| Job delivered | $0.00045 | One acknowledged unique company/jobId row in the run Dataset. No charge for duplicate, rejected or unseen filtered rows, error rows or summary records. |

- One company feed check: about $0.02.
- 1,000 company feed checks: about $18.00.
- Every day 100 company feed checks, for 30 days: about $54.00 a month.

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

Prices checked on 8 November 2026. Current price: https://apify.com/cliqtomedia/teamtailor-jobs-monitor-scraper?fpr=cliqto

## Questions

### Do I need a Teamtailor API key?

No. The tool reads public career feeds. You need an Apify account.

### Can I use my own career page URL?

No. Add known Teamtailor slugs. The tool does not find employers for you and does not read own domains.

### Does the first monitor run return zero jobs?

No. It returns current matching jobs up to your cap. Later runs return unseen matches.

### Why can a monitor check cost money when no new jobs are returned?

A healthy check still reads the feeds and compares current IDs with saved IDs. In pay-per-event mode, the feed-check event covers this useful check. A duplicate or already-seen job is not charged as a new job row. Errors and partial checks with zero rows have no useful billable event; they can still use platform resources.

### Can I pass a custom career URL or find all Teamtailor employers?

No. Add known global Teamtailor slugs. The Actor does not discover all employers or resolve custom domains.

### Why does an old job appear as new?

New means not previously emitted by that monitor. `postedAt` is the source publication date; `_scrapedAt` is collection time. Add `postedAfter` if you need a publication-date boundary.

### Does hybrid count as remote?

No. `remoteOnly` requires an explicit accepted RSS value. Missing remote status and prose about flexible work are not enough.

### Can I get changed, removed or every historical job?

No. State stores emitted IDs, not content snapshots or deletion events. Feed pagination, retention and employer changes can limit what you see.

### Will a low cap or descriptions off cut the run cost by the same ratio?

No such cost reduction is promised. The feeds are still read. Check the shown price and the run's real usage; storage and exports can add resource use.

## Data fields

- `_type` (string): Always job.
- `_schemaVersion` (string): Job contract version, currently 1.0.
- `_source` (string): Always teamtailor.
- `company` (string): Normalized requested company slug.
- `jobId` (string): Stable source posting identifier, kept as text.
- `title` (string): Source title with repeated whitespace collapsed.
- `_scrapedAt` (string): UTC row collection time, not the publication date.
- `department` (string): Direct RSS value, or null when unavailable.
- `location` (string): First unique JSON address; RSS name fallback when JSON addresses are unavailable.
- `country` (string): Uppercase first JSON address country code, or null.
- `url` (string): Validated HTTPS URL on the selected global Teamtailor host, or null.
- `applyUrl` (string): Currently the same validated public job URL; not a separate application endpoint.
- `postedAt` (string): Source publication time normalized to UTC, or null.
- `remoteStatus` (string): Direct RSS label; hybrid is excluded by the remote-only filter.
- `descriptionText` (string): Readable feed text; null if absent or descriptions are disabled.
- `team` (null): Always null; not inferred from department.
- `workplaceType` (null): Always null; not inferred from remote status.
- `commitment` (null): Always null; no contract type inference.
- `updatedAt` (null): Always null; changed-job timestamps are not extracted.
- `allLocations` (array): Unique source locations in order; an empty array if unavailable.

## Input settings

- `companies` (array, required): Add 1–5 unique slugs, for example polestar. Use the name before .teamtailor.com; URLs, custom domains and regional hosts are not supported.
- `includeDescription` (boolean): Save readable job description text. Turn off to return null in descriptionText. Both feeds are still fetched.
- `maxJobsPerCompany` (integer): Save 1–55 matching jobs per company from the first JSON page. Snapshots keep feed order; monitoring picks newest unseen matches. A low cap reduces output, not feed size.
- `titleKeywords` (array): Match any listed word or phrase within the title, ignoring case. Up to 20 values, each 1–100 characters. Leave empty to keep all titles.
- `locations` (array): Match any value in JSON addresses or RSS location names, ignoring case. Use Sweden or Göteborg. Up to 20 values, each 1–100 characters; empty means no location filter.
- `remoteOnly` (boolean): Keep fully, remote, fully_remote, remote_first or remote_work RSS values. Hybrid and missing remote status do not match.
- `postedAfter` (string): Keep jobs posted on or after this date. Use YYYY-MM-DD or an ISO date-time with seconds and Z or UTC offset. Leave omitted to keep all dates; null is not accepted.
- `onlyNewSinceLastRun` (boolean): First run saves and emits current matches. Later runs return unseen IDs. Caps and filters do not mark unreturned jobs seen. This does not track changed or removed jobs.
- `monitorNamespace` (string): Use 1–64 letters, digits, underscores or hyphens; start with a letter or digit. Keep the same name and filters to continue. Choose a new name to start a fresh baseline.

## Step by step on Apify

1. Open this Actor's Input tab.
2. Switch to JSON input and paste the input below. No company is supplied by default.
3. Leave descriptions on. Set the output cap to 10 for your first check.
4. Click Start. Your Apify account must have access to the Actor.
5. Open the run's Dataset. Check `company`, `jobId`, `title`, `location` and `url`.
6. Open the run's Key-value store and check `RUN_SUMMARY.outcome`. Use `companies[].errorCodes` if the result is partial or empty.

## Use cases

| Task | Input choice | Key fields | Next step |
|---|---|---|---|
| Review an employer's current openings | Snapshot, one known slug | `title`, `location`, `descriptionText`, `url` | Export JSON or read the public job page. |
| Track new matching job IDs | Monitor, stable namespace and filters | `company`, `jobId`, `postedAt`, `_scrapedAt` | Add returned rows to your own database; deduplicate by company and ID. |
| Watch a location or role | `locations` and/or `titleKeywords` | `allLocations`, `title`, `remoteStatus` | Review the filtered rows and source links. |
| Check why a board is incomplete | Keep the run summary | Company status, errors, counts | Fix input or source access before relying on the result. |

## Tips

- Add 1 to 5 company slugs, the name before .teamtailor.com, such as polestar.
- Turn on onlyNewSinceLastRun and run on a schedule. Later runs return unseen jobs only.
- Use a new monitorNamespace when you change the filters.

## Limits

Use public feeds with care. Public job data can change or disappear. Source availability and permissions are the employer's responsibility; you are responsible for your use and retention of the exports. No candidate data or private recruitment account access is part of this tool.

- Use 1–5 unique public slugs on the global `.teamtailor.com` host. URLs, custom domains, `.na.teamtailor.com` and `.au.teamtailor.com` are outside the input contract.
- The output cap is 1–55 per company. Only the first JSON page is fetched. If it contains `next_url`, results remain usable but the company is partial with `json_feed_paginated`; the Actor does not follow that URL.
- Historical checks on build 0.3.1 emitted 10 snapshot rows and parsed a 55-job board for a three-row cap. Build 0.4.2 was checked with four small Cloud runs that emitted 2, 1, 1 and 1 rows. Ten-row comparisons and larger capacity evidence were reused from earlier checks. These are not proof of 275 live output rows or complete coverage of every employer.
- Each request has a 12-second timeout, at most one retry and a 5 MB response limit. Redirects are blocked. The Actor has a five-minute processing deadline; a shorter platform timeout or charge limit can stop it earlier.
- RSS may be absent, smaller than JSON or invalid. JSON jobs stay usable, but RSS fields can be null and the company is partial. An RSS-only location name or a remote filter can then exclude matches.
- The Actor does not infer salary, separate team, employment type, changed timestamps or remote status from prose. `team`, `workplaceType`, `commitment` and `updatedAt` remain null.

## Sample result

```json
{
  "_type": "job",
  "_schemaVersion": "1.0",
  "_source": "teamtailor",
  "company": "polestar",
  "jobId": "3528756",
  "department": "Global Sales",
  "team": null,
  "title": "Internship | Retail Network",
  "location": "Cologne, Central Europe, DE",
  "allLocations": [
    "Cologne, Central Europe, DE"
  ],
  "workplaceType": null,
  "commitment": null,
  "country": "DE",
  "url": "https://polestar.teamtailor.com/jobs/3528756-internship-retail-network",
  "applyUrl": "https://polestar.teamtailor.com/jobs/3528756-internship-retail-network",
  "postedAt": "2024-01-17T14:42:18.000Z",
  "remoteStatus": "none",
  "updatedAt": null,
  "descriptionText": "The opportunity\nWe're currently looking for an Intern - ideally starting as soon as",
  "_scrapedAt": "2026-10-01T22:28:47.168Z"
}
```

## Use it from code

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

```python
from apify_client import ApifyClient

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

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

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

tool = ApifyActorsTool("cliqtomedia/teamtailor-jobs-monitor-scraper")
result = tool.invoke({"run_input": {"companies": ["polestar"], "includeDescription": True}})
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/

## Similar tools

- [Ashby Jobs Scraper: Public Job Board Export](https://cliqtomedia.com/actors/ashby-jobs-scraper/)
- [Lever Jobs Scraper: jobs.lever.co Postings Export](https://cliqtomedia.com/actors/lever-jobs-scraper/)
- [Wellfound Jobs Scraper: Startup Jobs to CSV & JSON](https://cliqtomedia.com/actors/wellfound-jobs-scraper/)
- [Greenhouse Jobs Scraper & Monitor: Job Board Export](https://cliqtomedia.com/actors/greenhouse-jobs-monitor-scraper/)
- [Recruitee Jobs Scraper & Monitor: Open Jobs & Changes](https://cliqtomedia.com/actors/recruitee-jobs-monitor-scraper/)
- [SmartRecruiters Jobs Scraper: Job Board Snapshots & Changes](https://cliqtomedia.com/actors/smartrecruiters-jobs-monitor-scraper/)
