Get post reactions
Inbound engagement on a post - who reacted, filterable by reaction type.
POST
https://api.up2data.ai/v1/posts/engagement/reactionsIdentify the post with urn (preferred) or url. Pass reaction_type to list only one kind of reaction. LinkedIn does not expose when a reaction was given, so reacted_at is usually null.
Info
Inbound engagement on a post. For what a profile reacted to elsewhere, use profile activity - that is a separate scrape.
Info
Send many as batch operation items (operation posts.engagement.reactions); up to 1,000 reactions per item. See the batch endpoint.
#Request
| Field | Type | Notes |
|---|---|---|
urn | string | Post activity URN (numeric). Preferred over url. Provide url or urn. |
url | string | Public post URL. Provide url or urn. |
share_urn | string | Share URN - pass when paginating if returned by a prior page. |
page | integer | Default 1. |
per_page | integer | Default 25. 1 to 25. |
max_results | integer | Caps how many items the first page returns. Defaults to per_page. |
pagination_token | string | Required for pages after the first, when returned by a prior response. |
reaction_type | string | Default ALL. Enum: ALL, LIKE, EMPATHY, APPRECIATION, INTEREST, PRAISE, ENTERTAINMENT. |
#Call it
curl -X POST "https://api.up2data.ai/v1/posts/engagement/reactions" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urn": "7267273010393358336",
"reaction_type": "ALL",
"page": 1
}'import requests
url = "https://api.up2data.ai/v1/posts/engagement/reactions"
headers = {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
}
payload = {
"urn": "7267273010393358336",
"reaction_type": "ALL",
"page": 1
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())const url = "https://api.up2data.ai/v1/posts/engagement/reactions";
const headers = {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
};
const body = {
"urn": "7267273010393358336",
"reaction_type": "ALL",
"page": 1
};
const response = await fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
});
const data = await response.json();
console.log(data);package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.up2data.ai/v1/posts/engagement/reactions"
body := bytes.NewBufferString(`{
"urn": "7267273010393358336",
"reaction_type": "ALL",
"page": 1
}`)
req, err := http.NewRequest("POST", url, body)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
respBody, _ := io.ReadAll(resp.Body)
fmt.Println(string(respBody))
}#Response
{
"data": {
"reactions": [{
"reaction_type": "LIKE",
"reacted_at": null,
"reactor": { "url": "https://linkedin.com/in/janedoe", "full_name": "Jane Doe", "headline": "VP Marketing at Acme Corp", "urn": "ACoAABOPHB8BM6example" }
}],
"pagination": { "returned": 1, "max_results": 25, "pages_scraped": 1, "page": 1, "per_page": 25, "has_more": true, "total_estimate": 93 },
"pagination_token": "eyJwYWdlIjoyfQ.signature",
"urn": "7267273010393358336",
"share_urn": "7267273010393358336"
},
"meta": { "creditsUsed": 1, "creditsRemaining": 98419, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 2100 }
}#Errors
| Status | Type | When | Billed |
|---|---|---|---|
| 400 | invalid_request | Malformed body, unknown field, bad URL format, or a pagination_token that does not match the request. | No |
| 401 | invalid_api_key | Missing, malformed, or revoked key. | No |
| 402 | insufficient_credits | Balance can't cover a full page. | No |
| 422 | unprocessable_target | Post not found, private, deleted, or unreachable. Billed as 1 credit. | Yes |
| 429 | rate_limited | Over the 300 requests/min per-key limit. Honor Retry-After. | No |
| 500 | internal_error | Something broke on the server side. | No |
| 504 | upstream_timeout | The live scrape didn't complete in time. | No |
See the Errors guide for every error type this version can return.