Teamtailor Jobs Scraper & API: Any Career Site
Pricing
from $0.80 / 1,000 jobs
Teamtailor Jobs Scraper & API: Any Career Site
Scrape any Teamtailor career site, custom domains included: job title, department, role, city, country, remote status, date and description. CSV/JSON.
Pricing
from $0.80 / 1,000 jobs
Rating
0.0
(0)
Developer
MRSLM Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
Open roles from any company's Teamtailor career site, custom domains included: department, role, city, country, remote status, date and description. $1.00 per 1,000 jobs.
Teamtailor is an employer-branding and applicant tracking system used by thousands of companies, most of them in Sweden, Denmark, Norway, Finland and the rest of Europe. Many run their career site on their own domain (for example jobs.company.com), which is why generic scrapers miss them. This Actor accepts both the Teamtailor subdomain and the company's own careers URL, and returns every open role with department, role, city, country, remote status and posting date.
What the Teamtailor Jobs Scraper does
You give it a list of companies that use Teamtailor for hiring: board names such as lunar or full careers URLs on <name>.teamtailor.com or a custom domain. For each company the Actor reads the public job feed that powers the company's own careers page, maps every open role to the same clean row format, applies your filters, and saves the result. One row per job.
There is no login, no browser and no proxy needed, because the feed is the same public list anyone sees on the careers site. That keeps runs fast (a few seconds for a handful of companies) and cheap.
The row format is shared with our other job-board Actors (Greenhouse, Lever, Workable, Personio, Rippling and the multi-platform ATS Jobs Scraper), so you can merge Teamtailor jobs with jobs from other platforms into one table without remapping columns.
Who it is for
- Recruiters and staffing agencies who want to know the day a target company opens a role they can fill.
- B2B sales teams who use hiring as a buying signal: a company adding support or engineering staff is likely buying tools for them.
- Investors and market analysts who track hiring by team, city and seniority across a portfolio or a competitor set.
- Job boards and newsletters that need a clean, deduplicated feed from the companies they cover.
- Job seekers who want one sheet with every open role at their shortlist of employers.
- Nordic market specialists who track hiring at Swedish, Danish, Norwegian and Finnish companies, where Teamtailor is the most common careers platform.
Quick start
- Press Start. The form is already filled with this example input, so the first run returns real rows in under a minute:
{"companies": ["https://career.teamtailor.com","lunar"],"maxJobsPerCompany": 10}
- Swap in your own values, or call the Actor through the Apify API, Make, Zapier, n8n or the Python/JS clients with the same JSON.
- Download the results as JSON, CSV or Excel from the Output tab, or schedule the run to repeat.
Real example: every open role at Teamtailor and Lunar
Run on 2 November 2026 with this input (no filters, all open jobs):
{"companies": ["https://career.teamtailor.com","lunar"]}
Result: 31 open jobs in 4 seconds (Teamtailor: 17, Lunar: 14), charged as 31 job events, so the run cost about $0.031 plus the $0.00005 start fee.
- Top departments: Sales (4), Technology (4), FCP (4), CRM (3).
- Workplace type: on-site 18, hybrid 13.
- Countries: Denmark (14), Sweden (9), United States (2), Colombia (1).
- Newest posting in the run: 2026-10-30.
The six newest rows:
| Company | Title | Location | Workplace | Posted |
|---|---|---|---|---|
| Lunar | Platform Engineer | Aarhus, Denmark | on-site | 2026-10-30 |
| Teamtailor | Solution Architect (Bilingual French/English) | Stockholm, Sweden | hybrid | 2026-10-29 |
| Teamtailor | Head of Marketing - North America | Chicago, United States | hybrid | 2026-10-28 |
| Teamtailor | Strategic Partnerships Manager - Chicago | Chicago, United States | hybrid | 2026-10-28 |
| Lunar | Treasury Manager | Aarhus, Denmark | on-site | 2026-10-28 |
| Teamtailor | Account Executive - Bogota | Bogotá, Colombia | hybrid | 2026-10-27 |
To turn this into a weekly hiring report, keep the same input, add "postedWithinDays": 7 and schedule it for Monday mornings: each run then returns only roles posted in the last week.
Sample row (real run, trimmed)
{"platform": "Teamtailor","companyName": "Teamtailor","title": "Senior Revenue Systems Administrator","department": "CRM","location": "Stockholm, Sweden","country": "Sweden","workplaceType": "on-site","postedAt": "2026-10-14T12:53:31.000Z","url": "https://career.teamtailor.com/jobs/8546174-senior-revenue-systems-administrator"}
Every row also has: job ID, team, all locations, remote flag, update date, apply link, board link and scrape time, plus the full description when you turn it on. Platform extras: role, department, every location and the remote status (on-site, hybrid or remote).
Output fields
| Field | What it holds |
|---|---|
platform | Always the platform name, so merged tables stay traceable. |
company | Board name (slug) you entered. |
companyName | Company name shown on the board. |
jobId | The platform job ID; stable across runs, use it to detect new and closed roles. |
title | Job title. |
department | Department, when the company sets one. |
team | Teamtailor role, when set. |
location | Primary location text. |
locations | All locations listed for the job. |
country | Country (code or name, as the platform gives it). |
workplaceType | remote, hybrid or on-site when the company states it. |
isRemote | True when the job is marked remote. |
employmentType | Full-time, part-time, contract and similar, when set. |
seniority | Experience level, when set. |
salary | Salary range object (min, max, currency, period) when the company publishes it, else null. |
postedAt | When the job was published (ISO 8601, UTC). |
updatedAt | Last update time, when the platform gives it. |
url | Public job ad URL. |
applyUrl | Direct application URL, when different from the ad. |
boardUrl | The careers board that was read. |
scrapedAt | When this run read the job. |
With includeDescription on, each row also has description: the job ad as plain text, up to 5,000 characters, with e-mail addresses and phone numbers removed.
Filters
titleKeywords/excludeTitleKeywords: keep or drop jobs by words in the title (case-insensitive), e.g. keepengineer, developer, dropintern, working student.locationKeywords: match city, country or the location text, e.g.Amsterdam,Germany,remote.departmentKeywords: match the department or team, e.g.engineering,sales.remoteOnly: keep jobs marked remote, or whose location says remote.postedWithinDays: only jobs posted in the last N days.maxJobsPerCompanyandmaxResults: caps per company and per run. WithnewestFirston (default), the cap keeps the newest jobs.
Export to CSV, Excel, JSON or Google Sheets
Every run saves its rows to an Apify dataset. Open the Output tab and pick a format:
- CSV or Excel for spreadsheets and CRM imports. Nested fields (arrays and objects) are flattened into columns such as
locations/0. - JSON or JSONL to keep the nested structure for code and databases.
- Google Sheets: add the Apify "Google Sheets export" integration to the Actor or schedule, and every finished run is appended to a sheet.
You can also copy the dataset link from the Storage tab. It is a stable API URL your own scripts can download at any time.
Use it from Make, Zapier or n8n
The Actor has official Apify modules in all three tools:
- Make: add the Apify → Run an Actor module, choose
mrslm_data/teamtailor-jobs, paste the JSON input, then add Apify → Get Dataset Items and map the fields into Google Sheets, HubSpot, Airtable or Slack. - Zapier: use the Apify app with the trigger Finished Actor Run (set up a schedule in Apify) or the action Run Actor, then Fetch Dataset Items.
- n8n: use the Apify node (Run Actor + Get dataset items), or a plain HTTP Request node calling the run-sync endpoint shown below.
Schedule it
In Apify Console open Schedules → Create new, choose this Actor and a cron such as 0 7 * * 1-5 (07:00 every working day). With postedWithinDays: 1 each daily run returns only the roles posted since the day before. Pair the schedule with an integration (e-mail, Slack, Google Sheets or a webhook) so new rows reach you without opening Apify.
Call it from the API (Python, JavaScript or curl)
The input below is the same JSON you would paste into the form.
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("mrslm_data/teamtailor-jobs").call(run_input={"companies": ["https://career.teamtailor.com","lunar"],"titleKeywords": ["engineer"],"postedWithinDays": 30})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
JavaScript / Node.js (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('mrslm_data/teamtailor-jobs').call({"companies": ["https://career.teamtailor.com", "lunar"], "titleKeywords": ["engineer"], "postedWithinDays": 30});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, 'jobs');
curl (runs the Actor and returns the rows in one call, for runs under 5 minutes):
curl -X POST "https://api.apify.com/v2/acts/mrslm_data~teamtailor-jobs/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>&format=csv" \-H "Content-Type: application/json" \-d '{"companies": ["https://career.teamtailor.com", "lunar"], "titleKeywords": ["engineer"], "postedWithinDays": 30}'
Use it from AI agents and chat assistants (MCP)
Apify's MCP server (https://mcp.apify.com) exposes Store Actors as tools for Claude, ChatGPT, Cursor and other MCP clients. Add the server with your Apify token, enable mrslm_data/teamtailor-jobs, and ask in plain language, for example: "List every open engineering job at Teamtailor and Lunar posted in the last 30 days." The assistant fills the input, runs the Actor and reads the rows back. You pay the same per-job price as a normal run.
What it costs
- Job: $1.00 per 1,000 saved (Silver $0.90, Gold $0.80)
- Plus $0.00005 per run. You pay only for jobs saved after your filters. Companies that are not found, and jobs your filters drop, are free.
Worked example: 200 companies with an average of 15 open roles each is 3,000 jobs, or about $3.00 per full run on the free tier price. With postedWithinDays: 7 the same weekly run usually saves a few hundred jobs, well under $1. Apify's free plan includes monthly platform credit, which covers small runs like the example above.
Tips
- Find the board name fast. Open the company's careers page and look at the address bar or the "Apply" link. The part before the platform domain is the board name.
- Keep runs cheap. Use
titleKeywords,locationKeywordsorpostedWithinDaysso only the jobs you need are saved and charged. Jobs your filters drop are free. - Watch many companies at once. Paste dozens or hundreds of boards in one run. Boards that do not exist are logged and skipped at no charge.
- Track changes. Schedule a daily run and compare
jobIdvalues with yesterday's dataset to see which roles opened and closed. - Descriptions only when needed.
includeDescriptionadds up to 5,000 characters per job. Leave it off for lead lists and dashboards; turn it on for keyword or skills analysis.
Limits
- Only public job ads are returned: the roles the company itself lists on its Teamtailor careers site. Internal-only postings and closed jobs are not in the feed.
- Salary, seniority and employment type appear only when the company fills them in; otherwise they are
null. - Teamtailor does not publish salary, seniority or employment type in its public feed, so those fields are usually
null. Use the description for those details. - A company that moves to another applicant tracking system disappears from Teamtailor. Use our ATS Jobs Scraper to auto-detect the platform for a list of companies.
FAQ
Where does the data come from? From the company's public Teamtailor job board feed: the same list of open roles the company shows on its careers page.
Does it include recruiter or applicant data? No. Only the public job ad. Email addresses and phone numbers in descriptions are removed.
How fresh is it? Live. Each run reads the board at that moment, so closed jobs disappear and new ones appear.
Does it work with custom career domains? Yes. Paste the career site URL, for example https://career.teamtailor.com. The Actor reads the same public jobs feed that site uses.
Why are some countries spelled out and others coded? country is passed through as Teamtailor gives it, usually the full country name.
Can I scrape all Teamtailor companies at once? No. Teamtailor does not publish a directory of customers, so you supply the companies. Most users start from a target-account list or a list of companies in a sector.
What happens if a board name is wrong? The Actor logs it, skips it and charges nothing for it. The rest of the run continues.
Data source and freshness
Each run reads the company's public Teamtailor job feed at that moment, so new roles appear and closed roles disappear on the next run. Nothing is cached between runs.
Is it legal?
This Actor only reads pages and feeds that the website itself publishes to every visitor without a login. It obeys each site's robots.txt, keeps a polite request rate, and never tries to get past logins, paywalls, captchas or bot checks. It does not collect personal data such as emails, phone numbers or names of private individuals. You are responsible for how you use the data: follow the source site's terms, copyright and the privacy laws that apply to you (GDPR, CCPA, etc.). This tool is independent and not affiliated with or endorsed by the platforms it reads.