What the official API actually grants
A standard LinkedIn developer application gets w_member_social and the OpenID scopes. In practice that means two things: identify the signed-in member, and publish a post as that member or as a company page they administer. Reading a conversation, searching people, listing your connections, sending an invitation, reading who commented on a post — none of these are in the public product. They exist behind partner programmes that are granted case by case to a small number of companies, mostly in advertising and recruiting. This is why so many projects that start with “we will just use the LinkedIn API” stop three days in.
Two different jobs, two different products
Wanting a LinkedIn API usually means one of two things, and they need opposite tools. If you are a developer building a product — a CRM that syncs conversations, a sourcing tool, an outreach platform — you want a REST API, your own authentication, webhooks and per-account billing: that is Unipile, at unipile.com. If you are an end user who wants your own LinkedIn usable from an AI assistant — read what came in, prepare an answer, check who you already know at a company — you do not want to write code at all: you want an MCP server your assistant connects to, which is Nilyo. Nilyo is built on Unipile, so the same connection layer is underneath; the difference is who holds it.
Why “unofficial LinkedIn API” usually means a scraper
Most results for that query are browser automation: a headless Chrome signed into an account, clicking pages and parsing HTML. It works until LinkedIn changes a selector, adds a challenge or notices the traffic pattern, and the account carries the consequence, not the tool. A connection layer that speaks the provider protocols directly is a different thing: no browser to break, the session is maintained the way the official clients maintain theirs, and pacing can be enforced before a request is made rather than discovered afterwards.
If you are building a product: the Unipile API
Unipile is a REST API over the messaging, email and calendar accounts your users already own — LinkedIn, WhatsApp, Instagram, Telegram, Gmail, Outlook, any IMAP mailbox, Google and Microsoft calendars. Your users connect their account once through hosted authentication, you call the same routes whichever provider is behind the account, and realtime events are delivered to your webhook. Billing is per connected account per month, not per call. Documentation is at developer.unipile.com and accounts are self-serve, including a free trial environment with mock accounts so you can build before connecting anything real.
If you want to use your own account: Nilyo MCP
Nilyo exposes the same capabilities as tools for an AI agent instead of endpoints for a codebase. There is one server URL, one OAuth sign-in, and no key to paste: Claude, ChatGPT, Cursor and any MCP client register themselves and open a browser once so you can authorize the accounts you want the agent to reach. From then on the assistant can search people, resolve a profile URL to a real identity, read a conversation, draft a reply, send an invitation, or check whether you already know someone at a company — in plain language, with your own account.
“Who do I already know at Stripe?”
“Read my LinkedIn conversation with Ada and draft a follow-up.”
“Find the comment from John on my last post and answer it.”
Pacing is not optional on LinkedIn
Whichever route you take, the account is the limit, not the API. LinkedIn tolerates a human volume of actions per day and reacts to anything that looks automated. Nilyo serializes calls per connected account and applies a daily budget of roughly one hundred LinkedIn actions, live reads included; when the budget is reached the agent receives an explicit limit error instead of a retry loop. A tool that lets you send five hundred invitations in an afternoon is not more powerful, it is just going to cost you the account.
Common questions
Does LinkedIn have a public API?
Yes, but it is a publishing and advertising API. The public scopes identify the member and post to their feed or their company page. Messaging, people search, connections and invitations are not part of it; they sit behind partner programmes granted case by case.
Can I read my LinkedIn messages through an API?
Not through the official developer product. You can through a connection layer that acts as your own connected account: the Unipile API if you are building software, Nilyo if you want your assistant to do it for you.
What is the difference between Unipile and Nilyo?
Unipile is the API you build on: REST endpoints, your own authentication, webhooks, per-connected-account billing. Nilyo is the agent side of the same connection layer: an MCP server your assistant connects to with OAuth, for people who want to use their accounts rather than integrate them.
Is this allowed, and is my account at risk?
You are acting on your own account, with your own credentials, at a human pace. The risk comes from volume and from unsolicited mass contact, which is why the daily budget and the per-account serialization exist and cannot be turned off.
Do I need Sales Navigator or Recruiter?
No, a standard account works. Sales Navigator and Recruiter are separate products with their own searches and their own inboxes; they stay distinct capabilities, available when the connected account actually has that seat.
How LinkedIn works with Nilyo
Connection. Secure hosted sign-in (your LinkedIn credentials go to LinkedIn, never to the agent). Sales Navigator and Recruiter are detected automatically when your account has them.
What your agent can do. People and company search, profile lookup from a name or URL, your network and invitations, private conversations (classic, Sales Navigator, Recruiter inboxes), posts, comments and reactions, job postings and applicants, Recruiter projects.
Pacing and safety. About 100 actions per day per account, profile views and searches included; calls are serialized so an agent can never run LinkedIn requests in parallel.
- Profile URLs are resolved to stable profile IDs before any action.
- Invitations carry an optional note of up to 300 characters.
- Private or restricted profiles return an explicit “not accessible” result instead of a retry loop.
All LinkedIn guides
Related guides
Give Nilyo to your agent.
Paste one setup link. Your agent can guide OAuth, account connection and the first useful action.