---
title: "How to get job application data from BambooHR ATS API"
url: "https://getknit.dev/blog/how-to-get-job-application-data-from-bamboohr-ats-api/"
date: "2025-11-26T06:39:33+00:00"
modified: "2026-04-11T05:22:12+00:00"
type: "post"
---

# How to get job application data from BambooHR ATS API

[Blog](https://getknit.dev/blog) / [Tutorials](https://getknit.dev/blogs/tutorials/) / How to get job application data from BambooHR ATS API [Tutorials](https://getknit.dev/blogs/tutorials/) · November 26, 2025 · Updated April 11, 2026 

How to get job application data from BambooHR ATS API
=====================================================

 ![](https://storage.googleapis.com/knit-website-media/2026/08/64c34ca1e0546a9d333bb35a_Kunal-3-112x112.png)Kunal Mishra

3 min read

 

 

 [](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgetknit.dev%2Fblog%2Fhow-to-get-job-application-data-from-bamboohr-ats-api%2F) [](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgetknit.dev%2Fblog%2Fhow-to-get-job-application-data-from-bamboohr-ats-api%2F&text=How%20to%20get%20job%20application%20data%20from%20BambooHR%20ATS%20API)  

 

 

 

  Table of Contents - [Introduction](#)
- [Prerequisites](#)
- [API Endpoints](#)
- [Step-by-Step Guide](#)
- [1. Retrieve All Job Applications](#)
- [2. Retrieve Application Details](#)
- [Common Pitfalls to Watch Out For](#)
- [FAQs](#)
- [A Faster Way: Using Knit for BambooHR ATS Integration](#)
 
  **Introduction**
----------------

If you’re building HR workflows, scaling recruiting ops, or stitching together multiple ATS systems, [BambooHR’s ATS API](https://developers.getknit.dev/docs/bamboohr-ats-usecases) is a solid lever to pull. This guide distills the exact process for fetching job application data, without wading through generic documentation.

It’s part of a broader deep-dive series on the comprehensive ATS API covering authentication flows, rate-limit behavior, and real-world integration patterns. If you want the full ecosystem view, the master guide is available on the [Knit blog](/blog/ats-integration-guide/).

### **Prerequisites**

Before you start calling the API, make sure you’ve locked in the basics:

- Active BambooHR API credentials
- API access enabled for your BambooHR account
- Comfort with REST APIs and JSON structures
- A Python environment with `requests` installed

**API Endpoints**
-----------------

Here are the two BambooHR ATS endpoints you’ll use most frequently:

- Get all applications
    `GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/applicant_tracking/applications`
- Get application details
    `GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/applicant_tracking/applications/{applicationId}`

**Step-by-Step Guide**
----------------------

### **1. Retrieve All Job Applications**

```
import requests

def get_all_applications(company_domain, api_key):
    url = f"https://api.bamboohr.com/api/gateway.php/{company_domain}/v1/applicant_tracking/applications"
    headers = {
        "accept": "application/json",
        "authorization": f"Basic {api_key}"
    }
    response = requests.get(url, headers=headers)
    return response.json()

# Example
applications = get_all_applications("mycompany", "your_api_key")
print(applications)
```

### **2. Retrieve Application Details**

```
import requests

def get_application_details(company_domain, application_id, api_key):
    url = f"https://api.bamboohr.com/api/gateway.php/{company_domain}/v1/applicant_tracking/applications/{application_id}"
    headers = {
        "accept": "application/json",
        "authorization": f"Basic {api_key}"
    }
    response = requests.get(url, headers=headers)
    return response.json()

# Example
application_details = get_application_details("mycompany", 48, "your_api_key")
print(application_details)
```

**Common Pitfalls to Watch Out For**
------------------------------------

Most integration failures come from operational blind spots, not code. Watch these closely:

- **Rate limits sneak up fast**, especially in high-volume orgs. Build retry logic early.
- **Basic Auth mishandling** is common. Always encode and store credentials securely.
- **Pagination is easy to miss** when fetching all applications, don’t assume one-page responses.
- **Attachments require extra requests**; resumes and cover letters aren’t always bundled.
- **Structure drift**, BambooHR’s ATS schema can vary across accounts. Don’t hardcode fields.
- **Timeouts happen** if you’re pulling heavy datasets; set generous timeouts and retries.

**FAQs**
--------

**1. What is BambooHR ATS?**
It’s BambooHR’s built-in applicant tracking system for managing candidates, roles, and application workflows.

**2. How do I authenticate?**
Using Basic Auth with your API key.

**3. Can I filter by job ID?**
Yes, pass a `jobId` query parameter when listing applications.

**4. What format does the API return?**
JSON.

**5. Does BambooHR paginate application results?**
Yes, depending on volume. Always check for pagination keys.

**6. Can I access uploaded documents?**
Yes, resumes, cover letters, and attachments appear as file IDs you can fetch separately.

**7. How should I handle API errors?**
Check HTTP status codes and include fallback logic for 400s, 401s, and 429s.

**A Faster Way: Using Knit for BambooHR ATS Integration**
---------------------------------------------------------

If you don’t want to maintain authentication flows, rate-limit handling, schema variations, and long-term [BambooHR ATS API](https://developers.getknit.dev/docs/bamboohr-ats-usecases) upkeep, Knit simplifies the entire stack. Integrating once with Knit gives you unified authentication, automatic schema normalization, zero-maintenance updates every time BambooHR changes something and easy access to application, employee, and hiring-related datasets

If you want to avoid the heavy lifting of maintaining these integrations long-term, Knit handles the full lifecycle so your engineering team can focus elsewhere.

Building a BambooHR ATS integration?

Knit gives you two ways to build it. Pick the one that fits.

- [BambooHR ATS on Unified API](https://getknit.dev/integration/bamboohr-ats/)
    
    Your customers want BambooHR ATS and the other ATS tools they use. Build one integration and get normalised read and write data with real-time webhooks.
    
    [Try free](https://dashboard.getknit.dev/signup)
- [BambooHR ATS MCP server](https://getknit.dev/mcp-servers/bamboohr-ats-mcp-server/)
    
    Your AI agent needs to read and act in your customers' BambooHR ATS. Use a pre-built, hosted MCP server instead of writing integration code.
    
    [Try free](https://mcphub.getknit.dev/)

Knit's Unified API connects to 190+ apps across HRIS, ATS, CRM, accounting and more.

Knit never stores your end users' data and is SOC 2, GDPR and ISO 27001 compliant: [How Knit handles security](/security/) · [Security Center](https://compliance.getknit.dev/)

Not sure which fits? [Talk to a human](/book-demo/)

 

 ![](https://storage.googleapis.com/knit-website-media/2026/08/64c34ca1e0546a9d333bb35a_Kunal-3-112x112.png)Written by Kunal Mishra

Changing integration landscape, one organization at a time‍

 

 

 

 

 

  Keep Reading
------------

  ![How to Get an Okta API Token (Step-by-Step)](https://storage.googleapis.com/knit-website-media/2026/08/blog-banner-red-scaled-640x400.png) [Tutorials](https://getknit.dev/blogs/tutorials/) 

### [How to Get an Okta API Token (Step-by-Step)](https://getknit.dev/blog/okta-api-key/)

Generate an Okta API token in the Admin Console, add it as an SSWS Authorization header, and call the Okta…

 July 22, 2026 · 8 min read 

 

   ![Get Ticket Data from Freshdesk API using Python](https://storage.googleapis.com/knit-website-media/2026/08/blog-banner-red-scaled-640x400.png) [Tutorials](https://getknit.dev/blogs/tutorials/) 

### [Get Ticket Data from Freshdesk API using Python](https://getknit.dev/blog/get-ticket-data-from-freshdesk-api-using-python/)

Learn how to retrieve ticket data from the Freshdesk API with step-by-step instructions, endpoints, code examples, common pitfalls, and FAQs…

 April 11, 2026 · 5 min read 

 

   ![How to Retrieve Candidate Education Data from Bullhorn API using Python](https://storage.googleapis.com/knit-website-media/2026/08/blog-banner-yellow-scaled-640x400.png) [Tutorials](https://getknit.dev/blogs/tutorials/) 

### [How to Retrieve Candidate Education Data from Bullhorn API using Python](https://getknit.dev/blog/how-to-retrieve-candidate-education-data-from-bullhorn-api-using-python/)

Step-by-step guide to retrieving candidate education data from the Bullhorn API, including authentication, endpoints, common pitfalls, and FAQs.

 April 11, 2026 · 3 min read 

 

  

 

  \#1 in Ease of Integrations
---------------------------

![4.9 out of 5 stars](/wp-content/themes/knit/assets/images/g2/g2-star-rating.svg)

4.9 out of 5 stars on G2

![G2 Leader, Spring 2026](/wp-content/themes/knit/assets/images/g2/g2-leader.svg)![G2 Fastest Implementation, Spring 2026](/wp-content/themes/knit/assets/images/g2/g2-fastest-implementation.svg)![G2 High Performer, Spring 2026](/wp-content/themes/knit/assets/images/g2/g2-high-performer.svg)![G2 Best Est. ROI, Spring 2026](/wp-content/themes/knit/assets/images/g2/g2-best-roi.svg)

 

  Put Integrations on Autopilot. Talk to Experts.
-----------------------------------------------

Knit is loved by customers across the globe due to our seamless product and white glove support. You'll love us too!

 [Talk to a Human](/book-demo)
