LinkedIn · Search

Posts

Search posts by keyword. Costs 4 credits per returned post, the same as profile posts. Empty results are free.

01

Request

POST /api/linkedin/search/posts with query, optional filters, and an optional pagination_token.

▸ ▾ request {}
{
  "query": "AI AND recruitment",
  "filters": {
    "sort_by": "date_posted",
    "date_posted": "past-week",
    "content_type": "videos"
  },
  "spell_check_enabled": false
}
querySearch text, including quoted phrases and Boolean operators, passed as entered. Up to 2,048 bytes.
spell_check_enabledDefaults to true. Set false to keep spelling literal.
pagination_tokenOmit initially. Return data.pagination.pagination_token unchanged with the same query, filters and spell-check setting.

The first page asks for ten posts. LinkedIn may return fewer. A short page can still have a continuation; stop when has_next_page is false.

02

Filters

Put these fields inside filters. Omit any you do not need.

sort_byrelevance or date_posted.
date_postedpast-24h, past-week or past-month.
content_typephotos, videos, liveVideos, documents or jobs.
posted_byArray containing first, following or me. Relationships refer to the LinkedIn account used for the search.
from_memberArray of native LinkedIn member filter values.
from_organizationArray of native LinkedIn organization filter values.
mentions_memberArray of native member values for mentions.
mentions_organizationArray of native organization values for mentions.
author_companyArray of native company filter values for authors.
author_industryArray of native industry filter values for authors.
author_job_titleArray of native job-title filter values for authors.

Array filters accept up to 50 nonempty strings, each up to 512 bytes. Use the values from LinkedIn’s search filters; public URLs and names are not resolved automatically.

03

Response sample

▸ ▾ response {} — one real post; metadata and media shortened
{
  "cost": 4,
  "data": {
    "query": "hello and won",
    "posts": [
      {
        "id": "7509748714438172672",
        "urn": "urn:li:activity:7509748714438172672",
        "url": "https://www.linkedin.com/feed/update/urn:li:activity:7509748714438172672/",
        "author": {
          "name": "Western Force",
          "type": "company",
          "url": "https://www.linkedin.com/company/westernforce/",
          "verified": true
        },
        "text": "Win, and the Grand Final comes WEST. 🏆\n\nLet’s get it done 💪\n\n#StrongerTogether #WeAreTheWest",
        "posted_at_text": "1w •",
        "visibility": "Global",
        "images": [
          {
            "url": "https://media.licdn.com/dms/image/v2/D4E10AQEVrHkcr7NbSQ/image-shrink_1280/B4EaDf8qEkHcAc-/0/1790463615603?e=1791748800&v=beta&t=avo8UmBoXMt79hQ3uI8QVlEk-sAArGvPdovOlulUy-c",
            "width": 1080,
            "height": 1350,
            "alt_text": "View image"
          }
        ],
        "engagement": {
          "reaction_count": 17,
          "comment_count": 1,
          "repost_count": 0
        }
      }
    ],
    "pagination": {
      "has_next_page": true,
      "pagination_token": "<opaque token from the response>"
    }
  }
}

04

Fields

The response includes cost, created_at, request_duration and parse_duration alongside data. Cost is 4 times the number of returned posts. An unaffordable page returns no results and no charge.

data {}

querytextThe search query.
filtersobjectSelected filters; unset single-value fields are null and unset arrays are empty.
▸ ▾ postsobject[]Deduplicated search result cards.
idtextActivity identifier, kept as a string.
urntextActivity URN supplied with the result.
content_urntextSupplied content URN used by the engagement counts. It may be a different ugcPost identifier.
urltextActivity URL.
permalinktextSupplied public post link, when available.
authorobjectName, URL, type, available headline, photo and verified badge.
texttextPost text with line breaks, links, mentions and emoji.
posted_at_texttextLinkedIn’s displayed relative date; no exact date is invented.
visibilitytextSupplied visibility label.
is_sponsoredbooleanSupplied sponsorship flag.
imagesobject[]Largest image URL, dimensions, alt text, asset URN and supplied renditions.
videosobject[]Duration in seconds, thumbnail, stream URLs and MIME types, captions and live status.
documentobjectAvailable title, page count, PDF download URL, manifest URL and page previews.
articleobjectAvailable article title, description, URL and image.
annotationsobject[]Supplied linked text, URL, label and action type, including hashtags and mentions.
engagementobjectAvailable reaction, comment and repost counts, with reaction types and their native counts.
paginationobjecthas_next_page and the opaque pagination_token, or null at the end.

Fields missing from LinkedIn are omitted or null. Media links may expire. Document preview URLs can cover fewer pages than page_count. Search results can contain previews rather than every field available on a post’s own page.