How to run a LinkedIn search posts
GET request to /v1/linkedin/search-posts with your input. You get clean JSON back in seconds for ~16 credits (0.8/result) per call — no OAuth, scraping or platform SDKs. Keyword search of public LinkedIn posts — offset cursor, ceiling 50.How to run a LinkedIn search posts (step by step)
- 1
Get a free API key
Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.
- 2
Call the LinkedIn Search Posts API
Send an authenticated GET request to /v1/linkedin/search-posts with your input. No OAuth, no scraping setup.
- 3
Read the JSON response
Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.
Code example
curl "https://api.captapi.com/v1/linkedin/search-posts?q=artificial%20intelligence" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."What the response looks like
{
"success": true,
"data": {
"query": "artificial intelligence",
"sort": "relevance",
"totalReturned": 2,
"posts": [
{
"platform": "linkedin",
"type": "post",
"url": "https://www.linkedin.com/posts/edward-hallett-9aa4406b_ai-is-a-tool-we-need-to-remember-that-activity-7460399963181617152-BX0D",
"text": "AI is a tool. \n\nWe need to remember that because it presents as intelligence. But intelligence is sentient.\n\nThat’s why we call it *artificial* intelligence \n\nIt’s artificial because ai only appears to create meaning. \n\nIn fact, there can be no meaning created by ai. \n\nMeaning only ever persists in the humans who engage with ai. (Meaning is the unique condition of being human). \n\nThink of ai as a ‘magic mirror’ or an ‘echo chamber’. It returns our words and images to us with heightened grandeur and clarity.\n\nI’m grateful for AI. \n\nAi can help with the task of route optimization or translation.\n\nBut it cannot establish whether the destination is worth getting to, or whether the translated text is moving (for that someone needs to be moved). \n\nSo what? \n\nRemembering that this intelligence is artificial helps us delineate what within the province of human productivity cannot for structural reasons be substituted for by ai.\n\nThis is because human beings value intelligence (sentience) in the realm of productivity.\n\nI return to my chosen advisor (broker, therapist, architect) not just bec …",
"publishedAt": "2026-05-13T18:45:58.726Z",
"author": {
"name": "Edward Hallett",
"url": "https://www.linkedin.com/in/edward-hallett-9aa4406b"
},
"engagement": {
"likes": 57,
"comments": 3
},
"id": "7460399963181617152"
},
{
"platform": "linkedin",
"type": "post",
"url": "https://www.linkedin.com/posts/ebender_when-people-ask-me-what-the-phrase-artificial-activity-7480663649716494336-Wnbx",
"text": "When people ask me what the phrase \"artificial intelligence\" means, my short answer is, it means \"venture capitalists, give me some money\".\n\nBut OUP asked me for a longer answer, given here and summarized in the section headings:\n\nhttps://lnkd.in/gb28PW5k\n\nPreprint available from my publications page:\nhttps://lnkd.in/gW-KW9DY",
"publishedAt": "2026-07-08T16:46:38.081Z",
"author": {
"name": "Emily M. Bender",
"url": "https://www.linkedin.com/in/ebender"
},
"engagement": {
"likes": 524,
"comments": 18
},
"id": "7480663649716494336"
}
]
}
}Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| q | string | Yes | Search query or keywords (min 2 characters). |
| sort | string | No | relevance (default, search-engine rank — dates can span years) or date (recency). |
| limit | integer | No | Max items to return (default 20, max 50). Billed per result. |
| cursor | string | No | Pagination cursor. Leave empty for the first page; then pass the nextCursor value returned in the previous response (numeric offset, e.g. 20). A null nextCursor means the end of the list (max 50 posts). |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. |
Frequently asked questions
What does the LinkedIn Search Posts API do?
The LinkedIn Search Posts API lets you search and return matching results from a public LinkedIn query using one GET request to /v1/linkedin/search-posts. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the LinkedIn Search Posts API cost?
At the default limit this endpoint costs 16 credits (0.8 per result). Billing scales with how many results you request. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a LinkedIn API key or OAuth?
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
I only got 4 posts for a huge keyword — is that everything?
Read hasMore + nextCursor. This is Google/DDG site:linkedin.com/posts, not LinkedIn's own index. A null nextCursor with truncatedReason=serp-window means this SERP window is exhausted (max 50), not that LinkedIn has no more posts. listingHits is permalinks found; totalReturned is rows we hydrated.
Why are the dates not newest-first?
Default sort=relevance is the search-engine rank — publishedAt can span years. Pass sort=date for recency.
Where did 57 seconds go?
Read serpMs / hydrateMs / totalMs. SERP is capped at 20s and each permalink hydrate at 8s so a page stays inside typical 60s clients.
One row had likes:null (and no likesIsApproximate) while its comments were fine. Why?
Fixed. Guest post pages arrive in random languages through the proxy pool — a localized render says "9 réactions", which the English text parser missed, so a post with 9 reactions shipped likes:null. Likes and comments are now read from the page's locale-proof DOM counters (data-num-reactions / data-num-comments — the main post's bar comes before every comment's, so the first counter is the post, never a louder comment). And the *IsApproximate keys no longer disappear on a null count: the pair is always keyed, with a null flag next to a null count.
Is the LinkedIn Search Posts API suitable for production use?
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
Ready to run a LinkedIn search posts?
Start free with 100 credits — no credit card required.
Get your free API key