LinkedIn profile posts API
Pull a public LinkedIn person feed by `/in/…` URL and get structured JSON — text, permalink, metrics, media — without scraping the activity timeline yourself.
GET /v1/linkedin/profiles/posts2 credits attempt fee plus 2 credits per returned record. Up to 200 per request (402 credits max). `limit` defaults to 10.
About this endpoint
Thought-leadership monitors and GTM research jobs usually need the person feed after the profile card is already resolved. You have a public `/in/…` URL, you want recent posts with engagement fields, and you need a hard cap on how many rows come back. Fetching that HTML yourself means login walls, checkpoint loops, and activity markup that LinkedIn changes without a changelog.
`GET /v1/linkedin/profiles/posts` takes a required person `url` (full profile link or vanity handle). Optional filters: `startDate` / `endDate` (ISO-8601; for person profile URLs, date filtering applies to LinkedIn articles), `onlyAuthoredPosts` (exclude reshared items when true), and `limit` (default 10, max 200). Branch on `data.lookupStatus` before you write — `found` vs `not_found`. When found, `data.posts` holds the rows and `data.summary.returned` is the count for this response. Each post can include `id`, `url`, `text`, `publishedAt`, `postType`, author fields, `metrics` (likes, comments, reposts), hashtags, images/videos, and related comment or repost blocks when LinkedIn exposes them.
Company `/company/…` URLs are rejected with HTTP 400 on this path — use `GET /v1/linkedin/companies/posts` for company feeds. The person identity card is `GET /v1/linkedin/profiles`. A single post or article permalink is `GET /v1/linkedin/posts`. Keyword discovery is `GET /v1/linkedin/posts/search`. Pricing is a 2-credit attempt fee plus 2 credits per returned post (402 credits max at limit 200). Preflight reserves against your requested `limit`; the bill is the attempt fee plus every post actually returned — trust `meta.creditsCharged`.
LinkedIn profile posts API FAQ
How do I list LinkedIn profile posts via API?
Call `GET /v1/linkedin/profiles/posts` with your Social Fetch API key (`x-api-key`), a required person profile `url` query param, and optional `startDate`, `endDate`, `onlyAuthoredPosts`, and `limit`. Read `data.lookupStatus`, `data.posts`, and `data.summary` in the JSON response. Full parameters are in the API docs.
How much does the LinkedIn profile posts endpoint cost?
2 credits attempt fee plus 2 credits per post returned. `limit` defaults to 10 and caps at 200 (402 credits max). Preflight holds credits for the requested limit; you are charged the attempt fee plus every returned record. Always trust `meta.creditsCharged` on the response over a spreadsheet estimate.
What URL does the LinkedIn profile posts endpoint accept?
Pass a public LinkedIn person profile URL (`/in/…`) or vanity handle. Company page URLs return HTTP 400 — use `GET /v1/linkedin/companies/posts` for those feeds. School and other organization pages belong on the organizations routes, not here.
What fields are in each LinkedIn profile post?
Items can include `id`, public `url`, `text`, `publishedAt`, `title` / `headline`, `postType`, author name/profile URL/title, `metrics` (likes, comments, reposts), hashtags, embedded links, images and videos, top visible comments, and repost details when present. Coverage follows what is publicly visible on that profile.
Profile posts vs company posts vs single post lookup?
Use this route for a person `/in/…` feed. Use `GET /v1/linkedin/companies/posts` for a company page feed. Use `GET /v1/linkedin/posts` when you already have a post or article permalink. Use `GET /v1/linkedin/posts/search` when you have a keyword and need candidate permalinks.
How do date filters and onlyAuthoredPosts work?
`startDate` and `endDate` are optional ISO-8601 bounds; when both are set, `endDate` must be on or after `startDate`. For person profile URLs, date filtering applies to LinkedIn articles. Set `onlyAuthoredPosts=true` to keep posts created by the profile owner and drop reshared items.
What happens when a LinkedIn profile has no public posts?
The call returns a typed `lookupStatus` of `not_found` when nothing usable came back for that listing. Keep `meta.requestId` if you need to retry or escalate that row. This route does not use cursor pagination — raise `limit` (up to 200) or narrow dates when you need a different slice of the feed.
Other LinkedIn endpoints
- ProfilesGET /v1/linkedin/profiles
- People searchGET /v1/linkedin/people/search
- Organization pageGET /v1/linkedin/organizations
- Company pageGET /v1/linkedin/companies
- Company postsGET /v1/linkedin/companies/posts
- Post or articleGET /v1/linkedin/posts
- TranscriptGET /v1/linkedin/posts/transcript
- Post searchGET /v1/linkedin/posts/search