---
title: "LinkedIn post analytics"
method: GET
path: "/analytics/linkedin/{profileId}/posts"
tags: ["Analytics"]
---

# LinkedIn post analytics

`GET /analytics/linkedin/{profileId}/posts`

Retrieve post analytics for a LinkedIn profile within a date range. When a post was published from Ordinal, the response includes an ordinalPost object with the linked post's id, title, labels, and campaign. For personal profiles, the response also includes saveCount (times the post was saved) and sendCount (times the post was sent via DM). Posts with type `Video` also include videoViewCount, videoViewerCount, and videoWatchTimeSeconds; these fields are null for non-video posts and for video posts that have not yet been synced.

## Path parameters

- `profileId` string, uuid, required

## Query parameters

- `startDate` string, date
- `endDate` string, date

## Response `200`

LinkedIn post analytics

- LinkedInPostAnalytics[]
  - `id` string, uuid, required
  - `url` string, uri, required — LinkedIn post URL
  - `commentary` string, nullable
  - `type` 'Text' | 'Article' | 'Image' | 'Video' | 'Poll' | 'Celebration' | 'Job' | 'Event' | 'Document' | 'Repost' | 'QuotePost' | 'MultiImage', required — The type of LinkedIn post
  - `publishedAt` string, date-time, nullable
  - `likeCount` integer, nullable
  - `commentCount` integer, nullable
  - `shareCount` integer, nullable
  - `clickCount` integer, nullable
  - `saveCount` integer, nullable — Times the post was saved to view later. Available for personal LinkedIn profiles only.
  - `sendCount` integer, nullable — Times the post was sent via direct message. Available for personal LinkedIn profiles only.
  - `impressionCount` integer, nullable
  - `engagement` number, nullable — Engagement rate (total engagements / impressions), typically between 0 and 1
  - `emv` number, nullable — Earned Media Value calculated as (impressionCount / 1000) * CPM
  - `videoViewCount` integer, nullable — Total views on a video post. Only populated for posts with type `Video`; null for non-video posts and video posts that have not yet been synced.
  - `videoViewerCount` integer, nullable — Unique viewers of a video post. Only populated for posts with type `Video`; null for non-video posts and video posts that have not yet been synced.
  - `videoWatchTimeSeconds` integer, nullable — Total watch time across all viewers, in whole seconds. Only populated for posts with type `Video`; null for non-video posts and video posts that have not yet been synced.
  - `ordinalPost` OrdinalPostReference — Reference to the Ordinal post linked to an external social post
    - `id` string, uuid, required — Ordinal post ID
    - `title` string, required — Ordinal post title
    - `labels` object[], required
      - `name` string, required — Label name
      - `labelId` string, uuid, required — Label ID
    - `campaign` object, nullable
      - `id` string, uuid
      - `name` string

## Other responses

- `401` — Unauthorized - Missing or invalid API key
- `403` — Forbidden - Insufficient permissions
- `404` — Not Found - Resource does not exist

---

[API](https://skmtc.dev/tryordinal/apis/ordinal-api.md) · [All operations](https://skmtc.dev/tryordinal/apis/ordinal-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tryordinal/ordinal-api/revisions/1d0792ff454f/schema)
