Get posts published by a company page

Fetch the posts published by a company / organization page, with engagement metrics. Each item in posts has the same shape as items returned by GET /api/v1/posts, so the same client types cover both feeds. By default (sortBy=top) the posts come in the source's own ranking, not by date; sortBy=recent returns them newest first. Costs 1 credit per call, whatever count is.

get/api/v1/company/posts

Request

  • Base URL: https://api.fetchin.io
  • URL: https://api.fetchin.io/api/v1/company/posts
  • Auth: API key in header X-API-Key

Query parameters

companyUrlOrUrnstring required
Example:microsoft

The company / organization whose posts to fetch. Accepts a company page URL (example https://www.linkedin.com/company/microsoft; a trailing slash is ignored), a public identifier/slug on its own (also fine; example microsoft), or an organization URN (example urn:li:fsd_organizationalPage:1035). The slug is the last path segment of a company page URL, so pass just the slug, not the /company/ prefix. A member profile input (a /in/<slug> URL or a urn:li:fsd_profile:...) is rejected with a free 400 INVALID_PARAMETER - "Expected a company page, not a member profile." - use GET /api/v1/posts for people.

profileUrlOrUrnstring
Example:https://www.linkedin.com/company/microsoft

Accepted as an alternative name for companyUrlOrUrn, because GET /api/v1/posts has always taken company pages under it. Pass either name; when both are given, companyUrlOrUrn wins.

countinteger

Number of posts to fetch per page (default: 10). A higher value is clamped to 100, or to 50 with sortBy=recent.

startinteger

Not supported on this endpoint. This feed is cursor-paginated and ignores offsets, so a non-zero value is rejected with 400 rather than silently returning the first page again. Page with paginationToken instead.

paginationTokenstring

Cursor for the next page: pass back the paginationToken from the previous response, unchanged. Omit it to start from the beginning. A value this API did not issue is rejected with 400. Keep paging while hasMore is true. The token carries the source's ranking session and stays valid for about one hour; an expired token still returns a page, but it may overlap the pages you already have, so de-duplicate on id. With sortBy=recent the token belongs to that order and that company: a token of the other order, or for another company, is a free 400.

includeRepostsboolean

Also return the reposts WITHOUT commentary, which are otherwise filtered out. Each one comes back as the repost itself: postType: "repost", id = the repost's own activity URN, date = when it was reposted, content = "", no counts of its own (reactionCount, commentCount, sharesCount, reactionsByType omitted), the reposting profile or page as author and profile, repostedBy, and the original post nested under resharedPost with its own counts - the same shape a quote repost has. Collaborative posts are also returned when this is on. Accepts true/false (or 1/0); any other value is a free 400. The price does not change.

sortBy'top' | 'recent'

Order of the posts. top (default) is the source's own ranking, which is not chronological. recent returns the page's own posts newest first, including the ones it addressed to an audience in another language or region; reposts without commentary are not part of this order, so includeReposts=true with sortBy=recent is a free 400. With recent, each page is ordered on the exact publication time, but the source orders to the minute, so posts published within the same minute can straddle two pages: de-duplicate on id. A walk ends after a few hundred posts. Any other value is a free 400.

Response

Successfully fetched the company page's posts

paginationTokenstring nullable

Cursor to pass back as paginationToken to fetch the next page. Valid for about one hour. Decide on hasMore, not on the presence of this value.

hasMoreboolean

Whether the feed holds more posts behind this page. Keep paging while true; false at the end of the feed.

pageSizeinteger

How many rows the feed returned for this page before reposts were filtered out of posts. Compare it with the length of posts to tell a feed that ran short from a page that happened to be mostly reposts.

Example response

{
  "posts": [
    {
      "id": "urn:li:activity:7488411205392719872",
      "shareUrn": "urn:li:ugcPost:7488411204611784704",
      "content": "Agents are changing how teams build...",
      "profile": {
        "urn": "urn:li:fsd_organizationalPage:1035",
        "name": "Microsoft",
        "headline": "29,282,565 followers",
        "url": "https://www.linkedin.com/company/microsoft/",
        "imageUrl": "https://media.licdn.com/dms/image/..."
      },
      "postType": "image",
      "shareUrl": "https://www.linkedin.com/posts/microsoft_agents-are-changing-...",
      "reactionsByType": {
        "like": 2744,
        "praise": 219,
        "interest": 141,
        "empathy": 78
      },
      "images": [
        {
          "url": "https://media.licdn.com/dms/image/...",
          "width": 1920,
          "height": 1080
        }
      ],
      "video": {
        "url": "https://dms.licdn.com/playlist/vid/...",
        "duration": 74000
      },
      "authorType": "Company",
      "permissions": {
        "allowedCommentersScope": "ALL",
        "shareAudience": "PUBLIC"
      },
      "author": {
        "followerCount": 29282565
      },
      "job": {
        "id": "4012345678",
        "url": "https://www.linkedin.com/jobs/view/4012345678/",
        "title": "Senior Product Manager",
        "companyName": "Microsoft",
        "companyId": "1035",
        "companyUrl": "https://www.linkedin.com/company/microsoft/",
        "location": "Redmond, WA"
      },
      "event": {
        "dateText": "Sun, Sep 6, 5:30 AM - 6:30 AM UTC"
      }
    }
  ],
  "paginationToken": "dXJuOmxpOmFjdGl2aXR5Ojc0ODUxMDk4ODc2NTQzMjE2NjQ=",
  "pageSize": 5
}

Changes

No recorded changes to this operation across all 1 revision of this API.