---
title: "Get job application data from Darwinbox ATS API using Python"
url: "https://getknit.dev/blog/get-job-application-data-from-darwinbox-ats-api-using-python/"
date: "2025-11-26T06:45:03+00:00"
modified: "2026-07-08T09:17:53+00:00"
type: "post"
---

# Get job application data from Darwinbox ATS API using Python

[Blog](https://getknit.dev/blog) / [Tutorials](https://getknit.dev/blogs/tutorials/) / Get job application data from Darwinbox ATS API using Python [Tutorials](https://getknit.dev/blogs/tutorials/) · November 26, 2025 · Updated July 8, 2026 

Get job application data from Darwinbox ATS API using Python
============================================================

 ![](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%2Fget-job-application-data-from-darwinbox-ats-api-using-python%2F) [](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgetknit.dev%2Fblog%2Fget-job-application-data-from-darwinbox-ats-api-using-python%2F&text=Get%20job%20application%20data%20from%20Darwinbox%20ATS%20API%20using%20Python)  

 

 

 

  Table of Contents - [Introduction](#introduction)
- [Prerequisites](#prerequisites)
- [API Endpoint](#api-endpoint)
- [Step-by-Step Implementation](#step-by-step-implementation)
- [1. Fetch Data for a Single Candidate](#1-fetch-data-for-a-single-candidate)
- [2. Fetch Data for All Candidates Within a Date Range](#2-fetch-data-for-all-candidates-within-a-date-range)
- [Common Pitfalls to Watch Out For](#common-pitfalls-to-watch-out-for)
- [1. Incorrect Basic Auth credentials](#1-incorrect-basic-auth-credentials)
- [2. Misconfigured or expired API key](#2-misconfigured-or-expired-api-key)
- [3. Wrong subdomain](#3-wrong-subdomain)
- [4. Date format mismatches](#4-date-format-mismatches)
- [5. Large payload performance issues](#5-large-payload-performance-issues)
- [6. Rate limiting](#6-rate-limiting)
- [7. Complex, nested JSON](#7-complex-nested-json)
- [FAQs](#faqs)
- [Knit for Darwinbox ATS API Integration](#knit-for-darwinbox-ats-api-integration)
 
  **Introduction**
----------------

Darwinbox ATS sits at the core of hiring operations for many fast-growth companies, but extracting structured, reliable candidate data through the API can quickly turn into a multi-hour engineering effort. This guide breaks down the exact workflow for pulling job application data using the [Darwinbox ATS API](/integration/darwinbox-ats/), without the guesswork.

This article is part of a larger deep-dive series on the ATS API, covering authentication models, rate limits, job postings, candidate records, and more. You can explore the complete guide [**here**](/blog/ats-integration-guide/)**.**

**Prerequisites**
-----------------

- An active API Key issued by Darwinbox
- Darwinbox username + password (Basic Auth)
- Your organization’s Darwinbox subdomain
- Python environment prepared with `requests`

**API Endpoint**
----------------

**Bulk Candidate Data (V3):**
`https://{{subdomain}}.darwinbox.in/JobsApiv3/BulkCandidatesData`

**Step-by-Step Implementation**
-------------------------------

### **1. Fetch Data for a Single Candidate**

```
import requests

url = "https://{{subdomain}}.darwinbox.in/JobsApiv3/BulkCandidatesData"
headers = {
    "Content-Type": "application/json"
}
payload = {
    "api_key": "your_api_key",
    "candidate_id": ["candidate_id_here"]
}

response = requests.post(
    url,
    auth=('username', 'password'),
    headers=headers,
    json=payload
)

print(response.json())
```

### **2. Fetch Data for All Candidates Within a Date Range**

```
import requests

url = "https://{{subdomain}}.darwinbox.in/JobsApiv3/BulkCandidatesData"
headers = {
    "Content-Type": "application/json"
}
payload = {
    "api_key": "your_api_key",
    "created_from": "start_date_here",   # dd-mm-yyyy hh:mm:ss
    "created_to": "end_date_here"
}

response = requests.post(
    url,
    auth=('username', 'password'),
    headers=headers,
    json=payload
)

print(response.json())
```

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

Getting the API to behave consistently requires precision. Here are the biggest tripwires:

### **1. Incorrect Basic Auth credentials**

Even minor typos in username/password cause silent 401 failures.

### **2. Misconfigured or expired API key**

Darwinbox keys may be environment-specific. Validate you’re using the right one.

### **3. Wrong subdomain**

Teams often confuse sandbox vs production subdomains.

### **4. Date format mismatches**

Darwinbox is strict about `dd-mm-yyyy hh:mm:ss`. Anything else breaks the request.

### **5. Large payload performance issues**

Bulk fetches may need pagination, retries, or queueing on your side.

### **6. Rate limiting**

Multiple bulk requests back-to-back can get throttled.

### **7. Complex, nested JSON**

Candidate objects come with deeply nested sections — mapping them into your system requires a proper schema plan.

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

**1. What format does the Darwinbox API key follow?**
A string token issued by the Darwinbox team. It must be included in every call.

**2. How do I authenticate?**
Use Basic Auth (username + password) along with the API key in the payload.

**3. Can I fetch multiple candidates in one call?**
Yes, pass a list of candidate IDs in `candidate_id`.

**4. What date format is required for bulk fetch?**
`dd-mm-yyyy hh:mm:ss`. Anything else is rejected.

**5. How do I troubleshoot error responses?**
Check:

- API key validity
- Subdomain correctness
- Auth credentials
- Payload parameters

**6. Is there a limit to bulk fetching?**
Darwinbox may throttle heavy loads. Check with your account team for exact limits.

**7. How do I keep the integration secure?**
Use HTTPS, rotate API keys, and store credentials in a secrets manager.

**Knit for Darwinbox ATS API Integration**
------------------------------------------

If you want to avoid maintaining the entire integration lifecycle, authentication, retries, throttling, schema handling, and version upgrades, Knit abstracts all of it. A single integration with Knit unlocks seamless access to [Darwinbox ATS API](https://developers.getknit.dev/docs/darwinbox-ats-usecases) data, removes ongoing maintenance overhead, and ensures the API behaves reliably at scale. It’s the fastest way to productionize a Darwinbox integration.

Building a Darwinbox ATS integration?

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

- [Darwinbox ATS on Unified API](https://getknit.dev/integration/darwinbox-ats/)
    
    Your customers want Darwinbox 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)
- [Darwinbox ATS MCP server](https://getknit.dev/mcp-servers/darwinbox-ats-mcp-server/)
    
    Your AI agent needs to read and act in your customers' Darwinbox 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)
