Company Posts
curl --request POST \
--url https://api.datamagnet.co/api/v1/company/posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"type": "<string>",
"cursor": "<string>"
}
'import requests
url = "https://api.datamagnet.co/api/v1/company/posts"
payload = {
"url": "<string>",
"type": "<string>",
"cursor": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>', type: '<string>', cursor: '<string>'})
};
fetch('https://api.datamagnet.co/api/v1/company/posts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.datamagnet.co/api/v1/company/posts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'type' => '<string>',
'cursor' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.datamagnet.co/api/v1/company/posts"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"type\": \"<string>\",\n \"cursor\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.datamagnet.co/api/v1/company/posts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"type\": \"<string>\",\n \"cursor\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datamagnet.co/api/v1/company/posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"type\": \"<string>\",\n \"cursor\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cursor": "eyJjb3VudCI6MTAwLCJzdGFydCI6MTAwLCJ0b3RhbCI6MzY1...",
"total": 365,
"message": [
{
"attachments": [
{
"subtitle": "Google",
"title": "Gemini 3 Flash is rolling out now — hear from the Googlers who helped make it",
"type": "Article",
"url": "https://www.linkedin.com/pulse/gemini-3-flash...",
"urn": "urn:li:linkedInArticle:7407901974379008000"
}
],
"author": {
"followers": 39995212,
"logo": "https://media.licdn.com/dms/image/...",
"name": "Google",
"public_identifier": "google",
"type": "Company",
"url": "https://www.linkedin.com/company/google",
"urn": "urn:li:fsd_company:1441"
},
"comments": 48,
"created_at": "2025-12-20T16:06:30.020Z",
"is_repost": false,
"likes": 624,
"mentions": [],
"reactions": [
{ "count": 552, "reaction_type": "LIKE" },
{ "count": 33, "reaction_type": "PRAISE" },
{ "count": 21, "reaction_type": "EMPATHY" }
],
"shared_post": null,
"shares": 52,
"text": "This week, we expanded the Gemini 3 model family with the release of Gemini 3 Flash...",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7408175976368472064/",
"urn": "urn:li:activity:7408175976368472064"
},
{
"attachments": [],
"author": {
"background_image": null,
"first_name": "Kent",
"followers": null,
"image_url": "https://media.licdn.com/dms/image/...",
"last_name": "Walker",
"occupation": "President, Global Affairs at Google & Alphabet",
"public_identifier": "kent-walker-5963bb198",
"type": "Member",
"url": "https://www.linkedin.com/in/kent-walker-5963bb198",
"urn": "urn:li:fsd_profile:ACoAAC5VbIIBM7MqyDczwsY_EinOMS5UTJRqITo"
},
"comments": 24,
"created_at": "2025-12-19T19:30:50.350Z",
"is_repost": true,
"likes": 295,
"mentions": [],
"original_post_urn": "urn:li:ugcPost:7407823617180340224",
"reactions": [
{ "count": 254, "reaction_type": "LIKE" },
{ "count": 21, "reaction_type": "INTEREST" }
],
"repost_user": {},
"shared_post": null,
"shares": 29,
"text": "As we close out another year, I've been thinking a lot about perceptions of AI...",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7407865012054142977/",
"urn": "urn:li:activity:7407865012054142977"
}
]
}
Company Posts
Retrieve posts published on a LinkedIn company page by URL, including text, media, engagement counts, and timestamps for content monitoring.
POST
/
api
/
v1
/
company
/
posts
Company Posts
curl --request POST \
--url https://api.datamagnet.co/api/v1/company/posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"type": "<string>",
"cursor": "<string>"
}
'import requests
url = "https://api.datamagnet.co/api/v1/company/posts"
payload = {
"url": "<string>",
"type": "<string>",
"cursor": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>', type: '<string>', cursor: '<string>'})
};
fetch('https://api.datamagnet.co/api/v1/company/posts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.datamagnet.co/api/v1/company/posts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'type' => '<string>',
'cursor' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.datamagnet.co/api/v1/company/posts"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"type\": \"<string>\",\n \"cursor\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.datamagnet.co/api/v1/company/posts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"type\": \"<string>\",\n \"cursor\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datamagnet.co/api/v1/company/posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"type\": \"<string>\",\n \"cursor\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cursor": "eyJjb3VudCI6MTAwLCJzdGFydCI6MTAwLCJ0b3RhbCI6MzY1...",
"total": 365,
"message": [
{
"attachments": [
{
"subtitle": "Google",
"title": "Gemini 3 Flash is rolling out now — hear from the Googlers who helped make it",
"type": "Article",
"url": "https://www.linkedin.com/pulse/gemini-3-flash...",
"urn": "urn:li:linkedInArticle:7407901974379008000"
}
],
"author": {
"followers": 39995212,
"logo": "https://media.licdn.com/dms/image/...",
"name": "Google",
"public_identifier": "google",
"type": "Company",
"url": "https://www.linkedin.com/company/google",
"urn": "urn:li:fsd_company:1441"
},
"comments": 48,
"created_at": "2025-12-20T16:06:30.020Z",
"is_repost": false,
"likes": 624,
"mentions": [],
"reactions": [
{ "count": 552, "reaction_type": "LIKE" },
{ "count": 33, "reaction_type": "PRAISE" },
{ "count": 21, "reaction_type": "EMPATHY" }
],
"shared_post": null,
"shares": 52,
"text": "This week, we expanded the Gemini 3 model family with the release of Gemini 3 Flash...",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7408175976368472064/",
"urn": "urn:li:activity:7408175976368472064"
},
{
"attachments": [],
"author": {
"background_image": null,
"first_name": "Kent",
"followers": null,
"image_url": "https://media.licdn.com/dms/image/...",
"last_name": "Walker",
"occupation": "President, Global Affairs at Google & Alphabet",
"public_identifier": "kent-walker-5963bb198",
"type": "Member",
"url": "https://www.linkedin.com/in/kent-walker-5963bb198",
"urn": "urn:li:fsd_profile:ACoAAC5VbIIBM7MqyDczwsY_EinOMS5UTJRqITo"
},
"comments": 24,
"created_at": "2025-12-19T19:30:50.350Z",
"is_repost": true,
"likes": 295,
"mentions": [],
"original_post_urn": "urn:li:ugcPost:7407823617180340224",
"reactions": [
{ "count": 254, "reaction_type": "LIKE" },
{ "count": 21, "reaction_type": "INTEREST" }
],
"repost_user": {},
"shared_post": null,
"shares": 29,
"text": "As we close out another year, I've been thinking a lot about perceptions of AI...",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7407865012054142977/",
"urn": "urn:li:activity:7407865012054142977"
}
]
}
Company Posts
Cost:10 credits / successful request.
This endpoint retrieves posts from a LinkedIn company page based on the provided company URL. The response includes details about the company’s posts, including text content, attachments, reactions, comments, and more.
Company posts endpoint
This endpoint allows you to get structured data of posts from a LinkedIn Company Profile.Required attributes
string
required
The LinkedIn company URL whose posts you want to retrieve.
Optional attributes
string
Alters the type of posts to be fetched.
all- The default behavior. Fetches all types of posts.articles- Fetch only articles posted by the company.documents- Fetch only document posts.
string
Use this parameter to paginate through results. Use the cursor returned from your previous request.
Response
{
"cursor": "eyJjb3VudCI6MTAwLCJzdGFydCI6MTAwLCJ0b3RhbCI6MzY1...",
"total": 365,
"message": [
{
"attachments": [
{
"subtitle": "Google",
"title": "Gemini 3 Flash is rolling out now — hear from the Googlers who helped make it",
"type": "Article",
"url": "https://www.linkedin.com/pulse/gemini-3-flash...",
"urn": "urn:li:linkedInArticle:7407901974379008000"
}
],
"author": {
"followers": 39995212,
"logo": "https://media.licdn.com/dms/image/...",
"name": "Google",
"public_identifier": "google",
"type": "Company",
"url": "https://www.linkedin.com/company/google",
"urn": "urn:li:fsd_company:1441"
},
"comments": 48,
"created_at": "2025-12-20T16:06:30.020Z",
"is_repost": false,
"likes": 624,
"mentions": [],
"reactions": [
{ "count": 552, "reaction_type": "LIKE" },
{ "count": 33, "reaction_type": "PRAISE" },
{ "count": 21, "reaction_type": "EMPATHY" }
],
"shared_post": null,
"shares": 52,
"text": "This week, we expanded the Gemini 3 model family with the release of Gemini 3 Flash...",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7408175976368472064/",
"urn": "urn:li:activity:7408175976368472064"
},
{
"attachments": [],
"author": {
"background_image": null,
"first_name": "Kent",
"followers": null,
"image_url": "https://media.licdn.com/dms/image/...",
"last_name": "Walker",
"occupation": "President, Global Affairs at Google & Alphabet",
"public_identifier": "kent-walker-5963bb198",
"type": "Member",
"url": "https://www.linkedin.com/in/kent-walker-5963bb198",
"urn": "urn:li:fsd_profile:ACoAAC5VbIIBM7MqyDczwsY_EinOMS5UTJRqITo"
},
"comments": 24,
"created_at": "2025-12-19T19:30:50.350Z",
"is_repost": true,
"likes": 295,
"mentions": [],
"original_post_urn": "urn:li:ugcPost:7407823617180340224",
"reactions": [
{ "count": 254, "reaction_type": "LIKE" },
{ "count": 21, "reaction_type": "INTEREST" }
],
"repost_user": {},
"shared_post": null,
"shares": 29,
"text": "As we close out another year, I've been thinking a lot about perceptions of AI...",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7407865012054142977/",
"urn": "urn:li:activity:7407865012054142977"
}
]
}
How far back posts go
A company page’s posts go back about 12 months. Older posts are not available, and thecursor is empty once the feed reaches that point.
Empty and failed responses
- A company page with no posts answers
200with"message": []and no cursor, charged as a normal request. - A company page that does not exist answers HTTP
404with"message": "Company does not exist."and"retryable": false. The lookup ran, so it is charged like a successful request; repeating it gives the same answer. - When the posts could not be fetched for a temporary reason, the response is HTTP
400with"status": "failed", amessagestring and arequest_id. Nothing is charged; retry later.
The company posts model
Properties
string
Pagination token for fetching more posts. Use this in the next request to get the next page.
null when there are no more posts. A page can hold fewer than 100 posts and still be the last one (posts LinkedIn no longer serves are dropped), so read the end of the feed from cursor, not from the page length.integer
How many posts LinkedIn reports for the company’s feed. LinkedIn serves roughly the last twelve months of a company’s posts, so this can be lower than the number the company has ever published.
null when the count is not available.array
List of company posts.
Show Post object
Show Post object
Post Content
string
Text content of the post.
string
LinkedIn URL of the post.
string
Unique LinkedIn URN identifier for the post.
string
ISO 8601 timestamp when the post was created.
Post Type
boolean
Whether this post is a repost/share of another post.
string
URN of the original post (if this is a repost).
string
LinkedIn URL of the original post (if this is a repost). A repost is its own post with its own URL, so use this URL, not
url, to read the original’s reactions with Post Reactions.object
Information about the user who reposted (for company reposts of member content). Often an empty object.
object
The original post, when the company quoted it with commentary of its own. A plain repost has no commentary: the post itself carries the original’s content and
shared_post is null. Either way, original_post_urn names the original.Post Author
object
Details about the post author (company or person).
Show Author object - Company
Show Author object - Company
Show Author object - Member
Show Author object - Member
string
Author’s first name (for member posts).
string
Author’s last name (for member posts).
string
Author’s LinkedIn headline.
string
Author type (“Member”).
string
LinkedIn profile URL.
string
Profile vanity URL identifier.
string
Profile picture URL.
string
Profile background image URL.
number
Number of profile followers (may be null).
string
Profile URN identifier.
Attachments
array
List of media attachments (images, videos, articles, documents).
Engagement Metrics
number
Total number of likes/reactions.
number
Number of comments on the post.
number
Number of times the post was shared/reposted.
array
Mentions
array
List of @mentioned users or companies in the post.
Was this page helpful?