# Teamtailor Jobs API

> Every public Teamtailor posting, one endpoint - no per-tenant X-Api-Key, no JSON:API pagination to flatten.

**Canonical URL:** https://jobspipe.dev/sources/teamtailor

## Coverage

- **Sources covered:** Public Teamtailor career sites
- **Freshness:** 24h refresh
- **History retention:** 12 months retention

## Why Teamtailor jobs data is confusing

Teamtailor has one of the cleanest ATS APIs on the market - JSON:API spec compliant, X-Api-Key authentication, page-based pagination at /v1/jobs?page[size]=30. The catch for aggregators: it's per-tenant. Each Teamtailor customer mints their own X-Api-Key inside their admin, and a key from one tenant cannot read data from another. If you want postings across many Teamtailor-using companies, you'd need a key from every one.

On the public side, every Teamtailor customer's career site is statically rendered at <tenant>.teamtailor.com (and some on custom domains), with job data exposed in a discoverable pattern. JobsPipe indexes every public Teamtailor customer and serves their data alongside 30+ other sources in the same JSON schema - flattened out of JSON:API's nested resource/attributes envelope.

## Workarounds

### Get an X-Api-Key from each Teamtailor customer

Clean API once you have a key, but you need one key per tenant and there's no path to aggregator-tier credentials.

### Scrape <tenant>.teamtailor.com career pages

Possible. Custom-domain tenants and Teamtailor's localization (career pages in 50+ languages) make this more work than it looks.

### Use JobsPipe

Every public Teamtailor career site, one endpoint, flattened JSON. Free credits every month.

## Fields available on every record

- `id`
- `source`
- `tenant`
- `title`
- `company`
- `location`
- `salary`
- `employment_type`
- `remote`
- `posted_at`
- `expires_at`
- `apply_url`
- `description`

## Sample response

```json
{
  "id": "tt_NDk3MjE4MDQ0",
  "source": "teamtailor",
  "tenant": "klarna",
  "title": "Engineering Manager, Risk Platform",
  "company": "Klarna",
  "location": {
    "city": "Stockholm",
    "region": "AB",
    "country": "SE",
    "remote": false
  },
  "salary": {
    "min": 980000,
    "max": 1280000,
    "currency": "SEK",
    "period": "year",
    "source": "explicit"
  },
  "employment_type": "full_time",
  "posted_at": "2026-05-05T09:27:00Z",
  "expires_at": null,
  "apply_url": "https://career.klarna.com/jobs/...",
  "description": "Klarna is hiring an Engineering Manager to lead our Risk Platform team in Stockholm - the systems that score every transaction we process ..."
}
```

## FAQ

### Do I need a Teamtailor X-Api-Key to use JobsPipe?

No. JobsPipe reads only public career-site postings and doesn't use the authenticated Teamtailor API. You only need a JobsPipe key.

### How fresh is Teamtailor data?

Public Teamtailor career sites are re-crawled at least every 24 hours.

### Does JobsPipe return Teamtailor's JSON:API envelope?

No. We flatten Teamtailor's data:[{type,id,attributes,relationships}] envelope into the same flat JSON shape as every other source. You don't have to learn JSON:API parsing to read Teamtailor postings through JobsPipe.

### Does JobsPipe handle Teamtailor customers on custom domains?

Yes. Customers using career.<their-domain>.com instead of <tenant>.teamtailor.com are indexed alongside the rest.

## Teamtailor API documentation

Teamtailor's developer documentation lives at docs.teamtailor.com and covers the JSON:API-compliant REST surface - jobs, candidates, applications, departments, locations, custom fields, webhooks. Endpoints are at api.teamtailor.com/v1/, authentication is X-Api-Key in headers, and responses follow the JSON:API spec with type/id/attributes/relationships envelopes. The docs are good - the limitation for aggregators is that every endpoint is scoped to one customer's key. JobsPipe's normalized schema at /docs is flat and uses the same shape across Teamtailor, Workday, Greenhouse, and 30+ other sources.

## Teamtailor X-Api-Key authentication

Teamtailor authenticates with two headers: X-Api-Key (the key from the customer's admin) and X-Api-Version (e.g. 20240404). The key is minted inside the tenant's Teamtailor admin under Settings → Integrations → API. There is no aggregator-tier credential and no way to read multiple tenants' data with one key. JobsPipe sidesteps the per-tenant key model by reading public career-site data instead - same coverage of postings, none of the per-tenant onboarding.

## Related

- **Product:** https://jobspipe.dev/jobs-api
- **All sources:** https://jobspipe.dev/sources
- **Docs:** https://jobspipe.dev/docs
- **Sign up (free tier):** https://jobspipe.dev/signup

---
Generated from structured data. View the rendered page at https://jobspipe.dev/sources/teamtailor.