Usage Limits

Rate Limiting

We define rate limits on a per-key basis and use a fixed-window rate limiting strategy. So if your API key's rate limit is 100 requests per minute, you can make those 100 API calls at any interval within the 60-second window.

Rate limits for all of our API endpoints are separate.

To view your rate limits, you can access our API dashboard or view the headers in your API response.

The API Dashboard

All accounts have access to our API Dashboard, which allows you to manage your API keys, view usage and test new endpoints (when available).

To check your credit usage on the dashboard, go to the Usage tab. Select the endpoint you want to check from the header row. You will see your Monthly Data Stats and Active Credit Usage for that endpoint on the page.

Check Rate Limits in Response Headers

To check your rate limit and credit usage for a particular endpoint via code, check the headers of the API response. Here's an example for checking the Person Enrichment API:

import requests

# Set the headers
HEADERS = {
    'x-api-key': "YOUR API KEY"
}

# Pass the headers to the Person Enrichment API
response = requests.head('https://api.peopledatalabs.com/v5/person/enrich', headers=HEADERS)

# Print the API response headers
print(response.headers)
curl -i -X GET \
  'https://api.peopledatalabs.com/v5/person/enrich' \
  -H 'X-Api-Key: xxxx'
// See https://github.com/peopledatalabs/peopledatalabs-js
const PDLJS = require('peopledatalabs');

const PDLJSClient = new PDLJS({ apiKey: 'YOUR API KEY' });

(async () => {
  try {
    const response = await PDLJSClient.person.enrichment({ profile: 'linkedin.com/in/linfluencer' });
    console.log(response);
    // Log the header
    console.log(response.head);
  } catch (error) {
    console.log(error);
    }
})();

To check any other endpoint, replace the URL with the new endpoint.

Sample Response Headers

{
  "x-call-credits-spent": 1,
  "x-call-credits-type": "enrich",
  "x-ratelimit-reset": "2022-02-23T20:19:55Z",
  "x-ratelimit-remaining": {
    "minute": 1200,
    "day": None,
    "month": None
  },
  "x-ratelimit-limit": {
    "minute": 1201,
    "day": None,
    "month": None
  },
  "x-lifetime-used": 984152,
  "x-totallimit-remaining": 1342,
  "x-totallimit-purchased-remaining": 342,
  "x-totallimit-overages-remaining": 1000,
}

Header Field Descriptions

HEADER FIELDDESCRIPTIONEXAMPLE
x-call-credits-spentThe number of credits that we billed for this API call.1
x-call-credits-typeThe type of credits that are used for this API, which will be one of following: enrich, search, search_company, enrich_company, enrich_skill, enrich_job_title, preview_search or person_identify.enrich
x-ratelimit-resetThe UTC timestamp that indicates when the rate limit will reset."2022-02-23T20:19:55Z"
x-ratelimit-remainingA collection of fields that describe the number of API requests that you have remaining over a subsequent time period.
x-ratelimit-remaining.minuteThe number of requests that you have available in the next minute.1200
x-ratelimit-remaining.dayThe number of requests that you have available in the next day.12000
x-ratelimit-remaining.monthThe number of requests that you have available in the next month.120000
x-ratelimit-limitA collection of fields that describe the maximum number of API requests that you can make in a given time period.
x-ratelimit-limit.minuteThe maximum number of requests that you can make in a minute.1201
x-ratelimit-limit.dayThe maximum number of requests that you can make in a day.12001
x-ratelimit-limit.monthThe maximum number of requests that you can make in a month.120001
x-lifetime-usedThe total number of credits that you have used over your account’s lifetime.984152
x-totallimit-remainingThe total number of credits that you have available to consume, which includes both purchased and overage credits.1342
x-totallimit-purchased-remainingThe number of purchased credits that you have remaining.342
x-totallimit-overages-remainingThe number of overage credits that you have remaining.1000

If your account has a limit on the number of 200 API calls that you can make, once x-totallimit-remaining reaches zero, all API requests will return 402 errors. Similarly, once x-ratelimit-remaining reaches zero, all requests that you make will return 429 errors until the current rate limit window resets.

Since a given route can have multiple rate limits active, we will use the rate limit with the lowest time
granularity when your request does not breach any rate limits. If you have reached a rate limit, we'll return the reset time of that one in the response headers.

📘

Increasing Account Request Limits

If you'd like to increase your account's x-totallimit-limit or x-ratelimit-limit values, please contact your account manager or reach out to us at [email protected].

Response Size Limit

There is a 1MB size limit on all API responses. In practice, the type of requests that are most likely to hit this limit are those returning multiple full records (such as the Search APIs or the Bulk Person Enrichment API), particularly when requesting 80-100 records in a single response.

Here are some ways to avoid hitting this limit:

  • Add the Accept-Encoding: gzip header to your request headers; we will gzip-compress the responses, and they will be around five times smaller.

  • Use the data_include input parameter to only return fields that you need (on endpoints that support this parameter.)

  • Request fewer records per call. By requesting around 50 records instead of 100, you should keep API response sizes below the limit.