Skip to main content
GET
/
api
/
v1
/
profile
/
reactions
Get posts a LinkedIn profile has reacted to
curl --request GET \
  --url https://api.fetchin.io/api/v1/profile/reactions \
  --header 'X-API-Key: <api-key>'
{
  "reactions": [
    {
      "reactionType": "LIKE",
      "post": {
        "id": "urn:li:activity:7422911506511486976",
        "content": "One annoying discovery I made when I started selling Borumi is that refunds are not free...",
        "date": "2025-02-01T10:30:00Z",
        "reactionCount": 25,
        "commentCount": 11,
        "imageUrl": "https://media.licdn.com/dms/image/...",
        "videoUrl": null,
        "carouselPdfUrl": null,
        "profile": {
          "urn": "urn:li:fsd_profile:ACoAACHFUsoBILf",
          "name": "Federico Terzi",
          "headline": "Founder @ Borumi.com",
          "url": "https://www.linkedin.com/in/federico-terzi",
          "imageUrl": "https://media.licdn.com/dms/image/..."
        }
      }
    },
    {
      "reactionType": "EMPATHY",
      "post": {
        "id": "urn:li:activity:7409540219328344064",
        "content": "At 30, Thibaud Elziere was selling his company for 800M to Adobe...",
        "date": "2025-01-20T14:20:00Z",
        "reactionCount": 635,
        "commentCount": 59,
        "imageUrl": null,
        "videoUrl": null,
        "carouselPdfUrl": null,
        "profile": {
          "urn": "urn:li:fsd_profile:ACoAADGS3aIB50y",
          "name": "Guillaume Moubeche",
          "headline": "Founder @ lemlist",
          "url": "https://www.linkedin.com/in/guillaume-moubeche-a026541b2",
          "imageUrl": "https://media.licdn.com/dms/image/..."
        }
      }
    },
    {
      "reactionType": "ENTERTAINMENT",
      "post": {
        "id": "urn:li:activity:7402610232759058433",
        "content": "Friday Developers Fun. Explain to me Tech debt as I'm 5.",
        "date": "2025-01-05T09:00:00Z",
        "reactionCount": 4084,
        "commentCount": 78,
        "imageUrl": "https://media.licdn.com/dms/image/...",
        "videoUrl": null,
        "carouselPdfUrl": null,
        "profile": {
          "urn": "urn:li:fsd_profile:ACoAAAC60lcBKfZ",
          "name": "Dr Milan Milanovic",
          "headline": "Helping 400K+ engineers and leaders grow",
          "url": "https://www.linkedin.com/in/milanmilanovic",
          "imageUrl": "https://media.licdn.com/dms/image/..."
        }
      }
    }
  ],
  "paginationToken": "dXJuOmxpOmFjdGl2aXR5Ojc0MDI5Njk4NzAyODU1NjU5NTItMTc2NTAwNTU1NzUzOA==",
  "hasMore": true
}

Endpoint

GET /api/v1/profile/reactions

Authentication

Include your API key in the request header:
X-API-Key: your-api-key-here

Parameters

profileUrlOrUrn
string
required
LinkedIn profile URL or URN.Examples:
  • https://www.linkedin.com/in/username
  • urn:li:member:123456789
count
integer
default:"10"
Number of reactions to fetch per page.
  • Minimum: 1
  • Maximum: 50
  • Default: 10
start
integer
default:"0"
Offset for pagination.
  • Default: 0
paginationToken
string
Token for fetching the next page of reactions. Returned from previous request when more reactions are available.

Response

reactions
array
Array of reactions, each containing the reaction type and the post that was reacted to
paginationToken
string
Token for fetching the next page of reactions. Only present when more reactions are available.
hasMore
boolean
Indicates whether there are more reactions to fetch.

Example Request

curl -X GET "https://api.fetchin.io/api/v1/profile/reactions?profileUrlOrUrn=https://www.linkedin.com/in/williamhgates&count=5" \
  -H "X-API-Key: your-api-key-here"

Example Response

