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

# Post transcript

> Fetches a public LinkedIn post and returns the transcript of its video, when LinkedIn exposes one. Most useful for video posts: the transcript is returned as plain text. If the post has no video, or the video has no transcript, `transcript` is `null`. Only the post URL and transcript are returned — all other post fields are on `GET /v1/linkedin/post`.

<Info>
  **Cost: 1 credit** per successful request. Errors and cache hits (`cache_max_age`) are free.
</Info>

<Accordion title="Copy for AI assistant" icon="sparkles">
  Paste this into ChatGPT, Claude or your coding assistant to generate working code for this endpoint (use the copy button).

  ```text Prompt
  I want to make an API call to /v1/linkedin/post/transcript. Here are the details:

  Endpoint: GET https://api.scraperize.com/v1/linkedin/post/transcript
  Description: Fetches a public LinkedIn post and returns the transcript of its video, when LinkedIn exposes one. Most useful for video posts: the transcript is returned as plain text. If the post has no video, or the video has no transcript, `transcript` is `null`. Only the post URL and transcript are returned — all other post fields are on `GET /v1/linkedin/post`.

  Required Headers:
  - x-api-key: Your API key

  Parameters:
  - url (string) [required]: The URL of the LinkedIn post, e.g. `https://www.linkedin.com/posts/<slug>`.
  - cache_max_age (select): Optional. Return a cached result if one this age or newer exists — served for **0 credits** with `meta.cached=true` and `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and refreshes the cache. Omit to always scrape fresh.

  Example Response:
  {
    "data": {
      "post": {
        "url": "https://www.linkedin.com/posts/artificial-analysis_gemini-35-flash-is-a-step-forward-for-google-activity-7465082408409870337-4Pm-"
      },
      "transcript": "Hey, my name is Declan Jackson. I am a member of technical staff here at Artificial Analysis and I'm going to do a quick chat through the recent release of Gemi…",
      "fetchedAt": "2026-10-05T14:46:40.727Z"
    },
    "meta": {
      "requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
      "creditsCharged": 1,
      "creditsRemaining": 4999,
      "cached": false
    }
  }

  Please help me write code in my preferred programming language to make this API call and handle the response appropriately. Include error handling and best practices.
  ```
</Accordion>


## OpenAPI

````yaml /api-reference/openapi.json get /v1/linkedin/post/transcript
openapi: 3.0.3
info:
  title: Scraperize API
  version: 1.0.0
  description: >-
    Extract public data from social media platforms as clean JSON. Endpoints are
    split by platform and by what they return, e.g. `GET /v1/twitter/tweet`.


    ## Authentication

    Send your API key in the `x-api-key` header (or `Authorization: Bearer
    <key>`). Create keys in your dashboard.


    ## Credits

    Each successful live scrape costs **1 credit**. Credits are prepaid and
    never expire.


    ## Caching

    Every endpoint accepts an optional `cache_max_age`
    (`1d`|`3d`|`7d`|`14d`|`30d`). A cache hit within that window is returned for
    **0 credits**.


    ## Responses

    Success returns `{ "data": …, "meta": { "requestId", … } }`. Errors return
    `{ "error": { "code", "message", "requestId" } }` with a matching HTTP
    status. `meta` on a scrape carries `creditsCharged`, `creditsRemaining`,
    `cached`, and (on a hit) `cachedAt`.


    ## Rate limits

    Requests are limited per team per minute; over the limit returns `429` with
    a `Retry-After` header.
servers:
  - url: https://api.scraperize.com
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Twitter
    description: Twitter / X scraping endpoints
  - name: Facebook
    description: Facebook scraping endpoints
  - name: Linkme
    description: Linkme (link.me) scraping endpoints
  - name: Amazon
    description: Amazon (creator shop / storefront) scraping endpoints
  - name: Linkbio
    description: Linkbio (lnk.bio) scraping endpoints
  - name: Pillar
    description: Pillar (pillar.io) scraping endpoints
  - name: Komi
    description: Komi (komi.io) scraping endpoints
  - name: Linktree
    description: Linktree (linktr.ee) scraping endpoints
  - name: Kick
    description: Kick (kick.com) scraping endpoints
  - name: Snapchat
    description: Snapchat (snapchat.com) scraping endpoints
  - name: Telegram
    description: Telegram (t.me) scraping endpoints
  - name: LinkedIn
    description: LinkedIn scraping endpoints
  - name: Twitch
    description: Twitch scraping endpoints
  - name: TikTok
    description: TikTok (tiktok.com) scraping endpoints
