Skip to main content
GET
Get posts published by a company page

Endpoint

Authentication

Include your API key in the request header:

Parameters

string
required
The company / organization whose posts to fetch. Accepts any of:
  • Company page URL. Example: https://www.linkedin.com/company/microsoft (a trailing slash makes no difference)
  • Public identifier (slug), also fine. Example: microsoft
  • Organization URN. Example: urn:li:fsd_organizationalPage:1035
The slug is the last path segment of a company page URL (/company/<slug>). Either form works — the bare slug or the company/<slug> fragment.Member profile inputs (a /in/<slug> URL or a urn:li:fsd_profile:…) are rejected with a 400 INVALID_PARAMETER — “Expected a company page, not a member profile.” — free of charge. Use Get Posts for people.
string
Accepted as an alternative name for the same value, because Get Posts has always taken company pages under it. Pass either name — when both are given, companyUrlOrUrn wins.
integer
default:"10"
Number of posts to fetch per page.
  • Minimum: 1 — 0 or a negative value is rejected with 400
  • Maximum: 100 — a higher value is clamped, not rejected
  • Default: 10
integer
default:"0"
deprecated
Not supported on this endpoint. This feed is cursor-paginated and ignores offsets, so a non-zero start is rejected with 400 rather than silently returning the first page again. Use paginationToken.
string
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.

Response

array
Posts published by the company page, newest first. Each item has the same shape as items from GET /api/v1/posts — see Get Posts for the full field list (id, shareUrn, content, date, reactionCount, commentCount, sharesCount, reactionsByType, images, video, shareUrl, permissions, …), so you can reuse the same types in your client code.The fields that matter most on a company feed:
string
Cursor to pass back as paginationToken to fetch the next page. Do not read its presence as “there is more”: decide on hasMore, which is the only end-of-feed signal on this endpoint.
boolean
Whether the feed holds more posts behind this page. Keep paging while it is true — see Pagination.
integer
How many rows the feed returned for this page before any filtering — both the reposts the page carries without the organization’s own commentary and any row that is not a post. Compare it with posts.length to tell the two quiet cases apart: a small pageSize means the feed itself ran short, while a full pageSize with few posts means this page was mostly filtered rows and it is worth asking for the next one.

Example Request

Example Response

Posts come back in a page object, not a bare array.

Errors

See Error Handling for the full list of error codes and recommended handling.
  • 400 MISSING_PARAMETER / INVALID_PARAMETER / INVALID_URN
  • 401 INVALID_API_KEY
  • 404 COMPANY_NOT_FOUND
  • 402 QUOTA_EXHAUSTED
  • 429 RATE_LIMITED
  • 500 INTERNAL_ERROR
  • 503 SERVICE_UNAVAILABLE

Pagination

To walk a company’s whole feed:
  1. Make an initial request without paginationToken
  2. If hasMore is true, pass the returned paginationToken into your next request, unchanged
  3. Continue until hasMore is false

Notes

This endpoint consumes 1 credit from your credit balance per API call, regardless of the count parameter value. Errors are free — with one exception: a 404 not found costs 1 credit. See Quotas.
Posts are returned newest first. count is a ceiling, not a promise: the feed also carries reposts, which are filtered out of posts, so a page can hold fewer posts than you asked for while more still remain. A short page is not the end of the feed — keep paging while hasMore is true.
Each item has the same shape as items from Get Posts, so one set of types and one parser covers both a person’s feed and a company’s.

Use Cases

Competitor monitoring

Track what the accounts you compete with publish, and how their audience responds

Account signals

Spot hiring pushes, launches and funding news on a target account’s own page

Content benchmarking

Compare reaction and comment counts across company feeds in your market

Brand archive

Keep a dated record of everything an organization published, media included

Authorizations

X-API-Key
string
header
required

Query Parameters

companyUrlOrUrn
string
required

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.

Example:

"microsoft"

profileUrlOrUrn
string

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.

Example:

"https://www.linkedin.com/company/microsoft"

count
integer
default:10

Number of posts to fetch per page (default: 10). A higher value is clamped to 100.

Required range: 1 <= x <= 100
start
integer
default:0

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.

Required range: x >= 0
paginationToken
string

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.

Response

Successfully fetched the company page's posts

posts
object[]

Posts on this page, newest first. Same item shape as GET /api/v1/posts. Reposts are filtered out, so a page can hold fewer items than count while more remain - trust hasMore.

paginationToken
string | null

Cursor to pass back as paginationToken to fetch the next page. Only present when more posts are available.

Example:

"dXJuOmxpOmFjdGl2aXR5Ojc0ODUxMDk4ODc2NTQzMjE2NjQ="

hasMore
boolean

Whether the feed holds more posts behind this page. Keep paging while true.

pageSize
integer

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:

5