---
title: "Teamtailor API: clean JSON:API, one key per tenant - and the fix"
description: "The Teamtailor API is a pleasant JSON:API REST surface - the friction is one key per tenant, with no aggregator-tier credential and no way to enumerate tenants."
canonical: https://jobspipe.dev/blog/teamtailor-api-jobs
date_published: 2026-07-16
date_modified: 2026-09-30
author: Dvir Atias
---

# Teamtailor API: clean JSON:API, one key per tenant - and the fix

The Teamtailor API is a pleasant JSON:API REST surface - the friction is one key per tenant, with no aggregator-tier credential and no way to enumerate tenants. How to read Teamtailor postings across employers through one jobs API instead.

Teamtailor is a modern ATS with a strong European footprint, and its API is genuinely pleasant - a clean, JSON:API-compliant REST surface. So the friction in **Teamtailor API** is not the API design. It is that you need one key per tenant.

## The Teamtailor API surfaces

-   **The REST API** - `api.teamtailor.com/v1/` covering jobs, candidates, applications, departments, and locations. Authentication is `Authorization: Token token=<key>` with an `X-Api-Version` header, and responses follow the JSON:API`type`/`id`/`attributes` envelope.
-   **The careers site and embed** - the public-facing job pages Teamtailor renders for each customer. Where the customer keeps it enabled, the site also publishes that one employer’s jobs as a keyless JSON Feed at `/jobs.json`.

Try it without a key

```
curl -d '{"limit":3}' https://api.jobspipe.dev/v1/sandbox/jobs/search
```

Only `/v1/sandbox/*` needs no key.

## Clean, but one key per tenant

Every endpoint is scoped to a single customer’s key, and there is no path to an aggregator-tier credential and no way to enumerate Teamtailor tenants. The API is easy once you have a key; getting a key for every company you care about is the whole problem. The per-site feed needs no key, but it has the same shape of limit: one employer per feed, and you have to know each career site first.

## Read Teamtailor postings across employers through one jobs API

JobsPipe collects public Teamtailor postings and serves them through one normalized [jobs API](https://jobspipe.dev/jobs-api), the same shape as the rest of its 30+ sources. Filter to them with `source_or`:

```
curl https://api.jobspipe.dev/v1/jobs/search \
  -H "Authorization: Bearer jp_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{ "source_or": ["teamtailor"], "job_title_or": ["frontend engineer"], "job_country_code_or": ["SE", "GB"] }'
```

One key, no per-tenant setup. Each record names its board in `sources[0].provider`; drop `source_or` to see the same employers’ roles on every collected board. Details on our [Teamtailor source page](https://jobspipe.dev/sources/teamtailor), and the full comparison in [the jobs API comparison for 2026](https://jobspipe.dev/blog/best-jobs-api-2026).

## Frequently Asked Questions

### How does the Teamtailor API work?

Teamtailor exposes a clean, JSON:API-compliant REST surface at api.teamtailor.com/v1/ covering jobs, candidates, and applications, authenticated with a token header per tenant. It is well designed, but every endpoint is scoped to one customer's key.

### Can I read job postings across all Teamtailor companies?

Not from Teamtailor - there is no aggregator-tier credential and no way to enumerate tenants. JobsPipe collects public Teamtailor postings, so a search with "source\_or": \["teamtailor"\] reads them across employers through one normalized jobs API, in the same schema as the rest of its 30+ sources.

Related

## Keep reading

-   [Guide · Aug 25, 2026Recruitee API: the careers-site endpoint that needs no key at all](https://jobspipe.dev/blog/recruitee-api-jobs)
-   [Guide · Aug 15, 2026Reed API: the UK jobs API you can actually get a key for](https://jobspipe.dev/blog/reed-api)
-   [Guide · Jul 24, 2026Indeed API key: why there isn't one, and what to use instead](https://jobspipe.dev/blog/indeed-api-key)
-   [Guide · Mar 22, 2026Workday API: public job postings from every tenant in 2026](https://jobspipe.dev/blog/workday-api-guide)
-   [Guide · Jul 28, 2026Hiring.cafe API: there isn't one - here's the working path](https://jobspipe.dev/blog/hiring-cafe-api)


## Further reading

- [Which ATS APIs are actually public? The 2026 job-data reference](https://jobspipe.dev/blog/public-vs-gated-ats-apis)

---
Building this integration yourself? The steps above work. The alternative is one API over 30+ sources, already normalized and deduplicated. Try it right now - no key, no signup:

```bash
curl -d '{"limit":3}' https://api.jobspipe.dev/v1/sandbox/jobs/search
```

Sample data, exact live schema. For live data get a free key (1,000 jobs to start) at https://jobspipe.dev/signup, then swap /v1/sandbox/jobs/search for /v1/jobs/search with an Authorization: Bearer header. Full agent index: https://jobspipe.dev/llms.txt?src=md-twin