> ## 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

> Fetches a public LinkedIn post or Pulse article and returns it as clean JSON. Works for both content types: a feed **post** (`linkedin.com/posts/<slug>`) or a long-form **article** (`linkedin.com/pulse/<slug>`) — the response `type` tells you which. Posts include any photos as an `images` array, and a rich attachment under `media` — either a video (stream url, thumbnail, duration, dimensions, embed url) or a document/slide deck (source url, title, page count, and the guest-visible slide images). Returns the id, canonical url, title, excerpt, full body, cover image, author (name, url, image, follower count), published/modified dates, reading time (articles), like and comment counts, the publicly rendered comments (each with the commenter's name and profile url), and — for an article — the related "Others also viewed" articles. Only public data is returned.

<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. Here are the details:

  Endpoint: GET https://api.scraperize.com/v1/linkedin/post
  Description: Fetches a public LinkedIn post or Pulse article and returns it as clean JSON. Works for both content types: a feed **post** (`linkedin.com/posts/<slug>`) or a long-form **article** (`linkedin.com/pulse/<slug>`) — the response `type` tells you which. Posts include any photos as an `images` array, and a rich attachment under `media` — either a video (stream url, thumbnail, duration, dimensions, embed url) or a document/slide deck (source url, title, page count, and the guest-visible slide images). Returns the id, canonical url, title, excerpt, full body, cover image, author (name, url, image, follower count), published/modified dates, reading time (articles), like and comment counts, the publicly rendered comments (each with the commenter's name and profile url), and — for an article — the related "Others also viewed" articles. Only public data is returned.

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

  Parameters:
  - url (string) [required]: The URL of the LinkedIn post (`https://www.linkedin.com/posts/<slug>`) or article (`https://www.linkedin.com/pulse/<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": {
      "content": {
        "type": "post",
        "id": "7483148510742343680",
        "url": "https://www.linkedin.com/posts/shopify_the-preparedness-paradox-wait-for-ready-activity-7483148510742343680-cNqc",
        "title": "The preparedness paradox: Wait for “ready,” and it might never come",
        "excerpt": "57% of U.S.",
        "body": "57% of U.S. founders who waited before launching a business wish they’d started sooner.\n\nWe surveyed aspiring entrepreneurs and business owners across five coun…",
        "coverImageUrl": "https://media.licdn.com/dms/image/sync/v2/D5627AQFnTFkSXuQaVg/articleshare-shrink_800/B56Z9cGnSeGgAY-/0/1783956666107?e=2147483647&v=beta&t=2PgncJMqtEz69n4nfnAu…",
        "author": {
          "name": "Shopify",
          "url": "https://ca.linkedin.com/company/shopify",
          "imageUrl": "https://media.licdn.com/dms/image/v2/D560BAQG_KjTcNcrLVw/company-logo_100_100/B56ZZolTV.HUAc-/0/1745511331439/shopify_logo?e=2147483647&v=beta&t=nXMs-vUElNvDVFN…",
          "type": "organization",
          "followerCount": 1113098
        },
        "publishedAt": "2026-07-15T13:20:35.118Z",
        "modifiedAt": null,
        "readingTime": null,
        "isAccessibleForFree": null,
        "likeCount": 114,
        "commentCount": 38,
        "comments": [
          {
            "author": {
              "name": "Biren Poriya",
              "url": "https://au.linkedin.com/in/biren-poriya",
              "imageUrl": null
            },
            "text": "The barrier is shifting from capital to conviction.\nExecution is becoming the scarcest differentiator.",
            "publishedAt": "2026-07-16T04:09:31.257Z",
            "postedAgo": null,
            "likeCount": 8
          }
        ],
        "moreArticles": [],
        "images": [],
        "media": null
      },
      "fetchedAt": "2026-10-05T14:46:38.955Z"
    },
    "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
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:
    get:
      tags:
        - LinkedIn
      summary: Post
      description: >-
        Fetches a public LinkedIn post or Pulse article and returns it as clean
        JSON. Works for both content types: a feed **post**
        (`linkedin.com/posts/<slug>`) or a long-form **article**
        (`linkedin.com/pulse/<slug>`) — the response `type` tells you which.
        Posts include any photos as an `images` array, and a rich attachment
        under `media` — either a video (stream url, thumbnail, duration,
        dimensions, embed url) or a document/slide deck (source url, title, page
        count, and the guest-visible slide images). Returns the id, canonical
        url, title, excerpt, full body, cover image, author (name, url, image,
        follower count), published/modified dates, reading time (articles), like
        and comment counts, the publicly rendered comments (each with the
        commenter's name and profile url), and — for an article — the related
        "Others also viewed" articles. Only public data is returned.
      parameters:
        - name: url
          in: query
          required: true
          description: >-
            The URL of the LinkedIn post
            (`https://www.linkedin.com/posts/<slug>`) or article
            (`https://www.linkedin.com/pulse/<slug>`).
          schema:
            type: string
          example: >-
            https://www.linkedin.com/posts/shopify_the-preparedness-paradox-wait-for-ready-activity-7483148510742343680-cNqc
        - 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 or article.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      content:
                        type: object
                        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:
                  content:
                    type: post
                    id: '7483148510742343680'
                    url: >-
                      https://www.linkedin.com/posts/shopify_the-preparedness-paradox-wait-for-ready-activity-7483148510742343680-cNqc
                    title: >-
                      The preparedness paradox: Wait for “ready,” and it might
                      never come
                    excerpt: 57% of U.S.
                    body: "57% of U.S. founders who waited before launching a business wish they’d started sooner.\n\nWe surveyed aspiring entrepreneurs and business owners across five countries to find out what holds people back.\n\nThe top reasons: not enough money, an idea still taking shape, and not feeling prepared.\n\nThey’re the same reasons current founders once gave. But the conditions have changed. \n\nMost respondents say starting a business is more accessible than ever and requires less formal training or credentials. AI has lowered the cost and complexity. \n\nFounders aren’t waiting for a plan either. In four of the five countries, around 70% worked through their earliest challenges by trial and error.\n\nReady isn’t a feeling you arrive at. It’s what happens after you start.\_\nhttps://lnkd.in/gMCKE5Yn"
                    coverImageUrl: >-
                      https://media.licdn.com/dms/image/sync/v2/D5627AQFnTFkSXuQaVg/articleshare-shrink_800/B56Z9cGnSeGgAY-/0/1783956666107?e=2147483647&v=beta&t=2PgncJMqtEz69n4nfnAuNMFpMsmaIu7OTXuzNJ-8IUk
                    author:
                      name: Shopify
                      url: https://ca.linkedin.com/company/shopify
                      imageUrl: >-
                        https://media.licdn.com/dms/image/v2/D560BAQG_KjTcNcrLVw/company-logo_100_100/B56ZZolTV.HUAc-/0/1745511331439/shopify_logo?e=2147483647&v=beta&t=nXMs-vUElNvDVFNmabs-Pd03SF2Rph4CfU7R1SdRPU0
                      type: organization
                      followerCount: 1113098
                    publishedAt: '2026-07-15T13:20:35.118Z'
                    modifiedAt: null
                    readingTime: null
                    isAccessibleForFree: null
                    likeCount: 114
                    commentCount: 38
                    comments:
                      - author:
                          name: Biren Poriya
                          url: https://au.linkedin.com/in/biren-poriya
                          imageUrl: null
                        text: |-
                          The barrier is shifting from capital to conviction.
                          Execution is becoming the scarcest differentiator.
                        publishedAt: '2026-07-16T04:09:31.257Z'
                        postedAgo: null
                        likeCount: 8
                      - author:
                          name: M2E Cloud
                          url: https://uk.linkedin.com/showcase/m2ecloud/
                          imageUrl: null
                        text: >-
                          We couldn’t agree more. Most founders don’t become
                          ready first, they become ready by doing. Every step
                          teaches something you could never learn by waiting. 

                          And if you’re still hesitating: just keep going. 🙌
                        publishedAt: '2026-07-16T12:40:59.905Z'
                        postedAgo: null
                        likeCount: 2
                      - author:
                          name: Khandaker Md. Saiful Islam
                          url: https://bd.linkedin.com/in/sinafees
                          imageUrl: null
                        text: >-
                          Great insights! Many people wait for the perfect time,
                          perfect idea, or perfect preparation before starting.
                          But real growth comes from taking action, learning,
                          and improving along the way.

                          As a Shopify Developer, I’ve seen many businesses grow
                          by starting small, testing ideas, improving their
                          online store, and focusing on customers. A good store
                          is not built overnight - it’s improved step by step.

                          The important thing is to start, adapt, and keep
                          moving forward. 🚀
                        publishedAt: '2026-07-19T07:08:00.440Z'
                        postedAgo: null
                        likeCount: 3
                    moreArticles: []
                    images: []
                    media: null
                  fetchedAt: '2026-10-05T14:46:38.955Z'
                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 or article 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.