Teamtailor Jobs Scraper avatar

Teamtailor Jobs Scraper

Pricing

Pay per event

Go to Apify Store
Teamtailor Jobs Scraper

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.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Teamtailor Jobs Scraper

💰 $1.70 / 1 000 job postings  ·  pay only for results  ·  no credit card to try

We do the dirty work so your dataset stays clean. 😈

Scrape every open job posting from any Teamtailor-powered company career site and get it back as clean, structured rows — titles, locations, publish dates, expiry dates and full descriptions — ready for a recruiter pipeline or a hiring-intent signal.

🎯 What this 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, versioned API. We normalise what comes back into one stable row shape so a change on their side doesn't change your columns.
  • Per-company fault isolation. One company handle that 404s, rate-limits or returns malformed JSON is logged and skipped — it never takes down the rest of your run. Ask for forty employers, get the thirty-nine that resolve.
  • Blocks, retries and backoff. Requests go through Apify Proxy with retry and backoff already wired in. You don't tune it; we do.
  • Dates you can sort on. date_published and valid_through come back as ISO strings, not the mixed formats the feed emits.
  • Descriptions both ways. Plain text by default so it lands cleanly in a spreadsheet or an embedding; raw HTML on request when you need the markup.

💡 Use cases

  • Recruiters — watch a target-company list and see every new opening the day it goes live.
  • Sales / BD teams — hiring is the loudest public budget signal there is. A company opening five engineering roles is a company that just funded a team.
  • Market and comp research — track which roles, locations and seniorities a segment is hiring for over time.
  • Job boards and aggregators — backfill Teamtailor employers that your existing sources miss.

⚙️ How to use it

  1. Add the Teamtailor company handles you care about to companies — the handle is the subdomain of the career site (oatly.teamtailor.comoatly).
  2. Optionally cap maxJobsPerCompany.
  3. Run it, then export to JSON, CSV or Excel — or pull the dataset straight from the Apify API.

📥 Input

FieldTypeRequiredDefaultNotes
companiesarray<string>yesTeamtailor company handles, e.g. ["oatly", "storytel"].
maxJobsPerCompanyintegerno100Cap on rows returned per company.
includeHtmlbooleannofalseAlso return the raw HTML description in description_html.
proxyConfigurationobjectno{"useApifyProxy": true}Apify Proxy configuration.

Example input

{
"companies": ["oatly", "storytel"],
"maxJobsPerCompany": 100,
"includeHtml": false,
"proxyConfiguration": { "useApifyProxy": true }
}

📤 Output

One row per open job posting.

FieldTypeNotes
companystringThe handle you asked for.
company_namestring | nullDisplay name, when the feed publishes one.
job_idintegerTeamtailor's internal posting ID.
job_titlestringJob title as advertised.
job_urlstringDirect link to the posting.
date_publishedstringISO publish date.
valid_throughstring | nullISO expiry date, when published.
location_localitystring | nullCity / town.
location_regionstring | nullState / region.
location_countrystring | nullCountry.
hiring_organization_namestring | nullHiring entity, when it differs from the company.
description_textstringFull description as plain text.
description_htmlstring | nullRaw HTML description — only when includeHtml is true.
scraped_atstringISO timestamp of the run that produced the row.

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.20One-off warm-up charge per run
result$0.0015Per job posting written to the dataset

Example: 1 000 job postings = $1.70 per 1,000 ($0.20 start + 1000 x $0.0015). No subscription, no minimum, no card required to try it.

🚧 Limitations

  • Company handles, not free-text search. There is no "all Teamtailor jobs everywhere" mode — you supply the employers you care about.
  • Open postings only. Closed or expired vacancies drop out of the feed; this is a live snapshot, not an archive. Schedule a daily run if you need history.
  • Only what the employer publishes. Salary, seniority and remote flags appear in the row only when that employer filled them in. Most don't.
  • Teamtailor-hosted sites only. A company that has migrated off Teamtailor will return nothing.

❓ FAQ

Do I need a Teamtailor account or API key? No. This reads the public career-site feed each employer already publishes.

How do I find a company's handle? It's the subdomain of the career site. 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? That single handle is logged and skipped, and the run continues with the others. You are not charged a result event for a company that returns nothing.

Can I run this on a schedule? Yes — use Apify Schedules and diff each day's dataset against the last to get new-opening alerts.

💬 Your feedback

Found a bug, or need a field we don't return yet? Open an issue on the Actor's Issues tab — we read every one.