Plan Rate Limits
Every v2 endpoint has a per-minute request limit that depends on your plan:
Plans not listed fall back to the Free limit.
Limits are counted per user, not per API key: every key belonging to the same user shares the same counters. Each endpoint group has its own counter (endpoints served together, such as
POST /accounts/search and POST /accounts/search/preview, share one).
Exempt Endpoints
Endpoints that spend enrichment credits are exempt from the plan limit: the credit balance is their own throttle.POST /contacts/single_enrich(async and synchronous)POST /contacts/bulk_enrichPOST /contacts/reverse_lookupPOST /leads/single_enrichPOST /accounts/single_enrichPOST /accounts/company_stackPOST /accounts/company_hiring(keeps its own per-second limit, see below)POST /intents/accounts/hiringPOST /intents/accounts/stackPOST /whatsapp_validations
GET /contacts/{id}GET /contacts/{id}/single_enrichGET /searches/{id}GET /lists/{id}GET /accountGET /credits
POST /leads/search is exempt with live: true (the default); with live: false it follows the plan limit.
Endpoint-Specific Limits
A few endpoints add a stricter limit on top of the plan limit, also counted per user:Understanding Rate Windows
Each counter opens a window on its first request and resets when the window ends. For example:- On a plan with 10 requests per minute, if your first request to
POST /accounts/searchlands at 10:00:30, you can make 9 more until 10:01:30 - If you make a request to
POST /leadsat 10:00:00, you’ll need to wait 1 second before making another request
Rate Limit Responses
When you exceed a rate limit, you’ll receive a429 Too Many Requests response:
429 when LinkedIn itself rate limits your account:
Best Practices
-
Implement Endpoint-Specific Retry Logic
- Add exponential backoff with appropriate intervals for each endpoint
- Use short retry intervals (1-5 seconds) for endpoints with a per-second limit
- Wait for the window to reset (up to 60 seconds) when you hit your plan limit
- Back off for hours, not seconds, when LinkedIn rate limits you
- Include jitter to prevent thundering herd problems
-
Optimize Request Patterns
- Use bulk endpoints when available (e.g.,
/contacts/bulk_enrich) - Space out search requests according to their specific time windows
- Queue requests that would exceed rate limits
- Use bulk endpoints when available (e.g.,
-
Handle Rate Limits Gracefully
- Implement proper error handling for 429 responses
- Use different queues for different endpoint types
- Consider using a rate limiting library in your client
Example Retry Implementation
Here’s a simple example of how to implement retry logic with endpoint-specific timing:Additional Considerations
- Rate limits are applied per user, not per API key
- Each endpoint group’s rate limit is tracked separately
- Credit-spending and status-polling endpoints are exempt from the plan limit
- Consider implementing separate queues for different endpoint types
- Monitor your usage patterns and adjust your implementation accordingly