Skip to main content
GET
/
api
/
v1
/
profile
/
reactions
Get posts a 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
The professional profile whose reactions to fetch. Accepts any of:
  • Profile URN, recommended for consistency: a profile’s public identifier (slug) can change over time, the URN does not. Example: urn:li:fsd_profile:ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc
  • Public identifier (slug), also fine. Example: williamhgates
  • Profile URL. Example: https://www.linkedin.com/in/williamhgates (a trailing slash makes no difference)
The slug is the last path segment of a profile URL (linkedin.com/in/<slug>). Pass just the slug, not the /in/ prefix.
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
}

Errors

See Error Handling for the full list of error codes and recommended handling.
  • 400 MISSING_PARAMETER / INVALID_URN
  • 401 INVALID_API_KEY
  • 404 PROFILE_NOT_FOUND
  • 429 RATE_LIMITED / QUOTA_EXHAUSTED
  • 500 INTERNAL_ERROR
  • 503 SERVICE_UNAVAILABLE

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

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

Notes

This endpoint consumes 1 credit from 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

The professional profile to fetch. Accepts a profile URN (recommended for consistency, since a profile's public identifier can change over time while the URN does not; example urn:li:fsd_profile:ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc), a public identifier/slug (also fine; example williamhgates), or a full profile URL (example https://www.linkedin.com/in/williamhgates; a trailing slash is ignored). The slug is the last path segment of a profile URL, so pass just the slug, not the /in/ prefix.

Example:

"urn:li:fsd_profile:ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc"

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