Limiti e restrizioni delle API di LinkedIn nel 2026: cosa impone LinkedIn, cosa consiglia Unipile

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.
La risposta breve
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.
Costruire sull'API di LinkedIn gratuitamente

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. Consigliato 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.
AzioneEnforced by LinkedInRecommended paceError on excess
Invitations, paid active accountRoughly 200 per week80 to 100 per day422 cannot_resend_yet
Invitations, free accountAbout 5 per month with a note, 150 per week withoutUguale422 cannot_resend_yet
Profile retrievalRecruiter Lite capped at 2,000About 100 per account per day429 o 500
Search, per query1,000 profiles standard, 2,500 on Sales Navigator or RecruiterSplit the query with filtersResults simply stop
Search, per dayNot enforced1,000 result lines standard, 2,500 on Sales Navigator or Recruiter429 o 500
InMail, subscription credits5 per month on Career, varies on Recruiter contractsCheck the balance before sendingSend fails
Free InMail to open profilesMaximum 800 per month per account30 to 50 per daySend fails
Everything elseNot published100 per day per account429 o 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 documentazione sui limiti del provider, 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

Profili

Circa 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 e 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.
Utilizzare il 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 con il 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 o 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) {
per (lascia i = 0; i < attempts; i++) {
const ris = await run();
se (res.status !== 429 && res.status !== 500) return res;
// 2s, 4s, 8s, 16s, 32s, plus up to 1s of jitter
const aspettare = Math.pow(2, i + 1) * 1000 + Math.random() * 1000;
await new Promessa(r => setTimeout(r, wait));
}
lanciare new Errore('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.
Iniziare a costruire

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 Guida all'integrazione delle API di LinkedIn covers what the official endpoints allow and what an account-based API adds, and the Pagina del prodotto API di LinkedIn lists the endpoints. Pricing is per connected account with unlimited API calls, on the pagina dei prezzi.

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 o 500 elsewhere. Limits are per LinkedIn account, apply across every route, and do not accumulate.
Da 80 a 100 al giorno su un account a pagamento e attivo, per circa 200 a settimana, con una nota fino a un massimo di 300 caratteri. Un account gratuito ottiene circa 5 inviti al mese se si allega una nota, o 150 a settimana senza. Nessuna API modifica questi numeri: appartengono all'account LinkedIn e si raggiungerebbe esattamente lo stesso limite nell'interfaccia di LinkedIn.
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.
No. 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.
Utilizzare il 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.

Avete ancora domande? Il nostro team è qui per aiutarvi. Parlare con un esperto

Ship LinkedIn without discovering the limits in production
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.
Crea la tua prima integrazione

Fonti

7 riferimenti, agosto 2026
Every 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, limiti del provider The primary source for every number here: limiti e restrizioni del fornitore, covering LinkedIn and the other channels.
Unipile, accepted invitations Il webhook nuova_relazione, which replaces polling the relations list.
Unipile, InMail balance Il endpoint to read remaining credits before queuing sends.
Unipile, connessione degli account Hosted authentication, the disable_feature parameter and the Chrome extension approach for Recruiter cookies.
LinkedIn Help, Recruiter Lite Il 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 pagina dei prezzi.
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.

it_ITIT