paths:
  /v1/linkedin/post/transcript:
    get:
      tags:
        - LinkedIn
      summary: Post transcript
      description: >-
        Fetches a public LinkedIn post and returns the transcript of its video,
        when LinkedIn exposes one. Most useful for video posts: the transcript
        is returned as plain text. If the post has no video, or the video has no
        transcript, `transcript` is `null`. Only the post URL and transcript are
        returned — all other post fields are on `GET /v1/linkedin/post`.
      parameters:
        - name: url
          in: query
          required: true
          description: >-
            The URL of the LinkedIn post, e.g.
            `https://www.linkedin.com/posts/<slug>`.
          schema:
            type: string
          example: >-
            https://www.linkedin.com/posts/artificial-analysis_gemini-35-flash-is-a-step-forward-for-google-activity-7465082408409870337-4Pm-
        - name: cache_max_age
          in: query
          required: false
          description: >-
            Optional. Return a cached result if one this age or newer exists —
            served for **0 credits** with `meta.cached=true` and
            `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and
            refreshes the cache. Omit to always scrape fresh.
          schema:
            type: string
            enum:
              - 1d
              - 3d
              - 7d
              - 14d
              - 30d
          example: 7d
      responses:
        '200':
          description: The post's video transcript (or null when it has none).
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      post:
                        type: object
                        nullable: true
                        properties:
                          url:
                            type: string
                      transcript:
                        type: string
                        nullable: true
                      fetchedAt:
                        type: string
                        format: date-time
                  meta:
                    type: object
                    description: >-
                      requestId + credit/caching metadata (creditsCharged,
                      creditsRemaining, cached, cachedAt).
                required:
                  - data
                  - meta
              example:
                data:
                  post:
                    url: >-
                      https://www.linkedin.com/posts/artificial-analysis_gemini-35-flash-is-a-step-forward-for-google-activity-7465082408409870337-4Pm-
                  transcript: >-
                    Hey, my name is Declan Jackson. I am a member of technical
                    staff here at Artificial Analysis and I'm going to do a
                    quick chat through the recent release of Gemini 3.5 Flash.
                    This release is really interesting because Google have
                    really prioritized 2 things with this release, but it has
                    come at a bit of a cost. So with this release of Gemini 3.5
                    Flash, Google have focused on speed and they're focused on
                    agent capabilities. So in terms of speed, Gemini 3.5 Flash
                    we measured in our pre release testing at about 280. Output
                    tokens per second, which is pretty impressive for a model of
                    that level of intelligence. So this really puts it on the
                    Predo frontier of speed and intelligence. Now this also is a
                    massive jump from Gemini 3 flash speeds and also puts it
                    ahead of a model like GPT 5.4 mini. Now on agenti
                    capabilities, it has a massive uplift from Gemini 3 flash
                    and even more so than Gemini 3.1 pro and agender
                    capabilities has been a bit of a weakness for Google in the
                    past. So it's really good to see that they've uplifted that,
                    especially we've seen in our real world task agentic eval
                    GDP Val, a Gemini 3.5 flash records an ELO of around 1650.
                    So this is a head of Gemini 3.1 Pro and other models like
                    Kimmy K 2.6, GLM 5.1. But as I mentioned this does come with
                    a bit of a trade off. The model costs around 5X the cost to
                    run compared to Gemini 3 flush. This is made-up of two
                    factors #1 the actual token price is a lot higher. So the
                    token price is 3X that of Gemini 3 Flash at 1.5 per million
                    input and $9 per million output. We also find that it is
                    using. Tokens on these evaluations. So it's reasoning more
                    and it's also using more turns on our genetic evaluations,
                    which is going to mean that it's going to cost more to run.
                    So it's a really interesting tradeoff here. Speed and
                    intelligence is really improved, but cost is also really
                    increased.
                  fetchedAt: '2026-10-05T14:46:40.727Z'
                meta:
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  creditsCharged: 1
                  creditsRemaining: 4999
                  cached: false
        '401':
          description: Missing, invalid, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: UNAUTHORIZED
                  message: API key required — pass it in the `x-api-key` header.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '402':
          description: Not enough credits for this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: INSUFFICIENT_CREDITS
                  message: >-
                    This request costs 1 credit, but your balance is 0. Top up
                    to continue.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '404':
          description: No public post found at that URL.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: NOT_FOUND
                  message: >-
                    The requested content was not found (it may not exist, be
                    deleted, or be private).
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '422':
          description: Invalid query parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: VALIDATION_ERROR
                  message: Request validation failed
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  details:
                    - path: url
                      message: Required
        '429':
          description: Over the per-minute rate limit — honour `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: RATE_LIMITED
                  message: >-
                    Rate limit exceeded — max 100 requests per 60s. Retry in
                    ~30s.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '503':
          description: >-
            Temporarily unavailable — retry after `Retry-After`. `error.code`
            tells you why: `UPSTREAM_BLOCKED` (the source blocked this request),
            `EXTRACTION_FAILED` (the source returned unexpected data),
            `PLATFORM_UNAVAILABLE` (the source is down), or
            `SERVICE_UNAVAILABLE` (we are at capacity).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: UPSTREAM_BLOCKED
                  message: >-
                    The source is temporarily unavailable. Please try again
                    shortly.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: NOT_FOUND
            message:
              type: string
              example: The requested content was not found.
            requestId:
              type: string
              example: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
            details:
              type: array
              items:
                type: object
              description: Present on validation errors.
          required:
            - code
            - message
            - requestId
      required:
        - error
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your API key. Send it in the `x-api-key` header (or `Authorization:
        Bearer <key>`). Create and manage keys from your dashboard.

````

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