Jobs
Teamtailor Jobs Scraper
Scrape every open job posting from any Teamtailor-powered company career site via Teamtailor's own public JSON Feed, no login or browser required. Get job titles, locations, publish dates, and full descriptions instantly, ready for recruiter pipelines or as a hiring-intent signal for BD teams.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Point it at one or more Teamtailor company handles and it returns every live vacancy each one is advertising: job title, direct apply URL, publish and expiry dates, split locality/region/country, the hiring organisation, and the full description as plain text (with optional raw HTML).
Teamtailor powers career sites for thousands of employers, mostly across the Nordics, DACH and the UK — companies whose openings never reach the big aggregators, or reach them days late.
What we handle for you
- Feed shape drift. Teamtailor's public job feed is not a documented,
- Per-company fault isolation. One company handle that 404s, rate-limits
- Blocks, retries and backoff. Requests go through Apify Proxy with retry
- Dates you can sort on.
date_publishedandvalid_throughcome back as - Descriptions both ways. Plain text by default so it lands cleanly in a
Use cases
- Recruiters — watch a target-company list and see every new opening the
- Sales / BD teams — hiring is the loudest public budget signal there is.
- Market and comp research — track which roles, locations and seniorities
- Job boards and aggregators — backfill Teamtailor employers that your
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
companies | array | yes | Teamtailor company subdomain, e.g. "oatly" (the employer identifier in https://{company}.teamtailor.com/), or a full https://{company}.teamtailor.com URL (with or without a trailing /jobs path) — the subdomain is… |
maxJobsPerCompany | integer | no | Cap job postings emitted per companies entry, applied after parsing. |
includeHtml | boolean | no | When enabled, populate description_html (raw content_html) for every emitted row. description_text (HTML-tag-stripped) is always populated regardless. |
{
"companies": [
"oatly",
"storytel"
],
"maxJobsPerCompany": 100,
"includeHtml": false,
"proxyConfiguration": {
"useApifyProxy": true
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
companycompany_namejob_idjob_titlejob_urldate_publishedvalid_throughlocation_localitylocation_regionlocation_countryhiring_organization_namedescription_htmldescription_textscraped_at
Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0015 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Company handles, not free-text search. There is no "all Teamtailor jobs
- Open postings only. Closed or expired vacancies drop out of the feed;
- Only what the employer publishes. Salary, seniority and remote flags
- Teamtailor-hosted sites only. A company that has migrated off Teamtailor
FAQ
Do I need a Teamtailor account or API key?
How do I find a company's handle?
careers.example.com that redirects to example.teamtailor.com means the handle is example.What happens if one of my companies is wrong or has moved off Teamtailor?
Can I run this on a schedule?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors