App Logo
linkedin.com

Get LinkedIn company posts

TL;DR

Automatically get LinkedIn company posts on linkedin.com. You get up to the 50 newest, each with an exact post date and reaction, comment and repost counts.

About

Company pages on LinkedIn open on a relevance-ranked "Top" view and label posts "1w" or "1mo", so it is hard to say what a brand posted last month. The script switches the sort to Recent first and turns each activity id into an exact postedAt timestamp. The full commentary comes back, including the part LinkedIn hides behind "...more". Say you do product marketing at a small CRM company. Every Monday you run it on hubspot with count 30, throw out the isRepost rows and rank what went up in the last seven days by reactions. The top url then goes to get_post_comments to see who replied. LinkedIn's own Posts API will not read a competitor's feed, because it returns an organization's posts only to members holding an administrator, content admin or sponsored content poster role on that page. The ceiling is 50 posts with no offset, so a year of a page's history is out of reach.

Input

company required

LinkedIn company page URL (e.g. https://www.linkedin.com/company/fintech-collective/) or bare slug (fintech-collective).

count optional

How many of the most recent posts to return. Default 10 (one feed fetch); above 10 the script scroll-paginates by 10 per round. Capped at 50.

Output

posts required

Newest first (ordered by activity id, which encodes the timestamp — NOT by the feed's display order).

total required

Total posts on the page, from the feed module's paging metadata in the cold SSR blob. 0 with posts:[] = page has never posted ('No posts yet' state, first-class outcome).

company required

Slug as requested (after URL parsing).

Example output

Shape only: placeholder values generated from the output schema, not a real run.

{ "posts": [ { "age": "…", "url": "https://example.com/item/123", "text": "…", "reposts": 3, "comments": 3, "isRepost": true, "postedAt": "2026-01-15T09:30:00Z", "reactions": 3, "activityId": "abc123" } ], "total": 3, "company": "…" }

FAQ

Get the most recent posts of a LinkedIn company page (newest first) from its URL or slug, up to count. Returns company, total, and posts (activityId, url, text, postedAt, age, isRepost, reactions, comments, reposts).
Ask an AI agent connected to Reduck to run reduck/linkedin.com/get_company_posts, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/linkedin.com/get_company_posts
You do not need one. "Get LinkedIn company posts" drives the real linkedin.com pages in a browser, so it works whether or not linkedin.com offers an API for this.
Required: company. Optional: count.
It returns posts, total, company.
Yes. It acts as you on linkedin.com: on your own Chrome it reuses your session, and on a Reduck-hosted browser it loads the linkedin.com cookies saved by the Reduck extension.
It only reads. It looks things up on linkedin.com and changes nothing there.
Ask an AI agent connected to Reduck to run reduck/linkedin.com/get_company_posts, or run it from a terminal with the Reduck CLI: npx @reduck-ai/cli@latest run --script reduck/linkedin.com/get_company_posts
It is part of Reduck's official curated catalogue.
The 50 newest at most, and 10 if you leave count unset. Past 10 it scrolls the feed for more, and when LinkedIn stops loading posts early you get whatever had loaded rather than an error, so a run can come back short. With no offset input, the 51st newest post and anything older stay out of reach.
LinkedIn sends a page's admins to its admin dashboard by default, so the script asks for the member view of the page (viewAsMember=true) and navigates a second time if it still lands on the dashboard. If LinkedIn keeps redirecting, the run ends with an error naming the admin view, and running it from an account that does not manage the page gets around it.
Pass the post's url to get_post_reactors for the people behind the reaction count, or to get_post_comments for the comment threads. On its own, get_company_posts returns only the counts and no media field; get_post can tell you whether a post carries an image, video or document, though not the file itself.
The sort switch, the counts and the repost flag are read from page structure rather than English labels, and it has been run against Italian, Spanish, German, French and English interfaces. The age field keeps your interface's wording, so filter on postedAt instead. That one is a UTC timestamp, which means a post published just after midnight in Paris carries the previous day's date.

Start building not clicking