Get profile activity
Get one profile's authored posts, comments, reactions, or reposts, one kind per call.
POST
https://api.up2data.ai/v1/profiles/activityIdentify the profile with url or urn (preferred, when known). Exactly one kind per request: posts (published), comments (left on others' posts), reactions (given), or reposts. Comment and reaction results can be empty or truncated when the member hides activity, or LinkedIn's roughly 360-day visibility window applies.
Warning
Each kind is a separate LinkedIn scrape and a separate charge. There is no combined "all" mode.
Info
Send many as batch operation items (operation profiles.activity); up to 500 results per item, billed at the same per-25-row-page rate as the sync call. See the batch endpoint.
#Request
| Field | Type | Notes |
|---|---|---|
url | string | Profile URL. Provide url or urn. |
urn | string | LinkedIn member URN. Preferred when known. Provide url or urn. |
kindrequired | string | One of: posts, comments, reactions, reposts. |
posted_within | string | Default all. Enum: 24h, week, month, all. Applies when kind is posts. |
page | integer | Default 1. Up to the 100 most recent items are available across pages. |
per_page | integer | Default 25. 1 to 25. Up to the 100 most recent items are available across pages. |
pagination_token | string | Required for pages after the first, when returned by a prior response. |
#Call it
curl -X POST "https://api.up2data.ai/v1/profiles/activity" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://linkedin.com/in/janedoe",
"kind": "posts",
"posted_within": "month"
}'import requests
url = "https://api.up2data.ai/v1/profiles/activity"
headers = {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
}
payload = {
"url": "https://linkedin.com/in/janedoe",
"kind": "posts",
"posted_within": "month"
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())const url = "https://api.up2data.ai/v1/profiles/activity";
const headers = {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
};
const body = {
"url": "https://linkedin.com/in/janedoe",
"kind": "posts",
"posted_within": "month"
};
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/profiles/activity"
body := bytes.NewBufferString(`{
"url": "https://linkedin.com/in/janedoe",
"kind": "posts",
"posted_within": "month"
}`)
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": {
"kind": "posts", "url": "https://www.linkedin.com/in/janedoe", "urn": "ACoAABOPHB8BM6example",
"posts": [{ "url": "https://linkedin.com/posts/janedoe_launch-activity-7215", "urn": "7267273010393358336", "share_urn": "7315779815297421316", "author": {"name": "Jane Doe", "url": "https://linkedin.com/in/janedoe", "headline": "CEO at Example"}, "text": "Today we are launching a new way to run outbound on live profile data.", "posted_at": "2026-07-06T18:45:00Z", "reactions_count": 1204, "comments_count": 187, "reposts_count": 96, "scraped_at": "2026-07-08T12:00:00Z", "media": [{ "type": "image", "url": "https://media.licdn.com/dms/image/v2/D4E22AQExample/feedshare-shrink_2048_1536/0/launch" }] }],
"pagination": {"page": 1, "per_page": 25, "returned": 1, "has_more": false, "total_estimate": 1}, "pagination_token": null, "scraped_at": "2026-07-08T12:00:00Z"
},
"meta": { "creditsUsed": 2, "creditsRemaining": 98417, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 2100 }
}{
"data": {
"kind": "comments", "url": "https://www.linkedin.com/in/janedoe", "urn": "ACoAABOPHB8BM6example",
"comments": [{ "text": "Congrats on the launch - this is the workflow our outbound team has been missing.", "posted_at": "2026-07-05T14:22:00Z", "replies_count": 0, "commenter": {"url": "https://www.linkedin.com/in/janedoe", "full_name": "Jane Doe", "headline": "VP Marketing at Acme Corp", "urn": "ACoAABOPHB8BM6example"}, "target_post": { "url": "https://linkedin.com/posts/acme_announcement-activity-7210", "urn": "7267273010393358000", "text_snippet": "We are thrilled to announce a new way to run outbound on live profile data.", "author": {"name": "Acme Corp", "url": "https://linkedin.com/company/acme", "headline": "B2B software"} } }],
"pagination": {"page": 1, "per_page": 25, "returned": 25, "has_more": true, "total_estimate": 60}, "pagination_token": "eyJwYWdlIjoyfQ.signature", "scraped_at": "2026-07-08T12:00:00Z"
},
"meta": {"creditsUsed": 2, "creditsRemaining": 98417, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 2400}
}{
"data": {
"kind": "reactions", "url": "https://www.linkedin.com/in/janedoe", "urn": "ACoAABOPHB8BM6example",
"reactions": [{ "reaction_type": "PRAISE", "reacted_at": "2026-07-06T09:12:00Z", "reactor": {"url": "https://www.linkedin.com/in/janedoe", "full_name": "Jane Doe", "headline": "VP Marketing at Acme Corp", "urn": "ACoAABOPHB8BM6example"}, "target_post": { "url": "https://linkedin.com/posts/acme_announcement-activity-7210", "urn": "7267273010393358000", "text_snippet": "We are thrilled to announce a new way to run outbound on live profile data.", "author": {"name": "Acme Corp", "url": "https://linkedin.com/company/acme", "headline": "B2B software"} } }],
"pagination": {"page": 1, "per_page": 25, "returned": 25, "has_more": true, "total_estimate": 60}, "pagination_token": "eyJwYWdlIjoyfQ.signature", "scraped_at": "2026-07-08T12:00:00Z"
},
"meta": {"creditsUsed": 2, "creditsRemaining": 98417, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 1900}
}{
"data": {
"kind": "reposts", "url": "https://www.linkedin.com/in/janedoe", "urn": "ACoAABOPHB8BM6example",
"reposts": [{ "url": "https://linkedin.com/posts/janedoe_share-activity-7218", "urn": "7267273010393358444", "share_urn": "7315779815297421444", "author": {"name": "Acme Corp", "url": "https://linkedin.com/company/acme", "headline": "B2B software"}, "text": "We are thrilled to announce a new way to run outbound on live profile data.", "posted_at": "2026-07-05T11:00:00Z", "reactions_count": 842, "comments_count": 63, "reposts_count": 41, "scraped_at": "2026-07-08T12:00:00Z", "media": [{ "type": "image", "url": "https://media.licdn.com/dms/image/v2/D4E22AQExample/feedshare-shrink_2048_1536/0/announce" }] }],
"pagination": {"page": 1, "per_page": 25, "returned": 1, "has_more": false, "total_estimate": 1}, "pagination_token": null, "scraped_at": "2026-07-08T12:00:00Z"
},
"meta": {"creditsUsed": 2, "creditsRemaining": 98417, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 1800}
}#Errors
| Status | Type | When | Billed |
|---|---|---|---|
| 400 | invalid_request | Malformed body, unknown field, or bad URL format. | No |
| 401 | invalid_api_key | Missing, malformed, or revoked key. | No |
| 402 | insufficient_credits | Balance can't cover the call. | No |
| 422 | unprocessable_target | Target not found, private, deleted, or unreachable. | 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.