Rate limiting (Indeed PLUS)
Manage Indeed PLUS API limits.
Overview
#Too many API calls can disrupt Indeed services. To protect Indeed systems, customers, and partners, Indeed rate limits API clients.
When you call the Indeed PLUS APIs, initiate a timeout after 5,000 milliseconds.
Indeed measures the cost of each GraphQL operation that a client performs. Each client has a budget. If the client's operations cost more than that budget within 60 seconds, Indeed blocks its later calls and returns HTTP status code 429.
Indeed keeps a separate rolling total for each client. Sixty seconds after an operation, Indeed removes its cost from the total, which frees capacity for new calls.
This example shows rate limiting for Indeed PLUS APIs with a budget of 100. The units are for illustration only:
| Time | Action by partner | Cost | Response from Indeed | Rolling total Budget: 100 |
|---|---|---|---|---|
| 12:00:00 | No action | 0 | No response | 0 |
| 12:00:30 | Call A | 50 | Success | 50 |
| 12:01:00 | Call B | 50 | Success | 100 (budget reached) |
| 12:01:15 | Call C | 10 | Error | 100 (budget reached) |
| 12:01:30 | No action | Call A's cost expires | 50 |
Steps
#1. Check your rate limit
#Indeed assigns each client to a tier based on its needs. Each tier has a different rate limit. To learn your client's tier, contact your Indeed representative.
2. Handle rate limiting
#Plan for rate limiting in your integration. No single approach works for every client, so choose one that fits your customers' needs.
3. Recover from rate limiting
#When your client is rate limited, Indeed doesn't process its API calls. Each call returns HTTP 429 until enough cost expires from the rolling total.
To resolve this:
- Review your request patterns: Check whether your processes make too many API calls.
- Follow best practices: See Avoid rate limiting.
- Contact your Indeed representative: Provide traffic estimates so they can help you change your tier.
4. Prepare for traffic increases
#Your client is unlikely to be rate limited if your request volume stays stable or grows gradually, your operations don't change much, and you follow the best practices on this page. If your traffic grows slowly toward your limit, Indeed might contact you.
Sudden increases are riskier. A launch or campaign can cause one, and so can a bug or a malicious actor. Indeed can't always tell the difference, so it might rate limit your client.
If you expect request volume to grow by 25% or more, or your operations to change significantly, contact your Indeed representative two weeks in advance. Include data that helps estimate the impact:
- More requests: The number of extra requests at peak, the operations involved, and how long the increase lasts.
- Changed operations: The operations involved and sample operations.
5. Avoid rate limiting
#To reduce the chance of rate limiting, follow these best practices.
Log and monitor
#Log the outcome of every request, and monitor the HTTP status of each response, especially non-2xx codes. This helps you detect rate limiting.
Detect and block bots
#Set up alerts for suspected bot traffic. When an alert fires, block the bot's requests if appropriate. Ideally, your system blocks them automatically.
Validate user input
#Validate user input so that invalid requests don't add to your rolling total.
Query the minimum amount of data
#Request only the data that you need. This lowers the cost of each operation.
Reduce crawler crawl rate
#If you allow crawlers such as Googlebot, consider limiting their crawl rate during high-traffic periods.
Wait before retrying
#If your system retries failed requests, wait longer between retries and retry fewer times when you're rate limited.
See also
#- Rate limits — Explains the rate limits for the Job Sync API.
- 429 Too Many Requests (opens in a new window) — Explains the status code that rate-limited calls return.
- Reduce the Google crawl rate (opens in a new window) — Explains how to slow down Googlebot crawling.