One URL in. Clean JSON out.
Give this endpoint a LinkedIn company page URL or its handle and it returns that company's recent public posts as a JSON array — post text, reaction and comment counts, reposts, and the publish timestamp. Billing is per post returned, at 5 credits each, so a 20-post pull costs 100 credits. No LinkedIn app review, no OAuth, no logged-in session.
The difference
On the left, what a headless browser hands you. On the right, what the endpoint hands you.
<div class="feed-shared-update-v2 artdeco-card" data-urn="urn:li:activity:7181111111111111111"><div class="update-components-text relative"><span dir="ltr">We just cut p95 latency in half by moving the cache closer to the edge.</span></div><div class="social-details-social-counts"><li class="social-details-social-counts__item"><span aria-label="842 reactions">842</span></li><li class="social-details-social-counts__comments">63 comments</li><li>41 reposts</li></div><time class="update-components-actor__sub-description">4d</time><code style="display:none">{"data":{"*elements":["urn:li:fsd_update:(urn:li:activity... {"data": [{"id": "7181111111111111111","url": "https://www.linkedin.com/posts/linkedin_hiring-activity-7181111111111111111","text": "We are hiring across engineering and support.","posted_at": "2026-07-04T11:00:00Z","metrics": {"reactions": 842,"comments": 63,"reposts": 41}}],"meta": {"count": 2,"limit": 20,"item": "post"},"request_id": "req_01JZX4M8Q2TE9W"}
The payload
An array of post objects, newest first, exactly as the company page shows them to a logged-out visitor. Each object carries the post body, the three public engagement counters, when it went up, and an author block. It is the shape you want for a competitor content log: append it to a table, key on the post id, and you have a running record of what a company published and how it landed.
The author block matters more here than you might expect. Company pages surface posts published by the organisation itself, but reshares and employee-attributed content can appear in the same feed, so `author.name` is not always the company. Read it rather than assuming.
Set `limit` to control how many posts come back; the default is 20. Because the price is per post, `limit` is your cost dial — halve it and you halve the bill for that call.
Comment count only. Pull the comment bodies with the LinkedIn Comments API.
Pricing
Each post returned is 5 credits — about 2.5¢ on the monthly plan. Billing is per post, so a default 20-post pull runs 50¢, and an empty result still costs 1 credit.
Estimate only, on a full-year basis. 5 credits per returned post. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.
Entry price, side by side
Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.
Engineering notes
We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.
Every post in the response costs 5 credits. Leave `limit` at its default of 20 and the call is 100 credits; ask for 100 posts and it is 500. If you are polling for new content on a schedule, a small limit is almost always the right call — you only need enough overlap to be sure you did not miss anything between runs.
If the page has fewer posts than you asked for, you are charged for what actually comes back, not for the limit you requested.
This is a top-of-feed read, not a paginated archive walk. A larger `limit` reaches further back, but there is no offset or page token to resume from, and very old posts on an active page may be out of reach at any limit. For long-run history, start polling now and accumulate rather than trying to backfill in one shot.
Company feeds mix in reshared content and posts attributed to individuals. If your analysis assumes every row is first-party corporate output, filter on `author.handle` before you aggregate. Both keys inside `author` can be null on items where the feed omits attribution.
LinkedIn rounds public counters on high-engagement posts and shows a single reaction total rather than a per-type breakdown. Treat `likes` as an order-of-magnitude signal on big posts and an exact figure on small ones. `shares` is the least reliable of the three and is often absent entirely.
Repeat calls for the same company inside the cache window return the stored array in milliseconds and set x-cache: hit. A cache hit is billed the same as a fresh pull, since the credits are priced per post returned either way. Pass fresh=true to force a re-read when you know a company just published.
Questions
Send a GET to /v1/linkedin/company-posts with the company page URL or handle and your API key. LinkedIn's official Pages API only works for pages you administer and requires an approved app, which rules it out for competitor research. This endpoint reads the same public page a logged-out browser sees and returns the posts as JSON.
5 credits per post, so 50 posts is 250 credits. Credits are $0.005 each on monthly billing and $0.0045 on annual, putting a 50-post pull at roughly $1.25 or $1.13. You are charged for posts actually returned, so a page with only 12 posts costs 60 credits even if you asked for 50. Failed calls are not charged.
Yes. Both work. Send the handle from the page URL — the part after /company/ — or the full https://www.linkedin.com/company/handle link. The endpoint resolves either to the same page. Handles are what you usually have in a CRM export, so passing them directly saves a string-building step.
As far as the `limit` you set reaches on that page's public feed, newest first. There is no cursor or offset, so you cannot resume a deep crawl across calls, and a company that posts daily will have older content beyond practical reach. If you need years of history, poll on a schedule from today and build the archive yourself.
No. LinkedIn shows celebrate, insightful, support and the rest separately in its own UI, but the public page data collapses them into one total, and that total is what `likes` holds. If per-type reaction counts are essential to your analysis, no public-page endpoint can supply them and you would need the official API on a page you administer.
No. This endpoint targets company pages specifically. For an individual's profile data, use the LinkedIn Profile API. If you want posts from a person and only have their name or role, the LinkedIn People Search API is the place to start, and individual posts you find can be measured with the LinkedIn Post Stats API.
No. We read public content only, logged out. A page that requires a session, has been removed, or is region-restricted returns an error rather than a partial array, and the call is not billed. There is no login involved anywhere in this endpoint, by design.
Next
100 trial credits on signup — no card, key on screen immediately.