Introduction
This article is part of an ongoing series that covers the Teamtailor API in depth. The focus here is narrow and practical: how to retrieve job application data using the Teamtailor ATS API.
If you are building integrations for recruiting analytics, internal dashboards, or downstream HR systems, job application data is the operational backbone. This guide walks through the exact endpoints and steps required to fetch candidate and application data reliably.
For a broader overview of the Teamtailor API, including authentication, rate limits, and overall API structure, refer to the full guide here.
Get Job Application Data from Teamtailor ATS API
Prerequisites
Before making API calls, ensure the following are in place:
- A valid Teamtailor API key with permissions to access candidates and job applications.
- Basic familiarity with making HTTP requests using Python.
- The
requestslibrary installed in your Python environment.
API Endpoints
- List Candidates
GET https://api.teamtailor.com/v1/candidates - List Job Applications
GET https://api.teamtailor.com/v1/job-applications
Step-by-Step Process
Step 1: Fetch Candidate Data
import requests
headers = {
'Authorization': 'Token token=YOUR_API_KEY',
'X-Api-Version': '20240404'
}
response = requests.get(
'https://api.teamtailor.com/v1/candidates',
headers=headers
)
if response.status_code == 200:
candidates = response.json()['data']
else:
print('Failed to fetch candidates', response.status_code)Step 2: Fetch Job Application Data for All Candidates
response = requests.get(
'https://api.teamtailor.com/v1/job-applications',
headers=headers
)
if response.status_code == 200:
job_applications = response.json()['data']
else:
print('Failed to fetch job applications', response.status_code)Step 3: Fetch Job Application Data for a Specific Candidate
candidate_id = 'SPECIFIC_CANDIDATE_ID'
url = f'https://api.teamtailor.com/v1/candidates/{candidate_id}/job-applications'
response = requests.get(url, headers=headers)
if response.status_code == 200:
specific_candidate_applications = response.json()['data']
else:
print('Failed to fetch job applications for candidate', response.status_code)Common Pitfalls
Teams typically run into issues not because the API is complex, but because basics are overlooked. Watch out for the following:
- Missing or incorrect
X-Api-Versionin request headers. - Forgetting to replace
YOUR_API_KEYwith a valid API key. - Ignoring pagination when working with large candidate or application volumes.
- Exceeding rate limits due to unthrottled requests.
- Not validating HTTP response codes before parsing data.
- Assuming every candidate has at least one job application.
- Hard-coding API keys instead of securing them externally.
Frequently Asked Questions
- What is the rate limit for the Teamtailor API?
Rate limits are defined by Teamtailor and can vary. Refer to the official API documentation or contact Teamtailor support for exact limits. - How is pagination handled in Teamtailor API responses?
Pagination details are included in thelinksobject of the response. Use these links to fetch subsequent pages. - Can job applications be filtered by stage?
Yes. Use query parameters such asfilter[stage-type]when calling the job applications endpoint. - What information is returned in a job application object?
Job application responses include metadata such ascreated-at,updated-at, and relationships to candidates and jobs. - Can job applications be updated via the API?
Yes, provided your API key has the required permissions. Updates are performed using the appropriatePATCHendpoints. - Is a sandbox or test environment available?
Sandbox availability depends on your Teamtailor plan. Contact Teamtailor support for confirmation. - What is the recommended way to store the API key?
Store API keys in environment variables or a secure secrets manager. Never commit them directly to source code.
Knit for Teamtailor ATS API Integration
If you want to avoid managing authentication, versioning, and long-term maintenance yourself, Knit provides a streamlined alternative.
By integrating with Knit once, you gain consistent access to the Teamtailor API without handling token management or endpoint upkeep. Knit abstracts the operational complexity while ensuring stable and reliable data access across your integrations.




