LinkedIn API: List company posts
Lists a company's recent public LinkedIn posts in page order, from its name or LinkedIn company page link: post text, approximate date, reactions, comments, image and link. Only updates shown on the signed-out company page are available.
Unofficial. Not affiliated with or endorsed by LinkedIn.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Company, required
company Company name or LinkedIn company page link, for example Unilever or https://www.linkedin.com/company/unilever.
Unilever
- Max Results optional
max_results Maximum number of recent posts to return, for example 10.
10 (default)
Whole number from 1 to 20.
Input as JSON
{ "company": "Unilever"}Output
{ "posts": [ { "text": "Success doesn't follow a single roadmap 🗺️\n\nFor Global Dove Social Strategy Brand Manager Enya Morgan, an apprenticeship was the start of a career path shaped by curiosity, learning and saying yes to new opportunities. Read more below!\n\n#UniquelyUnilever #MinuteMentorship", "post_link": "https://www.linkedin.com/posts/unilever_choosing-the-right-path-not-the-expected-activity-7509507082337951746-bag2" , "image_link": "https://media.licdn.com/dms/image/v2/D4E12AQH0StNwfA7-ew/article-cover_image-shrink_720_1280/B4EaDOih_6IgAQ-/0/1790171556992?e=2147483647&v=beta&t=W_hdDk5i2mv2puVxuDDMuVfeEkbYDH3vwNEsb1RDVzI" , "posted_date": "2026-09-26", "comment_count": 5, "reaction_count": 112, "posted_date_as_shown": "2d" }, { "text": "Got a minute? Give or take a few seconds. 😉\n\nThis week, Rachael Hennin, HR Business Partner and Transformation Manager, shares the career advice she's carried with her throughout her journey: life's a marathon, not a sprint.\n\nIt's a reminder that careers aren't built by rushing to the next title. T…", "post_link": "https://www.linkedin.com/posts/unilever_uniquelyunilever-minutementorship-activity-7509200249966616577-bapM" , "image_link": null, "posted_date": "2026-09-25", "comment_count": 8, "reaction_count": 90, "posted_date_as_shown": "3d" }, { "text": "As leaders from around the world gather for Climate Week NYC 2026, Unilever’s Global Head of Sustainability Rianne Buter shares how climate action is intrinsic to our business and helps us stay future-fit. \n \n#UnileverNews", "post_link": "https://www.linkedin.com/posts/unilever_how-climate-action-is-shaping-unilevers-activity-7508170830657548288-AeQj" , "image_link": "https://media.licdn.com/dms/image/v2/D4E12AQFATaNX-vrCNA/article-cover_image-shrink_720_1280/B4EaDI7YuyH8AQ-/0/1790077407266?e=2147483647&v=beta&t=4Rr2gqo_lVNG5x0iscb3HC-sTEVbNStHhWfX7HG234o" , "posted_date": "2026-09-22", "comment_count": 13, "reaction_count": 163, "posted_date_as_shown": "6d" } ], "company": "Unilever"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"linkedin.com/list_company_posts","input":{"company":"Unilever"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "linkedin.com/list_company_posts" , "input": { "company": "Unilever" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "linkedin.com/list_company_posts" , "input": { "company": "Unilever" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run linkedin.com/list_company_posts# with {"company":"Unilever"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "company" ], "properties": { "company": { "type": "string", "description": "Company name or LinkedIn company page link, for example Unilever or https://www.linkedin.com/company/unilever." }, "max_results": { "type": "integer", "default": 10, "maximum": 20, "minimum": 1, "description": "Maximum number of recent posts to return, for example 10." } }}Output schema
{ "type": "object", "required": [ "company", "posts" ], "properties": { "posts": { "type": "array", "items": { "type": "object", "required": [ "text", "posted_date", "posted_date_as_shown", "reaction_count", "comment_count", "image_link", "post_link" ], "properties": { "text": { "type": [ "string", "null" ] }, "post_link": { "type": "string" }, "image_link": { "type": [ "string", "null" ] }, "posted_date": { "type": [ "string", "null" ], "description": "Approximate date from the displayed relative time, YYYY-MM-DD." }, "comment_count": { "type": [ "integer", "null" ] }, "reaction_count": { "type": [ "integer", "null" ] }, "posted_date_as_shown": { "type": [ "string", "null" ] } } } }, "company": { "type": "string", "description": "Company name shown on LinkedIn." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
linkedin.com/list_company_posts- Returns
- company name, posts (text, posted date and date as shown, reaction count, comment count, image link, post link)
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method linkedin.com/list_company_posts with the inputs above.
Ask your agent
- What has Patagonia been posting lately on LinkedIn? Give me the last 5 updates with reaction and comment counts.
- Pull the 15 most recent posts from https://www.linkedin.com/company/stripe including text, dates, and links to each post.
- I'm prepping for an interview at Siemens Healthineers — show me their latest company updates and how much engagement each got.
- Grab Nvidia's recent company page posts, up to 20, with any images attached so I can see what they're announcing.
- Check the newest public updates from the Maersk company page on LinkedIn: post text, roughly when each went up, likes and comments.
See more
All LinkedIn methodsLists open LinkedIn jobs posted by a named company, with optional location and result limit. Workplace type is returned only when LinkedIn displays it.
linkedin.com/list_company_jobsGets the public overview of a LinkedIn company from its name or company page link. Details not shown publicly are null.
linkedin.com/get_company_profileSearches public LinkedIn job listings by keywords and location, with optional date, seniority, employment type and company filters.
linkedin.com/search_jobsGets the full description and public details of an open LinkedIn job from its link, or from its title and company. Closed postings are not returned.
linkedin.com/get_jobLists an account's latest public Threads posts, newest first, with text, engagement counts, thumbnails and links. Only posts shown without logging in are returned.
threads.com/list_recent_postsLooks up a company by name or ticker on Yahoo Finance and returns its latest news headlines, with article summaries when the article page provides one.
finance.yahoo.com/get_company_newsReads recent public Trustpilot reviews for a company by name, website or Trustpilot link, in every language, with its TrustScore, ratings, reviewer details and company replies. Reviews follow the chosen sort (most recent or most relevant) and star filters, starting from a chosen results page.
trustpilot.com/get_company_reviewsLists the latest publicly embeddable posts and reels from an Instagram account, newest first. Without login Instagram may show fewer posts than requested. View counts that are not available are null.
instagram.com/list_recent_posts