Developer guide
LinkedIn API Rate Limits and Restrictions in 2026
Two different things get called a LinkedIn rate limit, and confusing them is why integrations break in production. There is what LinkedIn enforces and returns an error for, and there is the pace at which an account stays healthy. The first is a hard ceiling. The second is a judgement call, and it is the one that decides whether your customers' accounts survive the month.
Inhaltsübersicht
THE NUMBERS
PATTERNS
BAUE MIT UNIPILE
Die kurze Antwort
Auf Basis der LinkedIn-API kostenlos entwickeln
A paid, active LinkedIn account sends 80 to 100 invitations a day and around 200 a week. Over the limit, LinkedIn returns 422 cannot_resend_yet for invitations, and HTTP 429 or 500 for the rest. Unipile adds no ceiling of its own: you get the same limit you would get in the LinkedIn interface, plus a documented set of conservative daily figures per action, which this page goes through one by one.
Every LinkedIn limit, in one table
Two columns, because two different things are being measured. Enforced means LinkedIn returns an error when you cross it. Empfohlen means nothing stops you, and crossing it repeatedly is how accounts start getting flagged. The recommended figures below are the conservative defaults Unipile documents for its own customers.
| Aktion | Enforced by LinkedIn | Recommended pace | Error on excess |
|---|---|---|---|
| Invitations, paid active account | Roughly 200 per week | 80 to 100 per day | 422 cannot_resend_yet |
| Invitations, free account | About 5 per month with a note, 150 per week without | Ebenfalls | 422 cannot_resend_yet |
| Profile retrieval | Recruiter Lite capped at 2,000 | About 100 per account per day | 429 oder 500 |
| Search, per query | 1,000 profiles standard, 2,500 on Sales Navigator or Recruiter | Split the query with filters | Results simply stop |
| Search, per day | Not enforced | 1,000 result lines standard, 2,500 on Sales Navigator or Recruiter | 429 oder 500 |
| InMail, subscription credits | 5 per month on Career, varies on Recruiter contracts | Check the balance before sending | Send fails |
| Free InMail to open profiles | Maximum 800 per month per account | 30 to 50 per day | Send fails |
| Everything else | Not published | 100 per day per account | 429 oder 500 |
The rule most people miss
These limits are defined per LinkedIn account, not per route, and they do not accumulate. Retrieving 100 profiles does not buy you a separate allowance for 100 company pages. The account is the budget, and every endpoint you call spends from the same one.
Who enforces what
There are three layers, and only two of them can stop a request.
LinkedIn enforces. Hard ceilings with an error code behind them. Nothing you or your provider does moves these.
Unipile recommends. Conservative daily figures published so you know what pace is survivable. Unipile enforces no limit of its own, so you get exactly the ceiling you would hit in the LinkedIn interface, no more and no less.
You decide. Volume, cadence and targeting stay a customer-side decision. You can raise the recommended figures, at your own risk, and the risk lands on your users' accounts.
That middle layer is the reason this page exists. A provider that silently throttles you is hiding the real ceiling; a provider that publishes nothing leaves you to discover it in production. The full reference lives in the Dokumentation zu Anbieter-Limits, which is updated as the figures move.
Connection requests
The single most constrained action, and the one that gets accounts restricted fastest.
Paid and active account: 80 to 100 invitations per day, roughly 200 per week, with a note of up to 300 characters.
Free account: around 5 invitations per month if you attach a note, with a 200-character limit, or 150 per week if you send without a note. The note is what costs you, not the invitation.
When the ceiling is reached, LinkedIn returns
422 cannot_resend_yet. There is a subtlety worth building for: LinkedIn only surfaces this at the very last step of the flow. The request appears to go through until it does not, which is why you should treat a successful call as an accepted request rather than a delivered invitation, and reconcile afterwards.
New accounts behave differently
Accounts with fewer than about 150 connections, or recently created ones, may see invitations held for manual verification by LinkedIn before they appear at all. Start new accounts at low volume and increase gradually. And use real accounts: fabricated profiles are detected reliably by LinkedIn even without any automation on them, and they take the genuine accounts around them down too.
Profile retrieval and search
Profile
Über 100 profiles per account per day is the recommended pace. It is not enforced, so nothing will stop a script that asks for ten times that, which is precisely the problem. An account holding Sales Navigator or Recruiter can go further by switching the
API parameter on the profile retrieval request, and Recruiter Lite carries an official cap of 2,000.Search, and the two limits people conflate
Search has a per-query cap and a daily pace, and they are unrelated.
Per query, enforced by LinkedIn: 1,000 profiles on standard LinkedIn, 2,500 on Sales Navigator or Recruiter. Company search on Sales Navigator stays at 1,000. Even when the interface advertises more total results, only the first 1,000 or 2,500 come back for that query. To reach the rest, narrow the query with filters and run several searches.
Per day, recommended: 1,000 result lines on standard, 2,500 on Sales Navigator or Recruiter. This counts result lines actually fetched, not the number of requests, which is the distinction that trips up pagination code.
InMail, credits and open profiles
How many InMails an account can send depends on its subscription. Career plans start at 5 per month; some Recruiter contracts include thousands of shared InMails. Rather than guessing, read the balance programmatically with the InMail balance endpoint before you queue anything.
Free InMails to open profiles are a separate allowance. Open profiles are identifiable through the
is_open_profile property on profile retrieval, and that result is relative to the account asking, so two accounts can see the same profile differently. LinkedIn caps free InMails at 800 per month per account, and reduces that for some account types depending on history, acceptance rate and which product the send comes from, since linkedin[api]=classic, sales_navigator und recruiter do not behave identically. LinkedIn documents part of the Recruiter side.One trap: even for a free InMail to an open profile, LinkedIn may still require the account to hold available credits. With no credit left, the send can fail depending on the product context. Spacing sends randomly and keeping to 30 to 50 a day is what makes the monthly allowance last.
Stop polling for accepted invitations
The instinct is to poll the relations list or the invitation list to detect acceptances. Doing it hourly, or every day at 08:00, is one of the easiest automation signatures to spot, and it costs you from the same per-account budget as everything else.
Verwenden Sie die
new_relation Webhook instead. It is built for exactly this and removes the polling entirely. Where you do need to read the list, an initial sync can call the endpoint several times; after that, retrieve the first page only a few times a day at randomly spaced intervals of several hours.Messaging is the exception. Inbox synchronisation is handled server-side, so the Messages, Chats and Attendees routes can be read without rationing.
Everything else: 100 a day, and spread it out
For any route not listed above, the default is 100 actions per day per account. That covers retrieving company profiles, retrieving posts, sending messages to existing connections, commenting and adding reactions. Two principles go with it: use as little as the feature actually needs, and space calls at random intervals rather than chaining them on a fixed cadence.
This is where the per-account rule bites hardest. A sequencer that pulls a company page, fetches recent posts, reacts to one and then sends a message has spent four actions on one prospect, from a budget of a hundred.
LinkedIn Recruiter, the session trap
Recruiter limits how many sessions can run at once, and this one surprises teams in production rather than at integration time. Connecting with credentials can trigger a LinkedIn warning about not sharing account access, which the user has to acknowledge. If LinkedIn then detects another session, it lists the active ones and asks the user to end one to carry on browsing.
There is no lasting risk to the account, but the experience is poor: your user reconnects their account to your product every time the popup appears. Two ways out:
Turn the feature off mit dem
disable_feature parameter on the hosted authentication route, if your product does not specifically need Recruiter.Connect with cookies if you do need it. That path is on the login page but asks the user to open developer tools, which is a lot for a non-technical user. The cleaner answer is a small Chrome extension that collects them in the background.
Handling limits in production
Over the line, LinkedIn answers with
429 oder 500. Both need to be handled, and a bare retry loop makes things worse: retrying immediately on a throttle is how a warning becomes a restriction. Back off exponentially, add jitter so parallel workers do not resynchronise, and give up rather than hammering.// Back off on 429 and 500, with jitter, and budget per account.
async function callWithBackoff(run, attempts = 5) {
für (lassen i = 0; i < attempts; i++) {
const res = await run();
wenn (res.status !== 429 && res.status !== 500) return res;
// 2s, 4s, 8s, 16s, 32s, plus up to 1s of jitter
const warten = Math.pow(2, i + 1) * 1000 + Math.random() * 1000;
await new Versprechen(r => setTimeout(r, wait));
}
werfen new Fehler('LinkedIn throttled, stopping for this account');
}
Three things matter more than the retry code itself:
Budget per connected account, not per API key. In a multi-tenant product the API key is yours and the limit is your customer's. A counter at the key level tells you nothing useful.
Spread work across working hours with randomised gaps, instead of draining the daily allowance in a burst at 09:00.
Ramp new accounts. Start low, raise gradually, and treat a fresh account and a year-old account as different budgets rather than applying one global figure.
One integration, limits documented per provider. LinkedIn, WhatsApp, Instagram, Telegram, email and calendars behind one schema, with hosted authentication and webhooks. Connect your first account without a credit card.
Beginnen Sie mit dem Bau
How Unipile handles LinkedIn limits on behalf of the authenticated user
Unipile is an independent technical intermediary. Each end user connects a LinkedIn account they own, and every action runs on behalf of that authenticated user, inside workflows the user initiates and controls. That shapes what the platform does and does not do about limits.
What that means concretely
No ceiling of our own, and nothing hidden from you
Unipile adds no limit on top of LinkedIn's, so the ceiling your users hit through the API is the same one they would hit in the LinkedIn interface. What Unipile adds is the documentation of a survivable pace, the error codes surfaced as they come, the
new_relation webhook that removes the need to poll, and server-side inbox synchronisation so messaging does not spend from the same budget. Volume, content and cadence remain a customer-side decision, and platform limits are relayed rather than worked around. Unipile is not affiliated with, endorsed by, or sponsored by LinkedIn.If you are still choosing a provider, the Leitfaden zur LinkedIn-API-Integration covers what the official endpoints allow and what an account-based API adds, and the LinkedIn-API-Produktseite lists the endpoints. Pricing is per connected account with unlimited API calls, on the Preisseite.
LinkedIn API rate limits, your questions answered
What LinkedIn enforces, what it returns, and what to do about it.
LinkedIn publishes no single rate-limit table. In practice a paid, active account sends 80 to 100 invitations a day and roughly 200 a week, retrieves around 100 profiles a day, and is capped at 1,000 search results per query, or 2,500 on Sales Navigator and Recruiter. Crossing the line returns
422 cannot_resend_yet for invitations and 429 oder 500 elsewhere. Limits are per LinkedIn account, apply across every route, and do not accumulate.80 bis 100 pro Tag bei einem kostenpflichtigen, aktiven Konto für etwa 200 pro Woche, mit einer Notiz von bis zu 300 Zeichen. Ein kostenloses Konto erhält etwa 5 Einladungen pro Monat, wenn man eine Notiz anhängt, oder 150 pro Woche ohne eine. Keine API ändert diese Zahlen: Sie gehören zum LinkedIn-Konto, und man würde genau dasselbe Limit in der LinkedIn-Oberfläche erreichen.
That is LinkedIn refusing an invitation because the account has reached its invitation ceiling, or because the same invitation was already sent. Worth building for: LinkedIn only raises this at the last step of the flow, so a call can look accepted and still fail at the end. Treat a successful call as an accepted request rather than a delivered invitation, and reconcile afterwards.
It means the account went past what LinkedIn tolerates for that action; a
500 can mean the same thing. Retrying straight away turns a warning into a restriction. Back off exponentially, add jitter so parallel workers do not resynchronise, cap the attempts, and stop for that account rather than continuing to push.Nein. Unipile enforces no limit of its own, so the ceiling reached through the API is the same one the account would reach in the LinkedIn interface. What Unipile publishes is a set of conservative daily figures per action so you know what pace is survivable, plus the error codes surfaced as they come. Volume and cadence remain a customer-side decision.
About 100 per account per day is the recommended pace. It is not enforced, so nothing stops a script asking for far more, which is exactly the risk. Accounts with Sales Navigator or Recruiter can go further by switching the
API parameter on the retrieval request, and Recruiter Lite carries an official cap of 2,000.Because that is LinkedIn's per-query cap on standard accounts, 2,500 on Sales Navigator and Recruiter, with company search on Sales Navigator staying at 1,000. Even when the interface advertises more total results, only the first page set comes back for that query. Narrow the query with filters and run several searches to reach the rest.
It depends on the subscription: Career plans start at 5 a month, some Recruiter contracts include thousands of shared InMails. Read the balance programmatically before queuing. Free InMails to open profiles are a separate allowance capped at 800 per month per account, reduced on some account types, and 30 to 50 a day is the pace that makes the monthly allocation last.
Verwenden Sie die
new_relation webhook. Polling the relations list hourly, or every day at a fixed time, is one of the easiest automation signatures to spot and it spends from the same per-account budget as everything else. Where you do need to read the list, do an initial sync, then retrieve the first page only a few times a day at randomly spaced intervals.Haben Sie noch Fragen? Unser Team ist für Sie da.
Ship LinkedIn without discovering the limits in production
Erstelle deine erste Integration
Hosted authentication, documented limits per provider, webhooks instead of polling, and unlimited API calls on every plan. From 49 EUR a month, no credit card to start.
Quellen
7 Referenzen, August 2026Every figure on this page comes from the pages below. LinkedIn adjusts its ceilings without notice, so treat the documentation as the current version and this page as a snapshot.
Unipile, Anbieter-Limits
The primary source for every number here: Anbietergrenzen und -beschränkungen, covering LinkedIn and the other channels.
Unipile, accepted invitations
Die Webhook "neue_Beziehung, which replaces polling the relations list.
Unipile, InMail balance
Die endpoint to read remaining credits before queuing sends.
Unipile, Konten verbinden
Hosted authentication, the disable_feature parameter and the Chrome extension approach for Recruiter cookies.
LinkedIn Help, Recruiter Lite
Die official 2,000 cap on profile viewing for Recruiter Lite.
LinkedIn Help, Recruiter InMail
Part of the Recruiter side of InMail limits.
Unipile, pricing
Per connected account with unlimited API calls, on the Preisseite.
Last updated August 2026. Figures reflect the Unipile documentation at that date and are conservative recommendations unless marked as enforced by LinkedIn. Volume, content and cadence remain a customer-side decision. Unipile is an independent technical intermediary and is not affiliated with, endorsed by, or sponsored by LinkedIn.