InsightSocial API
LinkedIn

LinkedIn Search Posts API reference

Your first 10 calls are free, no card needed. Pricing and FAQ

Get a free API key
Example request
curl "https://api.insightsocial.app/v1/linkedin/search/posts?query=ai%20agents" \
  -H "x-api-key: $INSIGHTSOCIAL_API_KEY"
GET
/v1/linkedin/search/posts

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

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

Metered: 10–480 credits. We reserve the ceiling when the call starts and charge what it actually used when it finishes.

Paginates by cursor: see Pagination.

x-api-key<token>

Your key from the dashboard. It starts with isk_.

In: header

Query Parameters

query?string

Keyword 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. Provide at least one of: query, from_member, from_company.

from_member?string

Filter 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. Provide at least one of: query, from_member, from_company.

from_company?string

Filter 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. Provide at least one of: query, from_member, from_company.

page?integer

1-based page number of Google results. Defaults to 1.

Range1 <= value
sort_by?string

Result 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.

Value in

  • "date_posted"
  • "relevance"
date_posted?string

Date 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.

Value in

  • "past_24h"
  • "past_week"
  • "past_month"
content_type?string

Narrow to one kind of post.

Value in

  • "videos"
  • "photos"
  • "jobs"
  • "live_videos"
  • "documents"
  • "collaborative_articles"
limit?integer

Return 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).

Range1 <= value <= 200
dry_run?"1"

Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.

Value in

  • "1"
cursor?string

The pagination.next_cursor from the previous page, sent back unchanged. Omit it for the first page.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://api.insightsocial.app/v1/linkedin/search/posts"
{  "success": true,  "platform": "string",  "endpoint": "string",  "schema_version": "2",  "pagination": {    "next_cursor": "string",    "has_more": true,    "page_size": 0,    "stopped_at": "since"  },  "unavailable": [    "string"  ],  "credits_used": 0,  "credits_remaining": 0,  "request_id": "string",  "cached": true,  "idempotent_replay": true,  "charge_reason": "string",  "free_call": true,  "data": {    "items": [      {        "post": {          "id": "string",          "url": "http://example.com",          "kind": "string",          "content": {            "text": "string",            "media_urls": [              "http://example.com"            ],            "thumbnail_url": "http://example.com",            "duration_seconds": 0          },          "author": {            "id": "string",            "username": "string",            "display_name": "string",            "avatar_url": "http://example.com",            "verified": true          },          "engagement": {            "views": 0,            "likes": 0,            "comments": 0,            "shares": 0,            "saves": 0          },          "flags": {            "nsfw": true,            "spoiler": true,            "pinned": true,            "deleted": true,            "likes_hidden": true,            "comments_hidden": true,            "shares_hidden": true,            "views_hidden": true,            "saves_hidden": true          },          "published_at": "2019-08-24T14:15:22Z",          "language": "string",          "ext": {            "property1": null,            "property2": null          }        }      }    ],    "total": 0,    "truncated": true,    "ext": {      "property1": null,      "property2": null    }  }}