Get or search LinkedIn posts
Fetch recent posts by one person or company, or with query every public post with those words: text, images, video, document or article, and published_at. A person's posts also carry reaction_count (with the breakdown by kind), comment_count and repost_count; a company's carry the text and the date, with the counts null, at a much lower price. For the counts on one of them, call linkedin/post.
https://api.scrapefield.com/v1/linkedin/postshttps://api.scrapefield.com/v1/linkedin/posts?company_url=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fferrari%2FIn your code
const params = new URLSearchParams({
"url": "https://www.linkedin.com/in/example-person"
});
const res = await fetch(`https://api.scrapefield.com/v1/linkedin/posts?${params}`, {
headers: { Authorization: `Bearer ${process.env.SCRAPEFIELD_KEY}` },
});
const { data, meta } = await res.json();
console.log(data, meta.credits_charged);Parameters
| Parameter | What it does |
|---|---|
url | A person's public profile URL. Their latest posts, on one page. |
company_url | A company page URL. Up to 7 pages of 10. |
query | Words in the post: every public post that has them, newest first. |
group_url | A group's URL: the posts in that group. Not available yet: a call that uses it is refused and not charged. |
posted_within | Only posts from the last day, week or month. day · week · month |
limit | At most this many results, 1–100. A page can hold fewer while next_cursor is set: read until it is null.1–100, default 20 |
cursor | The meta.next_cursor from the previous page. Omit for the first page. |
fresh | Skip the cache and fetch now. Charged normally. Not available on trial credits — buy any pack to unlock it. default false |
Response
Returns an array of linkedin_post. This is the demo’s answer, the one the playground above returns, in full rather than abbreviated — including the fields that come back null, because a field is null when the platform does not show it and you should know which ones those are before you build on them. A call with your key returns the account you ask for.
{
"data": [
{
"urn": "urn:li:activity:7266942028581543701",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7266942028581543701/",
"author": {
"name": null,
"type": "company",
"headline": null,
"url": "https://www.linkedin.com/company/blue-door-coffee/"
},
"text": "Hiring: two backend engineers, remote in Europe. The stack is boring on purpose.",
"published_at": "2026-08-05T00:33:47.000Z",
"reaction_count": null,
"reactions": null,
"comment_count": null,
"repost_count": null,
"images": [
"https://cdn.example/li/p/A8YNauaIktd3U1.jpg"
],
"video": null,
"document": null,
"article": null,
"is_repost": null
},
{
"urn": "urn:li:activity:7276166520555989301",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7276166520555989301/",
"author": {
"name": null,
"type": "company",
"headline": null,
"url": "https://www.linkedin.com/company/blue-door-coffee/"
},
"text": "A year of running on-call with four people. What worked, what we stopped doing, and the one alert we kept.",
"published_at": "2026-06-19T07:32:46.000Z",
"reaction_count": null,
"reactions": null,
"comment_count": null,
"repost_count": null,
"images": [],
"video": null,
"document": null,
"article": null,
"is_repost": null
}
],
"meta": {
"request_id": "req_7f3ac1e94b2d40f8a1c6e5d2",
"credits_charged": 7,
"credits_remaining": 74218,
"cached": false,
"fetched_at": "2026-09-20T09:12:03Z",
"next_cursor": "eyJwIjoxLCJzIjoiYTNmOSJ9"
}
}Fields of linkedin_post
A LinkedIn post. Named after the words LinkedIn prints, since LinkedIn has no official data API.
| Field | What it is |
|---|---|
urn | LinkedIn's id for the post, e.g. urn:li:activity:7243…. |
url | The post. |
author | Who posted it: a person or a company page. |
author.name | null where the source names only the page. |
author.type | Whether a person or a company page posted it. person · company |
author.headline | The person's headline, or the company's follower line. |
author.url | Their profile or company page. |
text | The post's text. |
published_at | null where the source does not say. |
reaction_count | All reactions together. null where the source does not give the counts. |
reactions | By kind, where LinkedIn shows the breakdown. |
reactions.like | Like reactions. |
reactions.celebrate | Celebrate reactions. |
reactions.support | Support reactions. |
reactions.love | Love reactions. |
reactions.insightful | Insightful reactions. |
reactions.funny | Funny reactions. |
comment_count | How many comments. null where the source does not give it. |
repost_count | How many reposts. null where the source does not give it. |
images | Image URLs, in order. |
video | A video in the post. |
video.url | The video file. |
video.duration | Seconds. |
document | An attached PDF or slide deck. |
document.title | The document's title. |
document.page_count | How many pages it has. |
article | A shared link. |
article.title | The title the link's preview shows. |
article.url | Where the link leads. |
is_repost | Whether this is someone else's post reposted without comment. null where the source does not say. |
What it costs
7 credits (3 with company_url) per successful call, whether we fetch it or serve it from cache — you pay for the answer, not for how we produced it. Responses are cached for 3 hours and a cached one tells you when the data was actually fetched. A call we fail costs 0 and is refunded automatically.
On the smallest pack that is $5.46 per 1,000 calls; on the largest, $3.08. The full table.
Questions
How much does the LinkedIn posts API cost?
From 3 to 7 credits a call, depending on what you ask for: $2.34 to $5.46 per 1,000 calls on the smallest pack, $1.32 to $3.08 on the largest. A call that fails costs nothing, and the refund is automatic. A cached answer costs the same as a fresh one. Credits are bought in packs and never expire; there is no plan.
Do I need a LinkedIn account, a login or cookies?
No. You need a key from us and nothing from LinkedIn. We never take a customer's login, cookies or session, at any price, and no account of yours is ever at risk.
Can I try it without signing up?
Yes. Add demo=true and leave the key out, or press Send request in the playground on this page. The demo answers with a real answer about Ferrari, captured once a week, in exactly the shape a live call returns, whatever you ask, and charges nothing.
How fresh is the data?
An answer is kept for up to 3 hours, and a cached one says when it was fetched, in meta.fetched_at. Add fresh=true to fetch it again now, at the same price; it needs any purchase, not the trial.
What does it return?
A list of linkedin_post objects. Its fields are named after the words LinkedIn prints, since LinkedIn has no official data API. A field is null when LinkedIn does not show it, never missing. Every field is described on this page.
How do I get more than one page?
Pass meta.next_cursor back as cursor, and stop when it is null. Each page is a call, priced the same. A cursor lasts as long as the answer it belongs to is cached.
Can an AI agent call it?
Yes: it is the MCP tool get_linkedin_posts on our MCP server, with the same parameters, answer and price. Without a key, the tool answers from the demo.