---
title: "Developer guide to get employee data from ADP Workforce Now API"
description: "Learn how to retrieve employee data using the ADP Workforce Now HRIS API with a step-by-step Python guide. Includes authentication setup, endpoints, FAQs, and common pitfalls to avoid."
source_url: "https://www.getknit.dev/blog/developer-guide-to-get-employee-data-from-adp-workforce-now-api"
page_type: "blog"
---

_This is an educational blog post from Knit's blog: “Developer guide to get employee data from ADP Workforce Now API”._

# Developer guide to get employee data from ADP Workforce Now API

### **Introduction**

This article is part of our in-depth series exploring the [**[ADP Workforce Now](https://md.getknit.dev/integration/adp-workforce-now-hris) HRIS API**](https://www.getknit.dev/integration/adp-workforce-now-hris), a powerful interface that allows developers to access and manage employee information programmatically. In this edition, we’ll walk through how to **retrieve employee data** from [ADP Workforce Now](https://md.getknit.dev/integration/adp-workforce-now-hris) using Python, including authentication setup, key endpoints, and example code snippets.

If you’re looking for other use cases or a deeper dive into ADP Workforce Now’s authentication, rate limits, and integration methods, explore our complete guide [here](https://www.getknit.dev/blog/adp-api-integration-in-depth).

### **Prerequisites**

Before you begin, ensure the following:

*   You have **OAuth 2.0 credentials** (Client ID and Client Secret) from ADP.
*   Your API user account has **permission to access employee data**.
*   You have a Python environment set up with the `requests` library installed.

### **API Endpoints**

*   **Get all employees:** `/hr/v2/workers`
*   **Get a single employee:** `/hr/v2/workers/{aoid}`

### **1\. Authenticate Using OAuth 2.0**

```
import requests

auth_url = 'https://accounts.adp.com/auth/oauth/v2/token'
client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT_SECRET'

auth_response = requests.post(
    auth_url,
    data={'grant_type': 'client_credentials'},
    auth=(client_id, client_secret)
)
access_token = auth_response.json().get('access_token')
```

### **2\. Get All Employees**

```
headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
}
response = requests.get('https://api.adp.com/hr/v2/workers', headers=headers)
all_employees = response.json()
```

### **3\. Get a Single Employee**

```
aoid = 'SPECIFIC_ASSOCIATE_OID'
response = requests.get(f'https://api.adp.com/hr/v2/workers/{aoid}', headers=headers)
employee_data = response.json()
```

## **Common Pitfalls to Avoid**

1.  **Incorrect OAuth credentials**: Double-check your client ID and secret to prevent authentication errors.
2.  **Insufficient permissions**: Ensure your user role includes access to employee records.
3.  **Ignoring rate limits**: Repeated calls without rate-limit handling can cause throttling.
4.  **Incorrect endpoint URLs**: Verify region-specific or versioned endpoints before making requests.
5.  **Invalid AOID values**: Passing an incorrect employee ID will return a 404 error.
6.  **Network timeouts**: Implement retry logic to handle temporary connectivity issues.
7.  **Weak error handling**: Always check response codes and log detailed errors for debugging.

## **Frequently Asked Questions (FAQs)**

**Q1: How can I obtain OAuth credentials for ADP Workforce Now?**  
A: You need to register your app with ADP. Contact ADP Developer Support to get your client ID and secret.

**Q2: What does AOID stand for?**  
A: AOID (Associate Object ID) is a unique identifier assigned to each employee in ADP Workforce Now.

**Q3: How do I handle API rate limits?**  
A: Implement retry logic with exponential backoff and respect the API’s rate-limit headers.

**Q4: Can I filter or query employee data?**  
A: Yes, ADP APIs support OData query parameters such as `$filter` and `$select` for customized retrieval.

**Q5: What content type does the API use?**  
A: The API expects and returns data in `application/json` format.

**Q6: How can I handle API errors gracefully?**  
A: Check the HTTP response status codes (e.g., 400, 401, 429) and build custom error-handling functions.

**Q7: Is there a sandbox for testing integrations?**  
A: Yes, ADP provides a sandbox environment that mirrors production behavior for safe testing.

## **Knit for ADP Workforce Now API Integration**

Integrating directly with HRIS APIs like ADP Workforce Now API can be time-consuming due to authentication management, version updates, and ongoing maintenance.

**Knit API** simplifies this process. By integrating once with Knit, you can securely access [ADP Workforce Now API](https://www.getknit.dev/integration/adp-workforce-now-hris) and other [HRIS systems](https://www.getknit.dev/integration-categories/hrms-api) without worrying about token management or infrastructure maintenance. Knit handles authentication, authorization, and data synchronization. enabling you to focus on your application logic instead of backend complexity.


## Related pages

- [How Knit works](https://md.getknit.dev/how-knit-works)
- [Unified API product](https://md.getknit.dev/products/unified-api)
