LinkedIn Company Posts API
Scrape LinkedIn Company Posts data with one API call. Returns recent posts from a LinkedIn company page as the same PostList shape as `/v1/linkedin/profile/posts`: text, reaction/comment/share counts, the company slug on `post.author.username`, and `content.media_urls` / `thumbnail_url` when the row is an image, a video or an article share. Video duration is `content.duration_seconds`. The company's follower count rides on `post.ext.author_followers`.
Last updated October 2026Maintained by the SocialCrawl team
Returns the recent posts from a LinkedIn company page, each with text, author name, like, comment and share counts, media, and date.
Use it for what a brand publishes; profile/posts covers an individual member and group/posts covers a group feed.
Searching 68 platforms in parallel
What can you do with the Company Posts API?
The Company Posts endpoint gives you structured LinkedIn data with computed fields in a single request. No scraping infrastructure to build or maintain.
Example Request
curl -H "x-api-key: YOUR_API_KEY" \
"https://www.socialcrawl.dev/v1/linkedin/company/posts?company_id=1035"import requests
response = requests.get(
"https://www.socialcrawl.dev/v1/linkedin/company/posts",
params={
'company_id': '1035',
},
headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()const response = await fetch(
"https://www.socialcrawl.dev/v1/linkedin/company/posts?company_id=1035",
{
headers: { "x-api-key": "YOUR_API_KEY" },
},
);
const data = await response.json();Parameters
| Parameter | Required | Description |
|---|---|---|
| company_id | Yes | LinkedIn numeric company ID (from /v1/linkedin/company). |
| page | No | Page number for pagination (default 1). |
| sort_by | No | Post ordering: 'top' or 'recent'. (top | recent) |
| since | No | Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept. `published_after`, `start_date`, `from_date`, `publish_time` (`yesterday`, `this-week`, `this-month`, `last-3-months`, `last-6-months`) and `max_age_days` are accepted and applied as `since`. |
| until | No | Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept. `published_before`, `end_date` and `to_date` are accepted and applied as `until`. |
What does the LinkedIn Company Posts API return?
Every response follows one unified schema. Here is a real, unmodified response body, so you can see the exact fields you get back before spending a credit.
Example response
{
"success": true,
"platform": "linkedin",
"endpoint": "/v1/linkedin/company/posts",
"data": {
"items": [
{
"post": {
"id": "7511684443640680448",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7511684443640680448",
"content": {
"text": "Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted).",
"media_urls": null,
"thumbnail_url": null,
"duration_seconds": null
},
"author": {
"username": "user_9fbf26",
"display_name": "user_c7bac4",
"avatar_url": "https://example.com/avatars/user_4940bc.png",
"verified": null
},
"engagement": {
"views": null,
"likes": 0,
"comments": 0,
"shares": 0,
"saves": null
},
"flags": {
"nsfw": null,
"spoiler": null,
"pinned": null,
"deleted": false
},
"published_at": "2026-10-02T07:12:11.712Z",
"ext": {
"author_id": "1035",
"reaction_counts": [],
"post_type": "activity",
"published_at_precision": null,
"author_type": "user_f168cc",
"is_repost_quote": null,
"reaction_type": null
}
},
"computed": {
"engagement_rate": null,
"language": "tr",
"content_category": "other",
"estimated_reach": null
}
},
{
"post": {
"id": "7511512074343104512",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7511512074343104512",
"content": {
"text": "Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted). Sample comment text (redacted).",
"media_urls": [
"https://media.licdn.com/dms/image/v2/D4E22AQGrD9tTe5XKCA/feedshare-image-high-res/B4EaD4W75qIwAU-/0/1790873159283?e=1792627200&v=beta&t=IZoNGZkQc6e-slPDPRrsDmKpb0EKKcWITbWI_hyIDn8"
],
"thumbnail_url": null,
"duration_seconds": null
},
"author": {
"username": "user_101820",
"display_name": "user_a4f98e",
"avatar_url": "https://example.com/avatars/user_9461ee.png",
"verified": null
},
"engagement": {
"views": null,
"likes": 517,
"comments": 31,
"shares": 44,
"saves": null
},
"flags": {
"nsfw": null,
"spoiler": null,
"pinned": null,
"deleted": false
},
"published_at": "2026-10-01T19:47:15.669Z",
"ext": {
"reaction_counts": [
{
"count": 389,
"type": "LIKE"
},
{
"count": 76,
"type": "PRAISE"
}
],
"post_type": "activity",
"published_at_precision": null,
"author_urn": "user_feaf25",
"author_headline": "user_b95fc4",
"author_type": "user_04f899",
"is_repost_quote": null,
"reaction_type": null
}
},
"computed": {
"engagement_rate": null,
"language": "en",
"content_category": "education",
"estimated_reach": null
}
}
],
"total": null,
"dropped": 0
},
"credits_used": 5,
"request_id": "req_example000000",
"cached": false,
"pagination": {
"next_cursor": "sc.eyJ2IjoyLCJjIjoiMiIsImUiOiJsaW5rZWRpbi9jb21wYW55L3Bvc3RzIiwicCI6InBhZ2UifQ",
"has_more": true,
"page_size": 50
},
"credits_remaining": 9999,
"source": "captured",
"captured_at": "2026-10-02T07:31:26.844Z",
"redacted": true
}Live sample illustrating the unified response shape. Field values reflect the record you query.
How does the LinkedIn Company Posts API work?
Send a GET request with your API key and get back clean, structured JSON in our unified schema. Supported computed fields are populated when the source provides the required inputs.
Method
GET
Response
JSON
How do you scrape social media data in seconds?
The fastest social media scraping API for developers. Scrape profiles, posts, comments, and analytics from 68 platforms covering 10B+ monthly active users.
One schema, every platform
Query 68 platforms with identical response structures. Write your integration once.
Computed fields, not just scraped
When an endpoint supports these metrics and the source provides the required inputs, the normalized record includes engagement_rate, estimated_reach, content_category, and language. Ready to use.
See your data before you code
Visual Data Explorer. Paste any URL, get rich result cards, sortable tables, CSV export.
import requests
response = requests.get(
'https://www.socialcrawl.dev/v1/tiktok/profile',
params={'handle': 'charlidamelio'},
headers={'x-api-key': 'sc_YOUR_API_KEY'}
)
data = response.json(){
"success": true,
"platform": "tiktok",
"data": {
"author": {
"username": "charlidamelio",
"followers": 152400000
},
"engagement": {
"likes": 12400000000,
"engagement_rate": 0.087
},
"metadata": {
"language": "en",
"content_category": "lifestyle"
}
}
}Have a question? We got answers
Find answers to frequently asked questions about SocialCrawl's API, pricing, and capabilities.
Contact usHow do I list recent posts from a LinkedIn company page?
How do I paginate through a LinkedIn company feed?
How much does the LinkedIn Company Posts API cost?
Can I use this endpoint for B2B content monitoring?
What fields come back for each post in the company feed?
Is this different from the LinkedIn Post endpoint?
Ask AI about SocialCrawl
Ready to scrape LinkedIn Company Posts data?
Get your API key and start pulling LinkedIn data in under 60 seconds.
