Introduction
This article is part of an ongoing series that explores the Zoho Recruit API in detail. It focuses specifically on retrieving job application and candidate data using the Zoho Recruit API.
If you are building integrations for recruitment analytics, internal dashboards, or downstream HR workflows, accessing candidate data reliably is a foundational requirement. This guide walks through the exact API endpoints, authentication steps, and common pitfalls involved in fetching candidate data from Zoho Recruit.
For a broader overview of the Zoho Recruit API, including authentication flows, rate limits, and other supported use cases—refer to the complete Zoho Recruit API guide here.
Get Job Application Data from Zoho Recruit API
Pre-requisites
Before making any API calls, ensure the following are in place:
- Your application is registered with Zoho Recruit and has a valid Client ID and Client Secret.
- OAuth 2.0 authorization is completed and an Access Token has been generated.
- The application has the required API scopes to access candidate data.
Without these, API requests will fail regardless of endpoint correctness.
API Endpoints
- Get All Candidates
GET https://recruit.zoho.in/recruit/v2/Candidates - Get Specific Candidate
GET https://recruit.zoho.in/recruit/v2/Candidates/{candidate_id}
Step-by-Step Process
Step 1: Obtain Access Token
import requests
url = "https://accounts.zoho.in/oauth/v2/token"
payload = {
'grant_type': 'authorization_code',
'client_id': '{client_id}',
'client_secret': '{client_secret}',
'redirect_uri': '{redirect_uri}',
'code': '{grant_token}'
}
response = requests.post(url, data=payload)
access_token = response.json().get('access_token')This access token must be included in the Authorization header for all subsequent API calls.
Step 2: Fetch All Candidates
url = "https://recruit.zoho.in/recruit/v2/Candidates"
headers = {
'Authorization': f'Zoho-oauthtoken {access_token}'
}
response = requests.get(url, headers=headers)
candidates = response.json().get('data')This endpoint returns a list of candidate records, subject to pagination and API limits.
Step 3: Fetch a Specific Candidate
candidate_id = "134154000000311105"
url = f"https://recruit.zoho.in/recruit/v2/Candidates/{candidate_id}"
response = requests.get(url, headers=headers)
candidate_data = response.json().get('data')This is useful when you already have a candidate ID and need detailed information for a single record.
Common Pitfalls to Watch Out For
- Expired access tokens
Access tokens have a limited lifetime and must be refreshed to avoid authentication failures. - API rate limits
Exceeding rate limits can result in throttling or temporary blocks, especially during bulk fetches. - Unhandled HTTP errors
Errors such as 400, 401, or 403 should be explicitly handled instead of assuming a valid response. - Invalid candidate IDs
Requests for non-existent or deleted candidate IDs will return errors and should be validated upstream. - Missing or incorrect API scopes
Even with a valid token, insufficient scopes will prevent access to candidate data. - Incorrect regional endpoint usage
Using the wrong Zoho data center domain can cause authentication or routing issues. - Improper JSON parsing
Always validate response structures before accessing nested fields to avoid runtime errors.
Frequently Asked Questions (FAQs)
Q1. How do I refresh an expired access token?
Use the refresh token with Zoho’s OAuth token endpoint to generate a new access token.
Q2. What is the maximum number of candidates returned per API call?
You can retrieve up to 200 candidates per request.
Q3. Can candidate data be sorted in API responses?
Yes, sorting can be applied using the sort_by and sort_order parameters.
Q4. Is it possible to filter candidates by status?
Yes, filtering can be done using the Candidate_Status field in the request query.
Q5. How should API errors be handled?
Inspect the error code and message returned in the API response to identify the root cause.
Q6. Can I receive real-time updates when candidate data changes?
Yes, Zoho Recruit webhooks can be used to receive notifications for candidate updates.
Q7. Are candidate attachments accessible via the API?
Yes, but attachments require additional API calls beyond the candidate data endpoints.
Using Knit for Zoho Recruit API Integration
For teams looking to simplify Zoho Recruit API integrations, Knit provides a streamlined alternative. By integrating with Knit once, you can avoid managing OAuth flows, token refresh logic, and long-term maintenance internally. Knit handles authentication, authorization, and integration upkeep, enabling faster and more reliable access to Zoho Recruit data with significantly reduced engineering overhead.




