POST /linkedin_company_posts • Credits: 0.2 credits per returned post
LinkedIn Company Posts returns the recent posts that one LinkedIn company published. Each post in the elements array holds the post text, the media, the author, the date and the engagement counts. One POST call costs 0.2 credits per returned post and no base fee.
What does LinkedIn Company Posts do?
Sales and marketing teams need to know what a target account says in public. LinkedIn Company Posts reads the post feed of one company page and returns it as JSON. Identify the company by its LinkedIn URL, by its numeric ID, or by its universal name. Two date parameters cut the feed down to a recent window. The data source is LinkedIn. One call returns one page of posts and a pagination object with the total count and the page count.
Which endpoint does LinkedIn Company Posts use?
Method:
POSTURL:
https://api.richapi.ai/api/v1/linkedin_company_postsAuthentication:
x-api-keyheaderRequest format: JSON request body
Response: Synchronous JSON
Page size: 25 posts
Credits: 0.2 credits per returned post
LinkedIn Company Posts accepts the POST method only. Every parameter goes in the JSON request body. If you send GET, the API returns 405 with the message linkedin_company_posts only supports POST.
How to send a LinkedIn Company Posts request
Copy your API key from the RichAPI dashboard.
Choose one company identifier:
linkedin_company_url,linkedin_company_id, orlinkedin_company_universal_name.Set that parameter in the JSON request body.
Set
posted_limitto24h,week, ormonthto limit the feed to a recent window.Set
pageto1for the first page.Send a
POSTrequest tohttps://api.richapi.ai/api/v1/linkedin_company_posts.Send the API key in the
x-api-keyheader.Read the posts from the
elementsarray in the response.Read
pagination.totalPagesto find how many pages the feed holds.
CAUTION: Each LinkedIn Company Posts call costs 0.2 credits per returned post. A full page of 25 posts costs 5 credits. RichAPI reserves 5 credits for every call and refunds the unused part.
cURL
curl -X POST https://api.richapi.ai/api/v1/linkedin_company_posts
-H "x-api-key: YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"linkedin_company_url": "https://www.linkedin.com/company/microsoft/",
"posted_limit": "week",
"page": 1
}'
Python
import requests
response = requests.post(
"https://api.richapi.ai/api/v1/linkedin_company_posts",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"linkedin_company_url": "https://www.linkedin.com/company/microsoft/",
"posted_limit": "week",
"page": 1,
},
timeout=60,
)
response.raise_for_status()
print(response.json())
Node.js
const response = await fetch("https://api.richapi.ai/api/v1/linkedin_company_posts", {
method: "POST",
headers: {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
linkedin_company_url: "https://www.linkedin.com/company/microsoft/",
posted_limit: "week",
page: 1,
}),
});
const data = await response.json();
console.log(data);
What parameters does LinkedIn Company Posts accept?
LinkedIn Company Posts accepts six parameters. Every parameter is optional. Send one company identifier so that the API knows which company page to read.
Parameter | Type | Required | Default | Description |
| string | No |
| LinkedIn company URL, for example |
| string | No |
| LinkedIn company numeric ID, for example |
| string | No |
| The last path segment of the company LinkedIn URL, for example |
| string | No |
| Pre-filter posts by recency on the LinkedIn side. Accepted values: |
| string | No |
| Read posts until this recency threshold is met. Accepted values: |
| integer | No |
| Page number for pagination. The count starts at 1. |
Which parameter names does the request body reject?
The request body accepts the six parameter names above and no others. If the body holds any other key, the API returns 400 with the message Unknown input field(s): <name>.
How do I filter LinkedIn company posts by date?
LinkedIn Company Posts has two date parameters, and they work at different stages.
Parameter | Stage | Accepted values | Effect |
| LinkedIn applies the filter before the scrape. |
| The scrape reads fewer posts. The |
| The read stops at the threshold. |
| The scrape continues until a post is older than the threshold. |
Set posted_limit to cut cost, because LinkedIn returns fewer posts and RichAPI bills per returned post. Set scrape_posted_limit for an exact date boundary on the returned set.
curl -X POST https://api.richapi.ai/api/v1/linkedin_company_posts
-H "x-api-key: YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"linkedin_company_universal_name": "microsoft",
"posted_limit": "month",
"scrape_posted_limit": "week"
}'
How does LinkedIn Company Posts pagination work?
LinkedIn Company Posts returns one page of up to 25 posts per call. Set page to 1 for the first page. To read the next page, send the same request body again with page set to 2. Keep every other parameter the same, so that the feed and the order stay stable. Read pagination.totalPages to find how many pages the feed holds. Read pagination.totalElements to find the total number of posts.
The response also holds pagination.paginationToken. The request body does not accept a pagination token. Use page for every page after the first.
What does LinkedIn Company Posts return?
The example below shows one element of a page. A full page holds up to 25 elements.
{
"query": {
"page": "1",
"companyIds": ["76136784"],
"profileIds": [],
"postedLimit": "past-week",
"authorsCompanyIds": [],
"companyUniversalName": "microsoft"
},
"status": 200,
"elements": [
{
"id": "7458081860720689153",
"author": {
"id": "76136784",
"urn": "76136784",
"info": "2,288 followers",
"name": "Microsoft",
"type": "company",
"avatar": {
"url": "https://media.licdn.com/dms/image/v2/D560BAQExme8rEtP5QA/company-logo_400_400/0/1771309440256/microsoft_logo",
"width": 400,
"height": 400
},
"website": null,
"linkedinUrl": "https://www.linkedin.com/company/microsoft/posts",
"websiteLabel": null,
"universalName": "microsoft",
"publicIdentifier": null
},
"header": {
"text": null
},
"content": "Our founder Alex Mercer explains what shipped this month. Turn the sound on and watch to the end.\n\n#api #gtm",
"comments": [],
"entityId": "7458081860720689153",
"postedAt": {
"date": "2026-05-07T09:14:40.056Z",
"timestamp": 1778145280056,
"postedAgoText": "1 month ago • Edited • Visible to anyone on or off LinkedIn",
"postedAgoShort": "1mo"
},
"shareUrn": "urn:li:ugcPost:7458081859688669184",
"postVideo": {
"videoUrl": "https://dms.licdn.com/playlist/vid/v2/D4D10AQEu4yscPORhAQ/mp4-720p-30fp-crf28/0/1778145278116",
"thumbnailUrl": "https://media.licdn.com/dms/image/v2/D4D10AQEu4yscPORhAQ/ads-video-thumbnail_720_1280/0/1778145187867"
},
"engagement": {
"id": "7458081859688669184",
"likes": 22,
"shares": 1,
"comments": 1,
"reactions": [
{ "type": "LIKE", "count": 17 },
{ "type": "EMPATHY", "count": 3 },
{ "type": "PRAISE", "count": 2 }
]
},
"postImages": [],
"linkedinUrl": "https://www.linkedin.com/posts/microsoft_api-gtm-activity-7458081860720689153-a72A",
"socialContent": {
"shareUrl": "https://www.linkedin.com/posts/microsoft_api-gtm-activity-7458081860720689153-a72A?",
"hideSendAction": true,
"hideViewsCount": false,
"hideReactAction": false,
"hideShareAction": true,
"hideRepostsCount": false,
"showSocialDetail": true,
"hideCommentAction": false,
"hideCommentsCount": false,
"hideReactionsCount": false,
"trustInterventionBanner": null,
"hideSocialActivityCounts": false,
"showContributionExperience": false
},
"shareLinkedinUrl": "https://www.linkedin.com/feed/update/urn:li:ugcPost:7458081859688669184",
"contentAttributes": [
{
"type": "PROFILE_MENTION",
"start": 12,
"length": 11,
"profile": {
"id": "ACoAADSlaZgBSwytnwyWSoHJGmT0LGmDG8twWnU",
"lastName": "Mercer",
"firstName": "Alex",
"linkedinUrl": "https://www.linkedin.com/in/alexmercer",
"publicIdentifier": "alexmercer"
},
"textLink": null,
"hyperlink": "https://www.linkedin.com/in/ACoAADSlaZgBSwytnwyWSoHJGmT0LGmDG8twWnU"
}
]
}
],
"pagination": {
"pageSize": 25,
"pageNumber": 1,
"totalPages": 4,
"totalElements": 87,
"paginationToken": "1758430021-1781853930031-c1cf744f67f08d85017b7d298576af27",
"previousElements": 0
}
}
Which top-level fields does the LinkedIn Company Posts response hold?
Field | Type | Description |
| array | The posts on this page. RichAPI bills 0.2 credits per element. |
| object | The pagination data for the feed. |
| object | The search that RichAPI ran. |
| integer | The status of the data request. |
| integer | The number of posts on this page. |
| integer | The current page number. The count starts at 1. |
| integer | The total number of pages in the feed. |
| integer | The total number of posts in the feed. |
| string | A cursor for the feed. The request body does not accept it. |
| integer | The number of posts on the earlier pages. |
| string | The page number that RichAPI requested. |
| array | The company IDs resolved from the request. |
| array | The profile IDs in the query. This array is empty for a company feed. |
| string | The recency filter that was applied, for example |
| array | The author company IDs in the query. |
| string | The company universal name that was resolved. |
Which fields does each LinkedIn company post hold?
Each object in the elements array holds the fields below.
Field | Type | Description |
| string | The post identifier. |
| string | The post text. Line breaks appear as |
| string | The public LinkedIn URL of the post. |
| string | The LinkedIn entity identifier of the post. |
| string | The LinkedIn share URN, for example |
| string | The LinkedIn feed URL that the share URN points to. |
| object | The repost or promotion header of the post. |
| string | The header text. The value is |
| array | The comments returned with the post. |
| array | The images attached to the post. Each image holds |
| object | The video attached to the post. The value is |
| string | The video playlist URL. |
| string | The video thumbnail image URL. |
| object | The author of the post. |
| string | The author identifier. |
| string | The author URN. |
| string | The author name, for example |
| string | The author type. The value is |
| string | The follower text of the author, for example |
| string | The LinkedIn URL of the author. |
| string | The company universal name of the author. |
| string | The public identifier of the author. The value is |
| string | The author website. |
| string | The label text for the author website. |
| object | The author logo image. |
| string | The logo image URL. |
| integer | The logo image width in pixels. |
| integer | The logo image height in pixels. |
| object | The publication time of the post. |
| string | The ISO 8601 publication date. |
| integer | The Unix timestamp in milliseconds. |
| string | The full relative time text from LinkedIn. |
| string | The short relative time text, for example |
| object | The LinkedIn display flags for the post. |
| string | The share URL of the post. |
| boolean |
|
| boolean |
|
| boolean |
|
| boolean |
|
| boolean |
|
| boolean |
|
| boolean |
|
| boolean |
|
| boolean |
|
| boolean |
|
| boolean |
|
| string | The trust banner text on the post. |
| array | The mentions and the links inside the post text. |
| string | The attribute type, for example |
| integer | The character offset of the attribute in |
| integer | The character length of the attribute in |
| string | The target URL of the attribute. |
| string | The display link text of the attribute. |
| object | The mentioned profile. |
| string | The LinkedIn identifier of the mentioned profile. |
| string | The first name of the mentioned profile. |
| string | The last name of the mentioned profile. |
| string | The LinkedIn URL of the mentioned profile. |
| string | The public identifier of the mentioned profile. |
Which engagement fields does each post hold?
Field | Type | Description |
| object | The engagement counts for the post. |
| string | The activity identifier that carries the counts. |
| integer | The total number of reactions on the post. |
| integer | The number of comments on the post. |
| integer | The number of reposts of the post. |
| array | The count for each reaction type. |
| string | The reaction type, for example |
| integer | The number of reactions of that type. |
How do I find engagement signals with LinkedIn Company Posts?
A company that posts about a hiring push, a funding round, or a product launch gives a sales team a reason to reach out. LinkedIn Company Posts turns that feed into structured data for a score.
Send one request per target account with
posted_limitset toweek.Read
contentfor each element and match it against your trigger keywords.Read
engagement.likes,engagement.commentsandengagement.sharesto rank the posts.Read
contentAttributes[].profileto collect the people that the post mentions.Read
postedAt.timestampto keep only the posts inside your outreach window.Send the post
linkedinUrlto your sales team as the opening reference.
To find the people who reacted to a post, send the post URN to the RichAPI Post Activities endpoint. Build the URN from the post id: add the prefix urn:li:activity: to it.
How much does LinkedIn Company Posts cost?
LinkedIn Company Posts costs 0.2 credits per returned post and no base fee. One credit costs $0.02 on the 1,000 and 5,000 credit packs. Larger packs cost less per credit. A full page of 25 posts costs 25 x 0.2 = 5 credits. That is $0.10.
This rate is 0.2 credits per result. That is double the 0.1 credit rate of LinkedIn Company Search and most other per-result search endpoints.
Cost of one call, by the number of posts returned:
Posts returned | Credits | Cost |
0 | 0 | $0.00 |
1 | 0.2 | $0.004 |
5 | 1 | $0.02 |
10 | 2 | $0.04 |
25 (one full page) | 5 | $0.10 |
Cost of many calls, with a full page of 25 posts per call:
Calls | Posts | Credits | Cost |
1 | 25 | 5 | $0.10 |
10 | 250 | 50 | $1.00 |
40 | 1,000 | 200 | $4.00 |
100 | 2,500 | 500 | $10.00 |
400 | 10,000 | 2,000 | $40.00 |
RichAPI reserves 5 credits before each call, because a page holds up to 25 posts. RichAPI then charges for the real number of elements and returns the rest of the reservation. RichAPI refunds the full reservation for any response outside the 200 range.
How does LinkedIn Company Posts differ from Post Keyword Search and Profile Activities?
The three endpoints read LinkedIn posts, and each one starts from a different input.
Endpoint | Input | Returns | Credits |
LinkedIn Company Posts | One company URL, ID, or universal name | The recent posts of that one company page | 0.2 per result |
Post Keyword Search | A keyword | Matched posts from across LinkedIn, from any author | 0.1 per result |
Profile Activities | One person profile | The recent posts, comments and reactions of that person | 2 per result |
Read the article for each endpoint for the full pricing detail.
If you already know the account and you want its own feed, use LinkedIn Company Posts. If you do not know the author and you search by topic, use Post Keyword Search. If you track one buyer or one champion instead of a company page, use Profile Activities.
Which errors can LinkedIn Company Posts return?
Status | Meaning | What to do |
| The request body failed validation. An unknown body key or a wrong value type causes this failure. | Correct the parameter that the error message names. Use the six names in the parameter table. |
| The API key is missing or wrong. | Send a valid key in the |
| The organization has no credits left, or the team reached its monthly spend limit. | Buy credits in the RichAPI dashboard. |
| The API key has no access, or LinkedIn Company Posts is not on the plan. | Check the plan and the endpoint access in the RichAPI dashboard. |
| The request used a method other than | Send the request again with the |
| Too many requests. | Read the |
| The API failed. | Send the request again. If the failure repeats, write to [email protected]. |
Frequently asked questions
Is LinkedIn Company Posts a GET or a POST endpoint?
LinkedIn Company Posts is a POST endpoint at https://api.richapi.ai/api/v1/linkedin_company_posts. Every parameter goes in the JSON request body. A GET request returns 405.
How do I identify the company for LinkedIn Company Posts?
Send one of three parameters: linkedin_company_url, linkedin_company_id, or linkedin_company_universal_name. The numeric ID in linkedin_company_id gives the fastest lookup.
How many posts does one LinkedIn Company Posts page return?
One LinkedIn Company Posts page returns up to 25 posts in the elements array. Read pagination.totalPages in the response to find how many pages the feed holds.
How do I get the second page of LinkedIn company posts?
Send the same request body again with page set to 2. Keep every other parameter the same, so that the feed and the order stay stable.
Can I send the paginationToken value back to LinkedIn Company Posts?
No. The request body accepts page only, and it rejects paginationToken with a 400 error. The pagination.paginationToken field is a response field.
How much does a LinkedIn Company Posts call cost for zero posts?
A LinkedIn Company Posts call that returns zero posts costs 0 credits, because the endpoint has no base fee. RichAPI returns the full 5 credit reservation.
What engagement data does LinkedIn Company Posts return?
Each post holds an engagement object with likes, comments, shares and a reactions array. The reactions array holds one count per reaction type, for example LIKE, EMPATHY and PRAISE.
What is the difference between posted_limit and scrape_posted_limit?
LinkedIn applies posted_limit before the scrape, and it accepts 24h, week or month. scrape_posted_limit stops the read once posts are older than the threshold, and it accepts 1h, 24h, week, month, 3months, 6months or year.
