Skip to content
ScrapeField

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.

3–7 credits
GEThttps://api.scrapefield.com/v1/linkedin/posts
Try itno key needed3–7 credits on a real call · 0 here
https://api.scrapefield.com/v1/linkedin/posts?company_url=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fferrari%2F

In 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

Parameters
ParameterWhat it does
url
string · one of the author ids
A person's public profile URL. Their latest posts, on one page.
company_url
string · one of the author ids
A company page URL. Up to 7 pages of 10.
query
string · one of the author ids
Words in the post: every public post that has them, newest first.
group_url
string · one of the author ids
A group's URL: the posts in that group. Not available yet: a call that uses it is refused and not charged.
posted_within
string
Only posts from the last day, week or month.
day · week · month
limit
integer
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
string
The meta.next_cursor from the previous page. Omit for the first page.
fresh
boolean
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.

Fields
FieldWhat it is
urn
string
LinkedIn's id for the post, e.g. urn:li:activity:7243….
url
URL
The post.
author
object
Who posted it: a person or a company page.
author.name
string · or null
null where the source names only the page.
author.type
string, one of
Whether a person or a company page posted it.
person · company
author.headline
string · or null
The person's headline, or the company's follower line.
author.url
URL
Their profile or company page.
text
string · or null
The post's text.
published_at
time, ISO 8601 UTC · or null
null where the source does not say.
reaction_count
integer · or null
All reactions together. null where the source does not give the counts.
reactions
object · or null
By kind, where LinkedIn shows the breakdown.
reactions.like
integer
Like reactions.
reactions.celebrate
integer
Celebrate reactions.
reactions.support
integer
Support reactions.
reactions.love
integer
Love reactions.
reactions.insightful
integer
Insightful reactions.
reactions.funny
integer
Funny reactions.
comment_count
integer · or null
How many comments. null where the source does not give it.
repost_count
integer · or null
How many reposts. null where the source does not give it.
images
array of URLs
Image URLs, in order.
video
object · or null
A video in the post.
video.url
URL
The video file.
video.duration
integer · or null
Seconds.
document
object · or null
An attached PDF or slide deck.
document.title
string
The document's title.
document.page_count
integer · or null
How many pages it has.
article
object · or null
A shared link.
article.title
string · or null
The title the link's preview shows.
article.url
URL
Where the link leads.
is_repost
boolean · or null
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.