---
title: "Get posts published by a company page"
method: GET
path: "/api/v1/company/posts"
---

# Get posts published by a company page

`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`

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.

## Query parameters

- `companyUrlOrUrn` string, required
- `profileUrlOrUrn` string
- `count` integer
- `start` integer
- `paginationToken` string
- `includeReposts` boolean
- `sortBy` 'top' | 'recent'

## Response `200`

Successfully fetched the company page's posts

- object
  - `posts` object[]: Posts on this page. With the default `sortBy=top` they come in the order the source ranks them, which is NOT chronological: `date` moves both ways within and across pages, so never use a date as a paging boundary in that order. With `sortBy=recent` they come newest first. Same item shape as GET /api/v1/posts. Reposts the page made without its own commentary are filtered out unless `includeReposts=true`, so a page can hold fewer items than `count` - including NONE, while `hasMore` is still true - so read `pageSize` to tell a page of filtered rows from an exhausted feed, and trust `hasMore`.
    - `id` string: Activity URN. References the post in the `urn:li:activity:*` namespace.
    - `shareUrn` string: Share URN. References the same post as `id` but in the `urn:li:share:*` or `urn:li:ugcPost:*` namespace (depends on the post type).
    - `content` string: Post text. An empty string when the post carries no text of its own (media posted without a caption). Always a string, never missing.
    - `date` string, date-time
    - `reactionCount` integer: Omitted on a `repost` item, which has no counts of its own.
    - `commentCount` integer: Omitted on a `repost` item, which has no counts of its own.
    - `sharesCount` integer: Number of times the post was reshared. Omitted on a `repost` item, which has no counts of its own.
    - `imageUrl` string
    - `videoUrl` string
    - `carouselPdfUrl` string
    - `profile` object: The publishing organization. All fields are always present.
      - `urn` string, required
      - `name` string, required: Name of the company page.
      - `headline` string, required: The page's follower line as the feed renders it. The feed carries no tagline: read `tagline` from GET /api/v1/company, or `author.followerCount` for the count as a number.
      - `url` string, required: Company page URL, without a `/posts` suffix.
      - `imageUrl` string, required: Company logo image URL.
    - `postType` 'text' | 'image' | 'document' | 'article' | 'linkedinVideo' | 'job' | 'event' | 'celebration' | 'repost': Kind of content attached to the post. 'article' means a link preview card is attached; long-form articles the member published are NOT returned by this endpoint. 'job', 'event' and 'celebration' are shared cards, detailed in the object of the same name. 'repost' is a repost without commentary, returned only with `includeReposts=true`.
    - `shareUrl` string: Public permalink to the post.
    - `reactionsByType` object: Reaction counts broken down by type. Only the types the post actually received are present, and they sum to `reactionCount`. Keys: `like`, `praise`, `empathy`, `interest`, `appreciation`, `entertainment`, `superLike`. Omitted on a `repost` item, and on a quoted post whose counts the source did not provide.
    - `images` object[]: Every image of the post with its dimensions (empty for non-image posts). `imageUrl` is the first one, kept for backward compatibility.
      - `url` string
      - `width` integer
      - `height` integer
    - `video` object, nullable: Video attached to the post, or null. `videoUrl` mirrors `video.url`.
      - `url` string
      - `duration` integer: Duration in milliseconds.
      - `thumbnail` string, nullable
      - `progressiveStreams` object[]: Available renditions (bitrate/resolution variants).
    - `authorType` 'Company': Always `Company` on this endpoint: the author is an organization page, not a member.
    - `permissions` object: What the post allows, as published.
      - `canReact` boolean
      - `canPostComments` boolean
      - `canShare` boolean
      - `commentingDisabled` boolean
      - `allowedCommentersScope` string
      - `shareAudience` string
      - `isActivity` boolean
      - `rootShare` boolean: False when the post quotes another one.
    - `author` object: The publishing page (`type: "company"`), or on a `repost` item the reposting page; inside `resharedPost`, the original author. Same shape as on GET /api/v1/posts.
      - `type` 'profile' | 'company'
      - `id` string: The profile id (`ACoAA...`) for a person, the numeric company id for a page.
      - `name` string
      - `url` string: Professional profile URL, or the company page URL without a `/posts` suffix.
      - `info` string: The headline for a person, the follower line for a page (e.g. "29,282,565 followers"), as the feed renders it.
      - `followerCount` number: Companies only: the follower count `info` states, as a number.
      - `publicIdentifier` string: Persons only: profile slug.
      - `universalName` string: Companies only: page slug.
      - `numericId` string: Numeric member or company id, when the feed carries it.
      - `avatar` object: Picture or logo, largest rendition.
        - `url` string
        - `width` integer
        - `height` integer
    - `mentions` object[]: The members and companies tagged in the text, one entry each. Empty when there are none.
      - `type` 'person' | 'company', required
      - `id` string, required: The profile id (`ACoAA...`) for a person, the numeric company id for a company.
      - `publicIdentifier` string: Persons only.
      - `firstName` string: Persons only.
      - `lastName` string: Persons only.
      - `universalName` string: Companies only.
      - `name` string, required
      - `url` string, required
    - `contentAttributes` object[]: Annotated ranges of `content`: tags, mentions, hashtags and links. `start` and `length` index into `content`.
      - `start` integer
      - `length` integer
      - `type` string: Kind of range, e.g. `COMPANY_NAME`, `PROFILE_MENTION`, `HASHTAG`, `HYPERLINK`.
      - `hyperlink` string: Where a link range points.
      - `hashtag` string
      - `company` object: The resolved company of a `COMPANY_NAME` range.
        - `id` string
        - `name` string
        - `url` string
      - `profile` object: The resolved member of a `PROFILE_MENTION` range.
        - `id` string
        - `firstName` string
        - `lastName` string
        - `url` string
        - `publicIdentifier` string
    - `job` object: The shared job, on `postType: "job"`. Each field is present when the card carries it.
      - `id` string
      - `url` string
      - `title` string
      - `companyName` string
      - `companyId` string: Numeric company id.
      - `companyUrl` string
      - `location` string
      - `companyLogoUrl` string
    - `event` object: The shared event, on `postType: "event"`. Each field is present when the card carries it. No timestamp is available for the event.
      - `id` string
      - `name` string
      - `dateText` string: The date line exactly as displayed, time zone included.
      - `location` string
      - `url` string
      - `bannerUrl` string
    - `celebration` object: The celebration card, on `postType: "celebration"`. Each field is present when the card carries it.
      - `headline` string
      - `subtitle` string
      - `imageUrl` string
    - `resharedPost` object: The quoted post in full, whenever `resharedPostUrn` is set: the same shape as an item of `posts`. Its `reactionCount`, `commentCount`, `sharesCount`, `reactionsByType` and `reactionTypeCounts` are OMITTED when the source did not provide them - usually the case for a quoted post - never reported as 0.
    - `repostedBy` object: Only on a `postType: "repost"` item: who reposted.
      - `name` string
      - `url` string
      - `publicIdentifier` string: When a person reposted.
      - `universalName` string: When a page reposted.
  - `paginationToken` string, 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.
  - `hasMore` boolean: Whether the feed holds more posts behind this page. Keep paging while true; false at the end of the feed.
  - `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.

## Other responses

- `400`: Bad request - a required parameter is missing or a value is invalid.
- `401`: Unauthorized - the X-API-Key header is missing or invalid.
- `402`: Payment required - you are out of credits (QUOTA_EXHAUSTED): the plan allowance for the current period is spent AND no pay-as-you-go credits are left. Buy pay-as-you-go credits (self-serve, https://fetchin.io/credits), upgrade your plan, or wait for renewal; retrying will not help and no Retry-After is sent. Distinct from the per-second rate limit, which is a 429 (RATE_LIMITED).
- `404`: Not found - the request was served successfully but the requested professional entity does not exist.
- `429`: Too many requests - your per-second rate limit (RATE_LIMITED) was exceeded. Back off and retry, honoring the Retry-After header. (Running out of credits is a separate 402 PaymentRequired / QUOTA_EXHAUSTED, and buying credits never raises this per-second limit.)
- `500`: Internal server error - an unexpected error occurred in our API. Safe to retry; contact support if it persists.
- `503`: Service unavailable - our API is temporarily unable to serve this request (capacity exhausted or overloaded). This is on our side, not yours and not an upstream service outage. Retry with backoff, honoring the Retry-After header.

---

[API](https://skmtc.dev/fetchin/apis/fetchin-api.md) - [All operations](https://skmtc.dev/fetchin/apis/fetchin-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fetchin/apis/fetchin-api/revisions/19a0b5d0320f?raw)