{
  "reactions": [
    {
      "reactionType": "LIKE",
      "post": {
        "id": "urn:li:activity:7422911506511486976",
        "content": "One annoying discovery I made when I started selling Borumi is that refunds are not free...",
        "date": "2025-02-01T10:30:00Z",
        "reactionCount": 25,
        "commentCount": 11,
        "imageUrl": "https://media.licdn.com/dms/image/...",
        "videoUrl": null,
        "carouselPdfUrl": null,
        "profile": {
          "urn": "urn:li:fsd_profile:ACoAACHFUsoBILf",
          "name": "Federico Terzi",
          "headline": "Founder @ Borumi.com",
          "url": "https://www.linkedin.com/in/federico-terzi",
          "imageUrl": "https://media.licdn.com/dms/image/..."
        }
      }
    },
    {
      "reactionType": "EMPATHY",
      "post": {
        "id": "urn:li:activity:7409540219328344064",
        "content": "At 30, Thibaud Elziere was selling his company for 800M to Adobe...",
        "date": "2025-01-20T14:20:00Z",
        "reactionCount": 635,
        "commentCount": 59,
        "imageUrl": null,
        "videoUrl": null,
        "carouselPdfUrl": null,
        "profile": {
          "urn": "urn:li:fsd_profile:ACoAADGS3aIB50y",
          "name": "Guillaume Moubeche",
          "headline": "Founder @ lemlist",
          "url": "https://www.linkedin.com/in/guillaume-moubeche-a026541b2",
          "imageUrl": "https://media.licdn.com/dms/image/..."
        }
      }
    },
    {
      "reactionType": "ENTERTAINMENT",
      "post": {
        "id": "urn:li:activity:7402610232759058433",
        "content": "Friday Developers Fun. Explain to me Tech debt as I'm 5.",
        "date": "2025-01-05T09:00:00Z",
        "reactionCount": 4084,
        "commentCount": 78,
        "imageUrl": "https://media.licdn.com/dms/image/...",
        "videoUrl": null,
        "carouselPdfUrl": null,
        "profile": {
          "urn": "urn:li:fsd_profile:ACoAAAC60lcBKfZ",
          "name": "Dr Milan Milanovic",
          "headline": "Helping 400K+ engineers and leaders grow",
          "url": "https://www.linkedin.com/in/milanmilanovic",
          "imageUrl": "https://media.licdn.com/dms/image/..."
        }
      }
    }
  ],
  "paginationToken": "dXJuOmxpOmFjdGl2aXR5Ojc0MDI5Njk4NzAyODU1NjU5NTItMTc2NTAwNTU1NzUzOA==",
  "hasMore": true
}

Pagination

To fetch all reactions from a profile, use pagination:
  1. Make an initial request without paginationToken
  2. If hasMore is true, use the returned paginationToken in your next request
  3. Continue until hasMore is false
async function fetchAllReactions(profileUrl) {
  const allReactions = [];
  let paginationToken = null;
  let hasMore = true;

  while (hasMore) {
    const params = new URLSearchParams({
      profileUrlOrUrn: profileUrl,
      count: '20'
    });
    if (paginationToken) {
      params.set('paginationToken', paginationToken);
    }

    const response = await fetch(
      `https://api.fetchin.io/api/v1/profile/reactions?${params}`,
      { headers: { 'X-API-Key': 'your-api-key-here' } }
    );

    const data = await response.json();
    allReactions.push(...data.reactions);
    paginationToken = data.paginationToken;
    hasMore = data.hasMore;
  }

  return allReactions;
}

Reaction Types

ValueLinkedIn LabelDescription
LIKELikeStandard like reaction
EMPATHYLoveHeart/love reaction
ENTERTAINMENTFunnyLaughing face reaction
INTERESTInsightfulLightbulb/insightful reaction
PRAISECelebrateClapping/celebrate reaction
APPRECIATIONSupportHands/support reaction

Notes

This endpoint counts as 1 request toward your monthly quota per API call, regardless of the count parameter value. Failed requests (errors) do not count against your quota.
Reactions are returned in reverse chronological order (most recent reactions first). The post object within each reaction has the same shape as items from GET /api/v1/posts, so you can reuse the same types in your client code.
Use the paginationToken to efficiently paginate through a profile’s reaction history without re-fetching already retrieved reactions.

Use Cases

Competitive intelligence

Monitor what content your competitors are engaging with

Interest analysis

Understand a prospect’s interests based on the posts they react to

Content research

Discover trending content in your industry by analyzing reactions of key influencers

Lead scoring

Enrich lead profiles with engagement activity data

Authorizations

X-API-Key
string
header
required

Query Parameters

profileUrlOrUrn
string
required

LinkedIn profile URL or URN

Example:

"https://www.linkedin.com/in/username"

count
integer
default:10

Number of reactions to fetch (default: 10)

Required range: 1 <= x <= 50
start
integer
default:0

Offset for pagination (default: 0)

Required range: x >= 0
paginationToken
string

Token for fetching the next page of reactions. Use the paginationToken from the previous response.

Response

Successfully fetched profile reactions

reactions
object[]
paginationToken
string

Token for fetching the next page

hasMore
boolean

Whether more reactions are available