LinkedIn for
agentic operations.
One access token, four interfaces: API, CLI, MCP, SDK.
Build AI agents that automate LinkedIn operations at scale with a clean, documented interface and event webhooks.
Live in your AI in under a minute.
Connect Curviate as an MCP server with one URL. Three clicks in your chat app or a single command in your terminal, and your agent can run LinkedIn natively.
https://app.curviate.com/mcpBuilt for the agentic era.
Everything your AI agent needs to operate on LinkedIn, without scripts, scrapers, or scraping headaches. We manage the substrate, you keep your data.
Four interfaces
Integrate seamlessly via REST API, CLI, MCP server, or TypeScript SDK. One token connects your entire stack, from n8n to custom setups.
Event webhooks
Track LinkedIn events from accepted connections to account restrictions. Secure, signed payloads with guaranteed automatic retries: messaging events near-real-time, connection events on a poll delay.
EU data residency
100% EU-based processing and storage. Your credentials remain encrypted at rest. Zero logging. Zero AI model training.
LinkedIn products
Unlock Core, Sales Navigator, or Recruiter as needed. Pay per seat with absolute flexibility. No lengthy enterprise contracts, no complex procurement.
Developer experience
Accelerate integration with OpenAPI specs, structured errors, real-time response quotas, and meticulously maintained documentation.
Built for volume
Run hundreds of concurrent, agent-operated accounts. Generous limits, a horizontally scaling stateless API, and fair, usage-friendly pricing.
From query to outreach.
Hands-free.
Curviate powers the day-to-day of sales, sourcing and growth teams using AI to do the work.
Monitor inboxes, respond at the speed of agents
Watch unread threads, read full conversation history, and reply programmatically. A pure Core feature: no Sales Navigator or Recruiter seat required.
- List unread threads with sender, snippet and timestamp
- Fetch entire dialog history for context-aware AI replies
- Reply programmatically: every send returns a structured result
- Real-time webhooks fire on every new message received
"account_id": "acc_a98088bcae", "unread": true, "limit": 50 → 200 OK · 7 unread threads [ { id: "thr_p82a", from: "Jane Doe", snippet: "Yes, would love to chat...", last_at: "2026-03-14T09:21:00Z" }, { id: "thr_k49b", from: "Mark Lee", snippet: "Sending over the deck now.", last_at: "2026-03-14T08:55:00Z" }, ... ]
Find decision-makers at scale
Sales Navigator filters, programmable. Search by role, seniority, geography, headcount or hiring intent, then drop straight into your CRM.
- Advanced filters: title, seniority, function, geo, company size
- De-duplicates against your existing pipeline
- Streams pages: no offset hell, no token shuffling
"account_id": "acc_a98088bcae", "keyword": "founder", "seniority": ["director", "vp", "cxo"], "locations": ["Germany", "Netherlands"], "company_size":["51-200", "201-500"], "limit": 200 → 200 OK · 1,847 matches · page 1/10 cursor: cur_8aLp2xVq_91
Fire-and-react outreach, driven by webhooks
Send connection requests, messages and InMail, then let event webhooks drive the next step. No polling the API, no scraping inbox state. A message.received fires your agent in near-real-time; connection.accepted arrives on a poll delay. Either way, no work on your side.
- Webhooks for
connection.accepted,message.received,message.delivered,connection.new - Signed payloads, retries with exponential back-off (delivery replay is on the roadmap)
- Structured results on every write: your client decides when to retry
await curviate.connections.invite({ accountId: "acc_a98088bcae", toProfileUrl:"https://linkedin.com/in/sam-r", note: "Sam, saw your talk on MCP. Would love to swap notes." }); // You get a webhook the moment Sam reacts: app.post("/curviate-events", (req, res) => { switch (req.body.event) { case "connection.accepted": // → send follow-up case "message.received": // → trigger agent } });
Source candidates without the seat tax
Full Recruiter API surface: search, projects, pipelines, postings. Add Recruiter only on the seats that need it.
- Candidate search with full Recruiter filter set
- Hiring projects, stages and notes, fully programmable
- Job postings, InMail templates, response tracking
$ curviate recruiting candidates search \ --keyword "staff backend engineer" \ --seniority senior,staff,principal \ --skills "rust,distributed systems" \ --open-to-work true \ --limit 100 ✓ 64 candidates · synced to project=proj_4Lz9 ✓ added to stage="screen" (auto)
Profiles, posts, activity: fresh on demand
Fetch any LinkedIn entity by URL. Short-lived cache, never retained beyond that. Hydrate your warehouse without standing up scrapers.
- Full profile bodies, current roles, experience, skills
- Post threads, comments, reactions, view counts
- Activity stream: shares, comments, profile views
import { Curviate } from "@curviate/sdk"; const curviate = new Curviate({ apiKey: process.env.CURVIATE_API_KEY! }); const acc = curviate.account("acc_a98088bcae"); const profile = await acc.profiles.fetch({ url: "https://linkedin.com/in/maria-h", include: ["experience", "skills", "recent_posts"], }); // cache_hit=false · cost=1 unit console.log(profile.headline); // → "Distributed Systems · Currently building agent runtimes"
One seat, one person.
That's it.
Per-seat pricing means you only pay for the LinkedIn accounts you use. Add Core, Sales Navigator, or Recruiter to each seat independently. Scale up, scale down: no contracts, no surprises. Every workspace starts with a 7-day free trial: full access, no card required.
Need Sales Navigator and Recruiter? That's two seats: one per LinkedIn profile.
Your account. Always yours.
We hold the keys to operate; you hold the keys to walk away. Disconnect any time: credentials are hard-deleted on the same request.
Account safety
Native LinkedIn flows and no scraping. Operations are paced to human rhythms with gradual warmup. We slow down when LinkedIn throttles.
Credentials encrypted
Credential and session data encrypted at rest. Keys managed securely and rotated regularly. Never logged, never returned.
EU data residency
All data processed and stored in the EU. GDPR-aligned by default.
Never trained on
Content cached briefly for performance. Never indexed, never used for ML or analytics.
Questions, answered.
If something's missing, ping us at hello@curviate.com.
Yes. Every new workspace starts with a 7-day free trial, no payment method required. You get full access on one connected LinkedIn account: the Core surface plus one premium surface of your choice, Sales Navigator or Recruiter, for the whole week. Add a seat before the trial ends to keep that account connected; if the trial lapses first, the account is disconnected and removed, and you can reconnect it once a seat is in place. See pricing →
The official API is locked behind enterprise contracts, partner programs, and strict review cycles imposed by LinkedIn. It also completely excludes Sales Navigator and Recruiter. Curviate gives you the same programmatic access on a per-seat basis with zero procurement. It is the bridge that allows your AI agents to interact with LinkedIn exactly the way you do.
You pay per LinkedIn account seat. Core is €20 per month. Add Sales Navigator or Recruiter for €25 per month total. Each seat carries at most one premium (LinkedIn allows only one Premium subscription per profile). Need both surfaces? That's two connected LinkedIn profiles: two seats, €25 each. Annual billing saves you 20%. You can cancel individual seats at any time and they will remain active until the end of your current billing cycle. If standard pricing stops fitting (for any reason), that's what Scale is for. Custom terms and a fast lane to the product, shaped around how you work. Reach out any time.
Yes. Curviate uses native LinkedIn flows instead of scraping or browser automation. Operations are paced to match human rhythms, and new accounts go through a gradual warmup period. Credentials are encrypted at rest using AES-256, keys are securely managed, and everything is rotated regularly. Disconnecting a seat triggers an immediate hard delete of your credentials. We never log them and never use them for AI training. Read the full safety doc →
Model Context Protocol is the standard for letting AI agents call external tools. Our MCP server exposes every Curviate capability directly to major AI applications like Claude, ChatGPT, Cursor, Claude Code, and Codex. There is no wrapper code needed. You just drop it in once and your agent can use LinkedIn like a native tool.
We don't retain your LinkedIn content. Requests are processed in real time and passed directly to your systems; content may be cached briefly for performance, but it is never indexed and never used for ML or analytics. Audit metadata (which tool ran and its outcome, not the content itself) is retained briefly for debugging, then deleted. All server infrastructure is located in the EU.
Yes. You can cancel individual seats at any time without penalty. There are no long-term commitments on monthly plans. Annual plans simply run until their renewal date without any early termination fees.
Yes. Webhooks are a first-class feature. Curviate fires HMAC-signed events for critical actions like message.received, connection.accepted, and account.reconnect_needed. You can point these events to your own backend, a workflow tool like n8n, or a serverless function. Curviate is designed to be a foundation layer. Your product owns the logic and the UI while we handle the LinkedIn surface.