Get the people who reacted to or reposted a LinkedIn post
List who reacted to a LinkedIn post, with each reaction type, and who reposted it, by post URL. 100 credits a page of reactors, 50 a page of reposts.
To see who engaged with a LinkedIn post, call GET /v1/linkedin/post/reactions with the post's url for the people who reacted, and GET /v1/linkedin/post/reposts with the same url for the people who reposted it. Reactions return each person's name, headline, profile URL and the reaction they left (like, praise, empathy and so on). Reposts return each reshare with the resharer and any text they added. A page of reactors costs 100 credits; a page of reposts costs 50. For the people who commented, use GET /v1/linkedin/post/comments (50 credits a page).
Cost
post/reactions is metered at 100–500 credits a page. A plain page costs 100 credits. Adding include=profile joins each row to the member's profile, so the call holds up to 500 credits when it starts and you're charged what it used. Send dry_run=1 for a free quote. post/reposts is 50 credits per page of 10. Asking for the same page again within 6 hours is answered from the shared cache for 2 credits. Failed calls and empty results are free.
How do I find the post URL?
The url has to carry the post's activity ID, in one of two forms:
https://www.linkedin.com/feed/update/urn:li:activity:7501466755261820928https://www.linkedin.com/posts/<slug>-activity-<id>-<code>
On LinkedIn, open the post's menu and choose "Copy link to post". If you got the post from another endpoint (profile/posts, company/posts, search/posts), copy its post.url field. Don't rebuild the URL from post.id, which is not always the activity ID.
Make the request
POST_URL="https://www.linkedin.com/feed/update/urn:li:activity:7501466755261820928"
curl -G "https://api.insightsocial.app/v1/linkedin/post/reactions" \
--data-urlencode "url=$POST_URL" \
-H "x-api-key: $INSIGHTSOCIAL_API_KEY"
curl -G "https://api.insightsocial.app/v1/linkedin/post/reposts" \
--data-urlencode "url=$POST_URL" \
-H "x-api-key: $INSIGHTSOCIAL_API_KEY"What comes back
Real responses from 2026-10-14, shortened: one or two rows instead of a full page, long URLs and cursors cut, and private members replaced with placeholders.
{
"success": true,
"endpoint": "/v1/linkedin/post/reactions",
"schema_version": "2",
"data": {
"items": [
{
"author": {
"id": "ACoAAD7nmw…",
"username": null,
"display_name": "Example User",
"avatar_url": "https://media.licdn.com/dms/image/v2/…",
"bio": "Data analyst | Business intelligence",
"verified": null,
"followers": null,
"url": "https://www.linkedin.com/in/ACoAAD7nmw…",
"ext": { "urn": "ACoAAD7nmw…", "reaction_type": "LIKE", "member_id": "1055365895" }
}
}
],
"total": null,
"truncated": null
},
"pagination": { "next_cursor": "v2c.BLUP7GMD…", "has_more": true, "page_size": 44 },
"unavailable": [
"items[].author.verified",
"items[].author.followers",
"items[].author.following",
"items[].author.joined_at"
],
"credits_used": 100
}{
"success": true,
"endpoint": "/v1/linkedin/post/reposts",
"schema_version": "2",
"data": {
"items": [
{
"post": {
"id": "7511864524241833985",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7511864524241833985",
"content": { "text": null },
"author": { "id": "ACoAACZmjG…", "username": "example_user", "display_name": "Example User" },
"engagement": { "likes": 3758, "comments": 349, "shares": 318 },
"published_at": null,
"ext": { "author_type": "user", "is_repost_quote": false }
}
},
{
"post": {
"id": "7509225672431562753",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7509225672431562753",
"content": { "text": "This long and invasive pathways belongs to the past. Today, a simple blood test…" },
"author": { "id": "28438218", "username": "roche-belux", "display_name": "Roche Belgium & Luxembourg" },
"engagement": { "likes": 5, "comments": 0, "shares": 0 },
"published_at": null,
"ext": { "author_followers": 15816, "author_type": "company", "is_repost_quote": true, "published_at_precision": "week" }
}
}
],
"total": 318,
"truncated": null
},
"pagination": { "next_cursor": "v2c.6dxQa3CY…", "has_more": true, "page_size": 10 },
"unavailable": ["items[].post.published_at"],
"credits_used": 50
}| Field | What it holds |
|---|---|
reactions: data.items[].author | One person or page that reacted, in the shared author shape: name, headline (bio), avatar, profile URL. |
reactions: author.ext.reaction_type | The reaction they left: LIKE, PRAISE, EMPATHY, APPRECIATION, INTEREST and others. |
reactions: author.ext.member_id | LinkedIn's numeric member ID. Company pages that react have no member_id; their url is the company page. |
reposts: data.items[].post | One reshare in the shared post shape, with the resharer in post.author. |
reposts: post.ext.is_repost_quote | true when the resharer added their own text. Then content.text is that text and engagement counts their reshare. |
reposts: data.total | How many reposts the post has. 318 here, the same as the original post's share count. |
reposts: post.ext.author_type | user for a member, company for a company page. |
How do I get every reactor and reposter?
Both endpoints paginate. Send pagination.next_cursor back as cursor, with the same url, and stop when pagination.has_more is false. Each reactions page costs 100 credits (more with include=profile); each reposts page costs 50.
import os
import requests
BASE = "https://api.insightsocial.app/v1"
HEADERS = {"x-api-key": os.environ["INSIGHTSOCIAL_API_KEY"]}
params = {"url": "https://www.linkedin.com/feed/update/urn:li:activity:7501466755261820928"}
people = []
for _ in range(20):
body = requests.get(f"{BASE}/linkedin/post/reactions", params=params, headers=HEADERS, timeout=120).json()
people += [item["author"] for item in body["data"]["items"]]
if not body["pagination"]["has_more"]:
break
params["cursor"] = body["pagination"]["next_cursor"]To list only one kind of reaction, add type (like, praise, empathy, appreciation, interest, or all). See Pagination for the full rules.
What are the limits?
- Reactor handles. Most reactor rows have
username: null, andurlpoints to the member's ID-based profile link (/in/ACoAA…) rather than their vanity handle. The link still opens the profile. - Follower counts.
followers,following,verifiedandjoined_atarenullon reactor rows, which means unknown, not zero. Addinclude=profileto fill the exact follower count and connection count from each member's profile, at a higher price. - No reactions total.
data.totalisnullonpost/reactions. The post's like, comment and share counts are onGET /v1/linkedin/post. - Plain reposts carry the original's numbers. On a repost without added text,
content.textisnullandengagementrepeats the original post's likes, comments and shares. Only quote reposts (is_repost_quote: true) have their own text and counts. - No repost dates.
published_atisnullon every repost row. - Repeat reposters. The same member can appear more than once if they reshared the post several times. Deduplicate on
post.author.idif you want people, not reshares.
What can I build with it?
- Lead lists from engagement. The people who react to a competitor's or a thought leader's post are an audience already interested in the topic. Their headlines tell you role and company.
- Campaign reach reports. For your own post, count reactions by
reaction_typeand list the company pages and members who reshared it with their own commentary. - Advocate tracking. Run the reposts endpoint across a company's recent posts to see which employees and partners reshare most often.
Related
GET /v1/linkedin/post/reactionsreference: every parameter and field.GET /v1/linkedin/post/repostsreference: every parameter and field.GET /v1/linkedin/post/comments: the people who commented on the post.- LinkedIn endpoints: everything the API covers on LinkedIn.
Get the employees of a LinkedIn company
List the LinkedIn members who work at a company, with headline, location and profile URL, by company ID. 100 credits per page of 10.
Check when a LinkedIn member was last active
Find when a LinkedIn member last showed public activity, such as a post, with an exact timestamp, by profile URL. 50 credits per call.