curl --request GET \
--url https://api.fetchin.io/api/v1/post/reposts \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.fetchin.io/api/v1/post/reposts"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.fetchin.io/api/v1/post/reposts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fetchin.io/api/v1/post/reposts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fetchin.io/api/v1/post/reposts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fetchin.io/api/v1/post/reposts")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fetchin.io/api/v1/post/reposts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"reposts": [
{
"urn": "urn:li:activity:7524794262320930816",
"text": "",
"createdAt": "2026-11-07T11:25:56.054Z",
"shareUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7524794262320930816/",
"author": {
"id": "urn:li:fsd_profile:ACoAADDM0HYBgoe_A-liUdmDmN_ErRDPtCFlSXY",
"type": "profile",
"name": "Jane Doe",
"headline": "",
"profilePictureUrl": "https://media.licdn.com/dms/image/...",
"picture": {
"url": "https://media.licdn.com/dms/image/...",
"width": 800,
"height": 800
},
"profileUrl": "https://www.linkedin.com/in/jane-doe/",
"publicId": "jane-doe",
"profileId": "ACoAADDM0HYBgoe_A-liUdmDmN_ErRDPtCFlSXY"
}
},
{
"urn": "urn:li:activity:7524750673163350016",
"text": "",
"createdAt": "2026-11-07T08:31:01.120Z",
"shareUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7524750673163350016/",
"author": {
"id": "urn:li:fsd_company:8736",
"type": "company",
"name": "Example Foundation",
"headline": "",
"profilePictureUrl": "https://media.licdn.com/dms/image/...",
"picture": {
"url": "https://media.licdn.com/dms/image/...",
"width": 400,
"height": 400
},
"profileUrl": "https://www.linkedin.com/company/example-foundation/",
"companyId": "8736",
"universalName": "example-foundation"
}
},
{
"urn": "urn:li:activity:7524706572808433665",
"text": "Witnessing the full spectrum of human life",
"createdAt": "2026-11-07T05:35:47.912Z",
"shareUrl": "https://www.linkedin.com/posts/john-smith_some-post-activity-7524706572808433665-NTDn",
"reactionCount": 3,
"commentCount": 1,
"author": {
"id": "urn:li:fsd_profile:ACoAADNOiWsBjnmr38kWOh1yLiOYZiOMofT-YAE",
"type": "profile",
"name": "John Smith",
"headline": "CEO at Example Corp",
"profilePictureUrl": "https://static.licdn.com/sc/h/1c5u578iilxfi4m4dvc4q810q",
"profileUrl": "https://www.linkedin.com/in/john-smith/",
"memberId": "860785003",
"publicId": "john-smith",
"profileId": "ACoAADNOiWsBjnmr38kWOh1yLiOYZiOMofT-YAE"
}
}
],
"total": 145,
"hasMore": true
}
{
"error": "Missing postUrlOrUrn parameter",
"code": "MISSING_PARAMETER"
}
{
"error": "Invalid API key",
"code": "INVALID_API_KEY"
}
{
"error": "Unable to find post from url",
"code": "POST_NOT_FOUND"
}
{
"error": "Quota exceeded. Upgrade your plan or wait for renewal.",
"code": "QUOTA_EXHAUSTED",
"details": {
"creditsRemaining": 0,
"subscriptionCreditsRemaining": 0,
"paygCreditsRemaining": 0,
"buyCreditsUrl": "https://fetchin.io/credits"
}
}
{
"error": "Internal server error",
"code": "INTERNAL_ERROR"
}
{
"error": "Service temporarily unable to serve this request. Please retry.",
"code": "SERVICE_UNAVAILABLE"
}
Get Post Reposts
Fetch who reposted a professional post, when, and what they wrote with it
curl --request GET \
--url https://api.fetchin.io/api/v1/post/reposts \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.fetchin.io/api/v1/post/reposts"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.fetchin.io/api/v1/post/reposts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fetchin.io/api/v1/post/reposts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fetchin.io/api/v1/post/reposts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fetchin.io/api/v1/post/reposts")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fetchin.io/api/v1/post/reposts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"reposts": [
{
"urn": "urn:li:activity:7524794262320930816",
"text": "",
"createdAt": "2026-11-07T11:25:56.054Z",
"shareUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7524794262320930816/",
"author": {
"id": "urn:li:fsd_profile:ACoAADDM0HYBgoe_A-liUdmDmN_ErRDPtCFlSXY",
"type": "profile",
"name": "Jane Doe",
"headline": "",
"profilePictureUrl": "https://media.licdn.com/dms/image/...",
"picture": {
"url": "https://media.licdn.com/dms/image/...",
"width": 800,
"height": 800
},
"profileUrl": "https://www.linkedin.com/in/jane-doe/",
"publicId": "jane-doe",
"profileId": "ACoAADDM0HYBgoe_A-liUdmDmN_ErRDPtCFlSXY"
}
},
{
"urn": "urn:li:activity:7524750673163350016",
"text": "",
"createdAt": "2026-11-07T08:31:01.120Z",
"shareUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7524750673163350016/",
"author": {
"id": "urn:li:fsd_company:8736",
"type": "company",
"name": "Example Foundation",
"headline": "",
"profilePictureUrl": "https://media.licdn.com/dms/image/...",
"picture": {
"url": "https://media.licdn.com/dms/image/...",
"width": 400,
"height": 400
},
"profileUrl": "https://www.linkedin.com/company/example-foundation/",
"companyId": "8736",
"universalName": "example-foundation"
}
},
{
"urn": "urn:li:activity:7524706572808433665",
"text": "Witnessing the full spectrum of human life",
"createdAt": "2026-11-07T05:35:47.912Z",
"shareUrl": "https://www.linkedin.com/posts/john-smith_some-post-activity-7524706572808433665-NTDn",
"reactionCount": 3,
"commentCount": 1,
"author": {
"id": "urn:li:fsd_profile:ACoAADNOiWsBjnmr38kWOh1yLiOYZiOMofT-YAE",
"type": "profile",
"name": "John Smith",
"headline": "CEO at Example Corp",
"profilePictureUrl": "https://static.licdn.com/sc/h/1c5u578iilxfi4m4dvc4q810q",
"profileUrl": "https://www.linkedin.com/in/john-smith/",
"memberId": "860785003",
"publicId": "john-smith",
"profileId": "ACoAADNOiWsBjnmr38kWOh1yLiOYZiOMofT-YAE"
}
}
],
"total": 145,
"hasMore": true
}
{
"error": "Missing postUrlOrUrn parameter",
"code": "MISSING_PARAMETER"
}
{
"error": "Invalid API key",
"code": "INVALID_API_KEY"
}
{
"error": "Unable to find post from url",
"code": "POST_NOT_FOUND"
}
{
"error": "Quota exceeded. Upgrade your plan or wait for renewal.",
"code": "QUOTA_EXHAUSTED",
"details": {
"creditsRemaining": 0,
"subscriptionCreditsRemaining": 0,
"paygCreditsRemaining": 0,
"buyCreditsUrl": "https://fetchin.io/credits"
}
}
{
"error": "Internal server error",
"code": "INTERNAL_ERROR"
}
{
"error": "Service temporarily unable to serve this request. Please retry.",
"code": "SERVICE_UNAVAILABLE"
}
Endpoint
GET /api/v1/post/reposts
Authentication
Include your API key in the request header:X-API-Key: your-api-key-here
Parameters
https://www.linkedin.com/posts/username_some-post-slug-1234567890-abcdurn:li:activity:7287782484287606784urn:li:ugcPost:7287782484287606784urn:li:share:7287782484287606784
- Minimum: 1
- Maximum: 100
- Default: 50
- Default: 0
Response
Show Repost object
Show Repost object
type. Same shape as
author in Get Post Comments.Show Author object
Show Author object
profile for a member, company for a company page.urn:li:fsd_profile:<profileId> for a member,
urn:li:fsd_company:<companyId> for a company page.https://www.linkedin.com/in/<publicId>/ for a member, the company page
URL for a pagepicture.url, width, height,
largest rendition. Absent when they have no picture, which is how a
placeholder profilePictureUrl is told apart from a real one./in/<publicId>).ACoAA…), the same value as profileId in
Fetch Profile./company/<universalName>).sharesCount, which counts a few
reposts the list does not show, and a complete walk can end one or two short
of it.Example Request
curl -X GET "https://api.fetchin.io/api/v1/post/reposts?postUrlOrUrn=https://www.linkedin.com/posts/username_post-slug-1234567890-abcd&count=50" \
-H "X-API-Key: your-api-key-here"
const response = await fetch(
'https://api.fetchin.io/api/v1/post/reposts?postUrlOrUrn=urn:li:activity:7287782484287606784&count=50',
{
headers: {
'X-API-Key': 'your-api-key-here'
}
}
);
const data = await response.json();
console.log(data);
import requests
headers = {
'X-API-Key': 'your-api-key-here'
}
params = {
'postUrlOrUrn': 'urn:li:activity:7287782484287606784',
'count': 50
}
response = requests.get(
'https://api.fetchin.io/api/v1/post/reposts',
headers=headers,
params=params
)
data = response.json()
print(data)
<?php
$apiKey = 'your-api-key-here';
$postUrlOrUrn = 'urn:li:activity:7287782484287606784';
$count = 50;
$url = "https://api.fetchin.io/api/v1/post/reposts?postUrlOrUrn=" . urlencode($postUrlOrUrn) . "&count=" . $count;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . $apiKey
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
print_r($data);
?>
Example Response
{
"reposts": [
{
"urn": "urn:li:activity:7524794262320930816",
"text": "",
"createdAt": "2026-11-07T11:25:56.054Z",
"shareUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7524794262320930816/",
"author": {
"id": "urn:li:fsd_profile:ACoAADDM0HYBgoe_A-liUdmDmN_ErRDPtCFlSXY",
"type": "profile",
"name": "Jane Doe",
"headline": "",
"profilePictureUrl": "https://media.licdn.com/dms/image/...",
"picture": {
"url": "https://media.licdn.com/dms/image/...",
"width": 800,
"height": 800
},
"profileUrl": "https://www.linkedin.com/in/jane-doe/",
"publicId": "jane-doe",
"profileId": "ACoAADDM0HYBgoe_A-liUdmDmN_ErRDPtCFlSXY"
}
},
{
"urn": "urn:li:activity:7524750673163350016",
"text": "",
"createdAt": "2026-11-07T08:31:01.120Z",
"shareUrl": "https://www.linkedin.com/feed/update/urn:li:activity:7524750673163350016/",
"author": {
"id": "urn:li:fsd_company:8736",
"type": "company",
"name": "Example Foundation",
"headline": "",
"profilePictureUrl": "https://media.licdn.com/dms/image/...",
"picture": {
"url": "https://media.licdn.com/dms/image/...",
"width": 400,
"height": 400
},
"profileUrl": "https://www.linkedin.com/company/example-foundation/",
"companyId": "8736",
"universalName": "example-foundation"
}
},
{
"urn": "urn:li:activity:7524706572808433665",
"text": "Witnessing the full spectrum of human life",
"createdAt": "2026-11-07T05:35:47.912Z",
"shareUrl": "https://www.linkedin.com/posts/john-smith_some-post-activity-7524706572808433665-NTDn",
"reactionCount": 3,
"commentCount": 1,
"author": {
"id": "urn:li:fsd_profile:ACoAADNOiWsBjnmr38kWOh1yLiOYZiOMofT-YAE",
"type": "profile",
"name": "John Smith",
"headline": "CEO at Example Corp",
"profilePictureUrl": "https://static.licdn.com/sc/h/1c5u578iilxfi4m4dvc4q810q",
"profileUrl": "https://www.linkedin.com/in/john-smith/",
"memberId": "860785003",
"publicId": "john-smith",
"profileId": "ACoAADNOiWsBjnmr38kWOh1yLiOYZiOMofT-YAE"
}
}
],
"total": 145,
"hasMore": true
}
{
"error": "Missing postUrlOrUrn parameter",
"code": "MISSING_PARAMETER"
}
{
"error": "Invalid API key",
"code": "INVALID_API_KEY"
}
{
"error": "Unable to find post from url",
"code": "POST_NOT_FOUND"
}
{
"error": "Quota exceeded. Upgrade your plan or wait for renewal.",
"code": "QUOTA_EXHAUSTED",
"details": {
"creditsRemaining": 0,
"subscriptionCreditsRemaining": 0,
"paygCreditsRemaining": 0,
"buyCreditsUrl": "https://fetchin.io/credits"
}
}
{
"error": "Internal server error",
"code": "INTERNAL_ERROR"
}
{
"error": "Service temporarily unable to serve this request. Please retry.",
"code": "SERVICE_UNAVAILABLE"
}
Errors
See Error Handling for the full list of error codes and recommended handling.400—MISSING_PARAMETER,INVALID_PARAMETER,INVALID_URN401—INVALID_API_KEY404—POST_NOT_FOUND402—QUOTA_EXHAUSTED429—RATE_LIMITED500—INTERNAL_ERROR503—SERVICE_UNAVAILABLE
200 with an empty reposts list. So does a
post URN that does not exist: the source answers both the same way.
Pagination
To fetch all reposts of a post, use offset pagination:- Make an initial request with
start=0 - If
hasMoreistrue, incrementstartbycountin your next request - Continue until
hasMoreisfalse
async function fetchAllReposts(postUrlOrUrn) {
const allReposts = [];
let start = 0;
const count = 100;
let hasMore = true;
while (hasMore) {
const params = new URLSearchParams({ postUrlOrUrn, count: String(count), start: String(start) });
const response = await fetch(
`https://api.fetchin.io/api/v1/post/reposts?${params}`,
{ headers: { 'X-API-Key': 'your-api-key-here' } }
);
const data = await response.json();
allReposts.push(...data.reposts);
hasMore = data.hasMore;
start += count;
}
return allReposts;
}
Notes
count parameter value. Errors are free — with one exception: a 404 not found costs 1 credit. See Quotas.author.publicId (or author.profileUrl) to
Fetch Profile.Authorizations
Query Parameters
Professional post URL or URN: urn:li:activity:<id>, urn:li:ugcPost:<id>, urn:li:share:<id>, or any post URL containing one.
"https://www.linkedin.com/posts/username_post-slug-1234567890-abcd"
Number of reposts to fetch (default: 50)
1 <= x <= 100Offset of the first item to return. This endpoint pages by offset: advance start by count. Keep requesting while hasMore is true.
x >= 0Response
Successfully fetched post reposts
Show child attributes
Show child attributes
Number of reposts the source lists for the post. Omitted when it lists none. It can be a little lower than the post's sharesCount, which counts a few reposts the list does not show, and a complete walk can end one or two short of it.
Whether more reposts are available