> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fetchin.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Post Reposts

> Fetch who reposted a professional post, when, and what they wrote with it

## Endpoint

```
GET /api/v1/post/reposts
```

## Authentication

Include your API key in the request header:

```bash theme={null}
X-API-Key: your-api-key-here
```

## Parameters

**postUrlOrUrn** `string` *required*

Professional post URL or URN.

Examples:

* `https://www.linkedin.com/posts/username_some-post-slug-1234567890-abcd`
* `urn:li:activity:7287782484287606784`
* `urn:li:ugcPost:7287782484287606784`
* `urn:li:share:7287782484287606784`

**count** `integer` (default: 50)

Number of reposts to fetch per page.

* Minimum: 1
* Maximum: 100
* Default: 50

**start** `integer` (default: 0)

Offset for pagination.

* Default: 0

## Response

**reposts** `array`

Reposts of the post, newest first.

**Repost object**

**urn** `string` *required*

The repost's own activity URN, minted when it was reposted. Never the URN
of the post you asked about.

**text** `string` *required*

What the reposter wrote with it. Empty for a repost without commentary.

**createdAt** `string` *required*

When it was reposted (ISO 8601).

**shareUrl** `string` *required*

The repost's own link.

**reactionCount** `integer`

Reactions on the repost itself, not on the original post. **Only present
for a repost with commentary**, which is a post of its own.

**commentCount** `integer`

Comments on the repost itself, not on the original post. Only present for a
repost with commentary.

**author** `object` *required*

