# LinkedIn Post Transcript

Get the full transcript of a public LinkedIn post: the post body, the author, engagement counters, and the comment bodies that ship inside the same page. Comment bodies cost no extra upstream call. Use it when you need comments, and use the LinkedIn Post endpoint when you only need the post itself. topics and more_articles are empty on feed posts and populated on /pulse/ articles. A repost adds repost_comment (what the reposter wrote) and original_content (the shared post). The Errors section lists the common cases rather than every code: any failed request carries an error_code, and none of them is billed.

- **Documentation:** [https://scrappa.co/docs/linkedin-api/linkedin_post_transcript](https://scrappa.co/docs/linkedin-api/linkedin_post_transcript)
- **API group:** LinkedIn API
- **Endpoint:** `GET https://scrappa.co/api/linkedin/post/transcript`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `url` | string | No | LinkedIn post URL. Provide this or activity_id. A /feed/update/urn:li:share:<id> URL is fetched as the share URN it names; a share URN and an activity URN are different resources behind the same number, so the URN type is read from the URL path. The path is the only source of the id and the URN type: no query parameter can supply or override either, so a tracking parameter carrying another URN is ignored. |
| `activity_id` | string | No | Numeric LinkedIn activity ID. Provide this or url. Always treated as an activity URN; pass a share as its share URL to fetch it as a share. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/linkedin/post/transcript?activity_id=7123456789012345678"
```

## Example response

```json
{
    "success": true,
    "type": "post",
    "activity_id": "7123456789012345678",
    "is_repost": false,
    "headline": "Excited to share our latest product update...",
    "url": "https://www.linkedin.com/feed/update/urn:li:activity:7123456789012345678",
    "date_published": "2026-01-20T08:00:00+00:00",
    "image": "https://media.licdn.com/example.jpg",
    "topics": [
        "hiring",
        "engineering"
    ],
    "more_articles": [],
    "article_body": "We shipped the new dashboard today...",
    "like_count": 1062,
    "comment_count": 72,
    "is_truncated": true,
    "canonical_url": "https://www.linkedin.com/feed/update/urn:li:activity:7123456789012345678",
    "author": {
        "name": "John Doe",
        "url": "https://www.linkedin.com/in/john-doe",
        "image": null,
        "followers": 0
    },
    "comments": [
        {
            "author": "Jane Smith",
            "text": "Great post!",
            "date_published": "2024-01-15T11:00:00+00:00",
            "like_count": 9
        }
    ]
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | Neither url nor activity_id was provided, or activity_id was not numeric. |
| 403 | Not Publicly Accessible | LinkedIn answered with a sign-in wall instead of the post. The post is not publicly accessible. Not billed. |
| 404 | Post Not Found | The activity ID does not exist, or the post is not reachable at that URL. Not billed. Distinct from linkedin_transcript_empty_payload below, which means LinkedIn answered 200 with a page carrying no post data. |
| 404 | No Post Data | The activity ID does not exist, or LinkedIn returned a page carrying no post data. Not billed. |
| 503 | LinkedIn Temporarily Unavailable | The upstream service is temporarily unavailable. Please retry shortly. |
| 503 | Request Not Dispatched | Scrappa could not send this request to LinkedIn at all, so no data was retrieved. Please try again in a moment. Failed requests are never billed. |
| 503 | Upstream Error | LinkedIn answered with a non-success status that is neither a sign-in wall nor a missing post. Failed requests are never billed. |
| 503 | Upstream Route Changed | LinkedIn no longer serves the route this post is fetched from, so the post cannot be fetched at all. Not billed, and not reported as "post not found" because that would be untrue about your data. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
