LinkedIn API Rate Limits: Daily Caps and 429 Fixes
LinkedIn API rate limits are daily caps that reset at midnight UTC. Each endpoint has an application limit for your whole app and a member limit for each LinkedIn user's token. Going over returns HTTP 429. LinkedIn doesn't publish standard limits; your app's Analytics tab in the Developer Portal shows them. Community Management Development tier allows 500 calls per app and 100 per member a day.
LinkedIn API rate limits are daily caps on how many calls your app can make to each endpoint, and they reset at midnight UTC. Every endpoint has two: an application limit for your whole app and a member limit for each LinkedIn user whose token you call with. When either runs out, LinkedIn answers HTTP 429 until the reset.
LinkedIn doesn't publish most of the numbers. Its rate limiting page says standard limits are left out of the documentation, so you find yours in the Developer Portal, one endpoint at a time. This post covers how the limits work, the published Community Management numbers, where to look up the rest, and how to handle a 429.
How do LinkedIn API rate limits work?
LinkedIn API rate limits count calls per endpoint over a 24-hour period, split into an application limit and a member limit. Both reset at midnight UTC every day. These rules come from LinkedIn's rate limiting docs on Microsoft Learn:
| Concept | How it works |
|---|---|
| Window | 24 hours, resetting at midnight UTC |
| Application limit | The total calls your app can make in a day |
| Member limit | The calls your app can make with one member's token in a day |
| Per endpoint | Each endpoint has its own daily limit |
| Over the limit | HTTP 429 |
| Published? | Standard limits aren't; the Developer Portal shows yours |
Member limits are counted per app. LinkedIn defines it as the calls "a single member per application" can make. If your product posts for 50 customers, each customer's token has its own member budget, and all 50 draw on the one application budget.
What is the LinkedIn API daily limit?
The one published LinkedIn API daily limit is for the Community Management API on Development tier: 500 calls per app and 100 calls per member every 24 hours. LinkedIn's Increasing Access page lists the tier restrictions:
| Development tier | Standard tier | |
|---|---|---|
| Calls per app | 500 per 24 hours | No restrictions listed |
| Calls per member | 100 per 24 hours | No restrictions listed |
BATCH_GET calls |
Not allowed | Allowed |
| Webhooks for social actions | Push notifications off | Available |
| Time limit | Build your use case within 12 months | Not listed |
| How you get it | Default after LinkedIn vets your app | A separate application with a screen recording |
The Community Management FAQ in LinkedIn's overview notes these were raised from 100 per app and 10 per member.
Other LinkedIn products publish access tiers without call counts. The Advertising API's Development tier caps how many ad accounts you can edit (five). For Sign In with LinkedIn, the Advertising API, and the rest, the daily call limits are whatever the Developer Portal shows for your app.
How do I see my LinkedIn API rate limits in the developer portal?
Your LinkedIn API rate limits are on your app's Analytics tab in the LinkedIn Developer Portal, listed per endpoint. The steps:
- Open LinkedIn Developer Portal → My Apps.
- Select your app.
- Open the Analytics tab. It shows each endpoint's usage today and its daily limit.
An endpoint shows up only after your app has called it at least once that day (UTC). To look up the limit for an endpoint you haven't used, make one test call to it, then refresh the Analytics page. Plan new features this way before you build them: one test call tells you whether the feature fits in the day's budget.
What happens when you hit the LinkedIn API rate limit?
When you hit a LinkedIn API rate limit, every further call to that endpoint returns HTTP 429 until midnight UTC. The limit doesn't roll over, so a 429 at 9:00 UTC means 15 hours without that endpoint for that app or member.
Three details from LinkedIn's docs:
- Alerts are for application limits only. Your app's developer admins get an email when the app passes 75% of an endpoint's quota. Member-level breaches send nothing.
- Alerts arrive late. LinkedIn expects a delay of about 1 to 2 hours after the threshold, so a fast spike can hit 100% before the email lands. Another endpoint passing 75% later the same day sends a new alert.
- Some 429s aren't yours. LinkedIn may return
429for infrastructure protection in rare cases. The docs say service returns to normal on its own.
How should you handle a 429 from the LinkedIn API?
Handle a LinkedIn 429 by pausing calls to that endpoint, for that member or the whole app, until the daily reset. Retrying in a loop gets you nothing, because the counter doesn't move until midnight UTC. LinkedIn's rate limiting page documents no rate-limit headers for the reset time, so compute it yourself:
// Next reset of LinkedIn's daily limits: midnight UTC.
function msUntilLinkedInReset(now = new Date()): number {
const reset = Date.UTC(
now.getUTCFullYear(),
now.getUTCMonth(),
now.getUTCDate() + 1,
);
return reset - now.getTime();
}
async function callLinkedIn(url: string, token: string, init: RequestInit = {}) {
const res = await fetch(url, {
...init,
headers: {
...init.headers,
Authorization: `Bearer ${token}`,
"Linkedin-Version": "202610",
"X-Restli-Protocol-Version": "2.0.0",
},
});
if (res.status === 429) {
// Park this endpoint for this member (or the whole app) until the reset.
throw new RateLimitedError(msUntilLinkedInReset());
}
return res;
}How to apply it:
- Track who hit the limit. If your Analytics tab shows the app under its limit, the
429came from one member's budget. Park that member's calls, not everyone's. - Retry the rare infrastructure 429. If neither budget is near its limit, retry once or twice with backoff and jitter.
- Never blindly retry post creation. If a
POST /rest/postsresponse is unclear, check whether the post exists before sending it again, or you can publish it twice. - Tell the user. "LinkedIn's daily limit reached, try again after midnight UTC" beats a silent failure.
How do you stay under LinkedIn's daily limits?
You stay under LinkedIn's daily limits by caching what you read, spending calls on writes, and counting calls per member. On Development tier, 500 calls a day across every customer goes fast. Where the calls go:
| Call pattern | Cost | Cheaper approach |
|---|---|---|
| Refreshing analytics on every page load | One call per view | Cache results and refresh on a schedule |
| Member post analytics | One call per metric per post | Request only the metrics you show; store lifetime totals |
| Looking up Pages one by one | One call per Page, since BATCH_GET is blocked on Development tier |
Cache the member's Pages after connect |
| Polling for comments and reactions | One call per check | Poll less often; social action webhooks need Standard tier |
| Page post statistics | One call can return several posts | Ask for a list of share URNs in one request |
The LinkedIn post analytics API guide shows the analytics calls, including which ones return several posts at once.
LinkedIn API rate limits vs other networks
LinkedIn counts calls per day; most other social APIs count per 15 minutes, per hour, or per second. That changes how you schedule work:
| Network | Limit window | What a limit error means |
|---|---|---|
| 24 hours, reset at midnight UTC | Wait for the daily reset | |
| X API v2 | Mostly 15 minutes | Wait minutes, per the reset header |
| Instagram and Facebook Graph API | Rolling usage windows | Back off and spread calls out |
For the details on the others, see our posts on X API rate limits, Instagram API rate limits, and Facebook Graph API rate limits.
How does Adeli handle LinkedIn rate limits?
Adeli handles LinkedIn rate limits by caching analytics, returning a clear 429 rate_limited error, and never auto-retrying LinkedIn writes. What Adeli's docs describe:
- Analytics come from snapshots. LinkedIn account insights serve a snapshot refreshed at most every six hours, with
fetchedAt. When LinkedIn rate-limits a refresh, you get the previous snapshot withstale: trueinstead of an error. - Rate limits are a typed error. Publishing to LinkedIn returns
429 rate_limited, withretryAfterSecondswhen a delay is known. - No duplicate posts. Adeli doesn't automatically retry LinkedIn writes, so an automatic retry never publishes the same post twice.
- One integration for every network. The same API key publishes to LinkedIn, Instagram, Facebook, TikTok, YouTube, X, and Bluesky through Adeli's posting API, and reads LinkedIn analytics through the analytics API.
For the full posting flow, see the LinkedIn posting API guide.