Who reposted it: a member or a company page — read `type`. Same shape as
`author` in [Get Post Comments](https://docs.fetchin.io/api-reference/endpoint/get-post-comments.md).

**Author object**

**type** `string`

`profile` for a member, `company` for a company page.

**id** `string` *required*

`urn:li:fsd_profile:<profileId>` for a member,
`urn:li:fsd_company:<companyId>` for a company page.

**name** `string` *required*

Full name of the member, or name of the page

**headline** `string` *required*

The member's headline, or the page's follower line. **Empty for a
repost without commentary**: the source does not send it with one.
Fetch the profile with [Fetch Profile](https://docs.fetchin.io/api-reference/endpoint/get-profile.md)
when you need it.

**profileUrl** `string` *required*

`https://www.linkedin.com/in/<publicId>/` for a member, the company page
URL for a page

**profilePictureUrl** `string` *required*

Picture URL of the reposter. When they have no picture, this is the
source's generic placeholder image — see `picture`.

**picture** `object`

The reposter's real picture (or logo) as `url`, `width`, `height`,
largest rendition. **Absent when they have no picture**, which is how a
placeholder `profilePictureUrl` is told apart from a real one.

**publicId** `string`

Members only: the member's public identifier (`/in/<publicId>`).

**profileId** `string`

Members only: the profile id (`ACoAA…`), the same value as `profileId` in
[Fetch Profile](https://docs.fetchin.io/api-reference/endpoint/get-profile.md).

**memberId** `string`

Members only, and only for a repost with commentary: the numeric member
id.

**companyId** `string`

Company pages only: the numeric company id.

**universalName** `string`

Company pages only: the page's public identifier
(`/company/<universalName>`).

**total** `integer`

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.

**hasMore** `boolean`

Indicates whether there are more reposts to fetch.

## Example Request

```bash cURL theme={null}
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"
```

```javascript JavaScript theme={null}
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);
```

```python Python theme={null}
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 PHP theme={null}
<?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

```json 200 Success theme={null}
{
  "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
}
```

```json 400 Bad Request theme={null}
{
  "error": "Missing postUrlOrUrn parameter",
  "code": "MISSING_PARAMETER"
}
```

```json 401 Unauthorized theme={null}
{
  "error": "Invalid API key",
  "code": "INVALID_API_KEY"
}
```

```json 404 Not Found theme={null}
{
  "error": "Unable to find post from url",
  "code": "POST_NOT_FOUND"
}
```

```json 402 Payment Required theme={null}
{
  "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"
  }
}
```

```json 500 Internal Server Error theme={null}
{
  "error": "Internal server error",
  "code": "INTERNAL_ERROR"
}
```

```json 503 Service Unavailable theme={null}
{
  "error": "Service temporarily unable to serve this request. Please retry.",
  "code": "SERVICE_UNAVAILABLE"
}
```

## Errors

See [Error Handling](https://docs.fetchin.io/concepts/error-handling.md) for the full list of error codes and recommended handling.

* `400` — `MISSING_PARAMETER`, `INVALID_PARAMETER`, `INVALID_URN`
* `401` — `INVALID_API_KEY`
* `404` — `POST_NOT_FOUND`
* `402` — `QUOTA_EXHAUSTED`
* `429` — `RATE_LIMITED`
* `500` — `INTERNAL_ERROR`
* `503` — `SERVICE_UNAVAILABLE`

A post nobody reposted answers `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:

1. Make an initial request with `start=0`
2. If `hasMore` is `true`, increment `start` by `count` in your next request
3. Continue until `hasMore` is `false`

```javascript theme={null}
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

> [!NOTE]
>
> This endpoint consumes 1 credit from your credit balance per API call, regardless of the `count` parameter value. Errors are free — with one exception: a `404` not found costs 1 credit. See [Quotas](https://docs.fetchin.io/concepts/quotas.md).

> [!TIP]
>
> A repost without commentary only names its reposter. To get their headline,
> experience and more, pass `author.publicId` (or `author.profileUrl`) to
> [Fetch Profile](https://docs.fetchin.io/api-reference/endpoint/get-profile.md).


## OpenAPI

````yaml GET /api/v1/post/reposts
openapi: 3.1.0
info:
  title: Fetchin API
  version: 1.0.0
  description: Public B2B data API for fetching posts and profile information
servers:
  - url: https://api.fetchin.io
    description: Production server
security:
  - ApiKeyAuth: []
paths:
  /api/v1/post/reposts:
    get:
      summary: Get reposts of a post
      description: >-
        Fetch who reposted a specific professional post, when, and what they
        wrote with it, newest first. Reposters can be members or company pages.
        A repost without commentary has an empty `text` and no counts of its
        own; a repost with commentary is a post of its own, with its own link
        and counts.
      parameters:
        - name: postUrlOrUrn
          in: query
          required: true
          description: >-
            Professional post URL or URN: `urn:li:activity:<id>`,
            `urn:li:ugcPost:<id>`, `urn:li:share:<id>`, or any post URL
            containing one.
          schema:
            type: string
            example: https://www.linkedin.com/posts/username_post-slug-1234567890-abcd
        - name: count
          in: query
          required: false
          description: 'Number of reposts to fetch (default: 50)'
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - name: start
          in: query
          required: false
          description: >-
            Offset of the first item to return. This endpoint pages by offset:
            advance `start` by `count`. Keep requesting while `hasMore` is true.
          schema:
            type: integer
            minimum: 0
            default: 0
      responses:
        '200':
          description: Successfully fetched post reposts
          content:
            application/json:
              schema:
                type: object
                properties:
                  reposts:
                    type: array
                    items:
                      type: object
                      required:
                        - urn
                        - text
                        - createdAt
                        - shareUrl
                        - author
                      properties:
                        urn:
                          type: string
                          example: urn:li:activity:7524794262320930816
                          description: >-
                            The repost's own activity URN, minted when it was
                            reposted. Never the URN of the post you asked about.
                        text:
                          type: string
                          example: So proud of this team!
                          description: >-
                            What the reposter wrote with it. Empty for a repost
                            without commentary.
                        createdAt:
                          type: string
                          format: date-time
                          example: '2026-11-07T11:25:56.054Z'
                          description: When it was reposted.
                        shareUrl:
                          type: string
                          example: >-
                            https://www.linkedin.com/feed/update/urn:li:activity:7524794262320930816/
                          description: The repost's own link.
                        reactionCount:
                          type: integer
                          description: >-
                            Reactions on the repost itself, not on the original
                            post. Only present for a repost with commentary,
                            which is a post of its own.
                        commentCount:
                          type: integer
                          description: >-
                            Comments on the repost itself, not on the original
                            post. Only present for a repost with commentary.
                        author:
                          type: object
                          required:
                            - id
                            - name
                            - headline
                            - profileUrl
                            - profilePictureUrl
                          properties:
                            type:
                              type: string
                              enum:
                                - profile
                                - company
                              description: >-
                                `profile` for a member, `company` for a company
                                page.
                            id:
                              type: string
                              example: >-
                                urn:li:fsd_profile:ACoAADDM0HYBgoe_A-liUdmDmN_ErRDPtCFlSXY
                              description: >-
                                `urn:li:fsd_profile:<profileId>` for a member,
                                `urn:li:fsd_company:<companyId>` for a company
                                page.
                            name:
                              type: string
                              example: Jane Doe
                            headline:
                              type: string
                              example: CEO at Example Corp
                              description: >-
                                The member's headline, or the page's follower
                                line. Empty for a repost without commentary: the
                                source does not send it with one.
                            profileUrl:
                              type: string
                              example: https://www.linkedin.com/in/jane-doe/
                              description: >-
                                `https://www.linkedin.com/in/<publicId>/` for a
                                member, the company page URL for a page.
                            profilePictureUrl:
                              type: string
                              example: https://media.licdn.com/dms/image/...
                              description: >-
                                Picture URL of the reposter, or the source's
                                generic placeholder image when they have none -
                                see `picture`.
                            picture:
                              type: object
                              description: >-
                                The reposter's real picture or logo, largest
                                rendition. Absent when they have no picture,
                                which is how a placeholder `profilePictureUrl`
                                is told apart from a real one.
                              properties:
                                url:
                                  type: string
                                width:
                                  type: integer
                                height:
                                  type: integer
                            publicId:
                              type: string
                              description: >-
                                Members only: the member's public identifier
                                (`/in/<publicId>`).
                              example: jane-doe
                            profileId:
                              type: string
                              description: >-
                                Members only: the profile id (`ACoAA...`), the
                                same value as `profileId` in GET
                                /api/v1/profile.
                            memberId:
                              type: string
                              description: >-
                                Members only, and only for a repost with
                                commentary: the numeric member id.
                            companyId:
                              type: string
                              description: 'Company pages only: the numeric company id.'
                            universalName:
                              type: string
                              description: >-
                                Company pages only: the page's public
                                identifier.
                          description: >-
                            Who reposted it: a member or a company page - read
                            `type`. Same shape as `author` in GET
                            /api/v1/post/comments.
                  total:
                    type: integer
                    description: >-
                      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.
                  hasMore:
                    type: boolean
                    description: Whether more reposts are available
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  responses:
    BadRequest:
      description: Bad request - a required parameter is missing or a value is invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missingParameter:
              value:
                error: Missing profileUrlOrUrn parameter
                code: MISSING_PARAMETER
            invalidParameter:
              value:
                error: limit must be a number between 1 and 100
                code: INVALID_PARAMETER
            invalidUrn:
              value:
                error: 'Invalid URN format: urn:li:member:123456789'
                code: INVALID_URN
    Unauthorized:
      description: Unauthorized - the X-API-Key header is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missingApiKey:
              value:
                error: Missing API key. Include X-API-Key header.
                code: UNAUTHENTICATED
            invalidApiKey:
              value:
                error: Invalid API key
                code: INVALID_API_KEY
    PaymentRequired:
      description: >-
        Payment required - you are out of credits (QUOTA_EXHAUSTED): the plan
        allowance for the current period is spent AND no pay-as-you-go credits
        are left. Buy pay-as-you-go credits (self-serve,
        https://fetchin.io/credits), upgrade your plan, or wait for renewal;
        retrying will not help and no Retry-After is sent. Distinct from the
        per-second rate limit, which is a 429 (RATE_LIMITED).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            quotaExhausted:
              value:
                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
    NotFound:
      description: >-
        Not found - the request was served successfully but the requested
        professional entity does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            profileNotFound:
              value:
                error: LinkedIn profile not found
                code: PROFILE_NOT_FOUND
            postNotFound:
              value:
                error: Unable to find post from url
                code: POST_NOT_FOUND
            companyNotFound:
              value:
                error: Unable to find company slug from urn
                code: COMPANY_NOT_FOUND
    TooManyRequests:
      description: >-
        Too many requests - your per-second rate limit (RATE_LIMITED) was
        exceeded. Back off and retry, honoring the Retry-After header. (Running
        out of credits is a separate 402 PaymentRequired / QUOTA_EXHAUSTED, and
        buying credits never raises this per-second limit.)
      headers:
        Retry-After:
          description: Number of seconds to wait before retrying the request.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            rateLimited:
              value:
                error: Rate limit exceeded. Try again later.
                code: RATE_LIMITED
    InternalError:
      description: >-
        Internal server error - an unexpected error occurred in our API. Safe to
        retry; contact support if it persists.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            internalError:
              value:
                error: Internal server error
                code: INTERNAL_ERROR
    ServiceUnavailable:
      description: >-
        Service unavailable - our API is temporarily unable to serve this
        request (capacity exhausted or overloaded). This is on our side, not
        yours and not an upstream service outage. Retry with backoff, honoring
        the Retry-After header.
      headers:
        Retry-After:
          description: Number of seconds to wait before retrying the request.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            serviceUnavailable:
              value:
                error: >-
                  Service temporarily unable to serve this request. Please
                  retry.
                code: SERVICE_UNAVAILABLE
  schemas:
    Error:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: >-
            Human-readable description of what went wrong. For display/logging;
            do not branch on this string.
        code:
          type: string
          enum:
            - MISSING_PARAMETER
            - INVALID_PARAMETER
            - INVALID_URN
            - UNAUTHENTICATED
            - INVALID_API_KEY
            - FORBIDDEN
            - NOT_FOUND
            - PROFILE_NOT_FOUND
            - POST_NOT_FOUND
            - COMPANY_NOT_FOUND
            - ENDPOINT_REMOVED
            - RATE_LIMITED
            - QUOTA_EXHAUSTED
            - INTERNAL_ERROR
            - UPSTREAM_ERROR
            - SERVICE_UNAVAILABLE
            - UPSTREAM_TIMEOUT
          description: >-
            Stable, machine-readable error code. Branch your integration on this
            value, not on the HTTP status alone or the message text.
        details:
          type: object
          additionalProperties: true
          description: >-
            Optional structured context. On QUOTA_EXHAUSTED it carries the
            balance breakdown at the moment of the rejection - creditsRemaining,
            subscriptionCreditsRemaining, paygCreditsRemaining - plus
            buyCreditsUrl, the self-serve page for buying more credits. Always
            additive and never guaranteed: read it for diagnostics and logs, but
            branch on `code` and do not require any field of it.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.