Insight Social
GET /v1/linkedin/search/posts

LinkedIn Search Posts API

Returns public LinkedIn posts and Pulse articles matching a keyword, with each result's text, author, media, like and comment counts, and date.

10–480 credits, metered · cursor pagination · failed calls free · 10 free calls to start

curl "https://api.insightsocial.app/v1/linkedin/search/posts?query=ai+agents" \
-H "x-api-key: $INSIGHTSOCIAL_API_KEY"
200 OKJSON
{
"success": true,
"platform": "linkedin",
"endpoint": "/v1/linkedin/search/posts",
"schema_version": "2",
"data": {
"items": [
{
"post": {
"id": "<string>",
"url": "<string | null>",
"kind": "<string | null>",
"content": {
"text": "<string | null>",
"media_urls": "<array | null>",
"thumbnail_url": "<string | null>",
"duration_seconds": "<number | null>"
},
"author": {
"id": "<string | null>",
"username": "<string | null>",
"display_name": "<string | null>",
"avatar_url": "<string | null>",
"verified": "<boolean | null>"
},
"engagement": {
"views": "<integer | null>",
"likes": "<integer | null>",
"comments": "<integer | null>",
"shares": "<integer | null>",
"saves": "<integer | null>"
},
"flags": {
"nsfw": "<boolean | null>",
"spoiler": "<boolean | null>",
"pinned": "<boolean | null>",
"deleted": "<boolean>",
"likes_hidden": "<boolean | null>",
"comments_hidden": "<boolean | null>",
"shares_hidden": "<boolean | null>",
"views_hidden": "<boolean | null>",
"saves_hidden": "<boolean | null>"
},
"published_at": "<string | null>",
"language": "<string | null>",
"ext": "<object | null>"
}
}
]
},
"pagination": {
"next_cursor": "<string | null>",
"has_more": "<boolean>"
},
"unavailable": [],
"credits_used": "<integer>"
}

When to use it

Use it for broad keyword monitoring; it reads public search results, so treat coverage as best effort rather than complete.

Parameters

Query parameters for GET /v1/linkedin/search/posts. Send your key in the x-api-key header.

NameRequiredDescription
queryOne of query, from_member, from_companyKeyword or phrase to search for. Optional when from_member or from_company is set: omit it to get that subject's posts unfiltered, and note that supplying a real content word narrows the results to posts matching it.
from_memberOne of from_member, query, from_companyFilter to posts from one member, by their LinkedIn member urn — the bare ACoAA… value published as author.ext.urn by /v1/linkedin/profile. A profile URL, a public slug (williamhgates) or a urn:li:fsd_profile:-prefixed value is rejected, because the source cannot use any of them. Pass this on its own, with no query, to walk one member's back catalogue.
from_companyOne of from_company, query, from_memberFilter to posts from a company, by numeric LinkedIn company id (for example 1035). A company slug or URL is rejected; read the id from author.id on /v1/linkedin/company.
pageNo1-based page number of Google results. Defaults to 1.
sort_byNoResult ordering: relevance (default) or date_posted. On a subject-only call (from_member or from_company with no query) the results are ordered by date and relevance is rejected, because there is no query for them to be relevant to.
date_postedNoDate filter based on Google-indexed results. One of past_24h, past_week, past_month (underscores, not hyphens). Note the JOB lanes use past_24_hours for the same concept; the two vocabularies are not interchangeable.
content_typeNoNarrow to one kind of post.
limitNoReturn up to this many posts in one call, 1 to 200. Repeating the identical call inside the 2-minute cache window is free. Requires query. Cannot be combined with page or cursor: the result always starts at the top and pagination.next_cursor is null. pagination.has_more says whether more posts were available when the call stopped, and walk.stopped says why it stopped (limit, exhausted, deadline or sources_unavailable).
cursorNoThe pagination.next_cursor from the previous page, sent back unchanged. Omit it for the first page.

Response fields

The same unified schema every platform returns, so code written for LinkedIn works on the other eight. A field the platform did not provide is null and listed in unavailable.

FieldTypeNotes
idstringAn identifier, always a string. Never parse it as a number: several platforms use ids above 2^53.
urlstring | null
kindstring | nullThe format of the post. Format words only, never a platform name. short = short-form vertical video (a reel, a TikTok, a YouTube Short).
content.textstring | null
content.media_urlsarray | null
content.thumbnail_urlstring | null
content.duration_secondsnumber | null
author.idstring | null
author.usernamestring | null
author.display_namestring | null
author.avatar_urlstring | null
author.verifiedboolean | null
engagement.viewsinteger | nullA count. null when the platform does not expose it; 0 only when it is really zero.
engagement.likesinteger | nullA count. null when the platform does not expose it; 0 only when it is really zero.
engagement.commentsinteger | nullA count. null when the platform does not expose it; 0 only when it is really zero.
engagement.sharesinteger | nullA count. null when the platform does not expose it; 0 only when it is really zero.
engagement.savesinteger | nullA count. null when the platform does not expose it; 0 only when it is really zero.
flags.nsfwboolean | null
flags.spoilerboolean | null
flags.pinnedboolean | null
flags.deletedboolean
flags.likes_hiddenboolean | null
flags.comments_hiddenboolean | null
flags.shares_hiddenboolean | null
flags.views_hiddenboolean | null
flags.saves_hiddenboolean | null
published_atstring | nullISO-8601 timestamp in UTC, ending in Z.
languagestring | nullThe content's language as the platform states it, e.g. en, pt-BR. Detected languages come later (§7.1).
extobject | nullPlatform-specific fields, snake_case.

Every field, error and example is in the LinkedIn Search Posts API reference.

How much does the LinkedIn Search Posts API cost?

Metered: 10–480 credits a call. The ceiling is reserved when the call starts and you are charged what it actually read.

  • Failed calls are free

    A call that errors or finds nothing costs 0 credits.

  • Know the price first

    Add dry_run=1 and the response quotes the call without making it. Nothing is charged.

  • One balance

    API calls and Chrome extension exports share the same credits, on the free plan too.

LinkedIn Search Posts API: frequently asked questions

Send GET /v1/linkedin/search/posts with either query or from_member or from_company and your key in the x-api-key header. Returns public LinkedIn posts and Pulse articles matching a keyword, with each result's text, author, media, like and comment counts, and date.