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

> Fetches the comments on a public Instagram post or Reel by its URL, newest first, about 12–15 per page with a cursor. Each comment has its id, text with hashtags and mentions, posted date, like count, the author (id, handle, verified, profile picture, profile URL), the GIF for GIF comments, and hidden / restricted / translation flags. Top-level comments only: Instagram does not make comment replies (or reply counts) available without logging in, so replies can't be returned. Also lists comments Instagram withholds in the requester's country. A post with comments turned off returns an empty list; a private or missing post returns 404. Only publicly available 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/instagram/post/comments. Here are the details:

  Endpoint: GET https://api.scraperize.com/v1/instagram/post/comments
  Description: Fetches the comments on a public Instagram post or Reel by its URL, newest first, about 12–15 per page with a cursor. Each comment has its id, text with hashtags and mentions, posted date, like count, the author (id, handle, verified, profile picture, profile URL), the GIF for GIF comments, and hidden / restricted / translation flags. Top-level comments only: Instagram does not make comment replies (or reply counts) available without logging in, so replies can't be returned. Also lists comments Instagram withholds in the requester's country. A post with comments turned off returns an empty list; a private or missing post returns 404. Only publicly available data is returned.

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

  Parameters:
  - url (string) [required]: The Instagram post or Reel URL, e.g. `https://www.instagram.com/reel/DdG4RIxIPyf/`.
  - cursor (string): The `cursor` from a previous response (same `url`) to fetch the next page. Omit for the first page.
  - 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": {
        "id": "3983118388705688735",
        "code": "DdG4RIxIPyf",
        "url": "https://www.instagram.com/p/DdG4RIxIPyf/"
      },
      "comments": [
        {
          "id": "18627640678004801",
          "text": "🔥🔥🔥🔥🔥",
          "hashtags": [],
          "mentions": [],
          "createdAt": "2026-10-12T07:05:05.000Z",
          "likeCount": 0,
          "replyCount": null,
          "author": {
            "id": "33402776402",
            "handle": "seetheworld3000",
            "fullName": null,
            "isVerified": false,
            "profilePicUrl": "https://scontent-los4-1.cdninstagram.com/v/t51.82787-19/780593730_18093068459112403_8813944285625000079_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=101&ccb=7-5&_nc_s…",
            "url": "https://www.instagram.com/seetheworld3000/"
          },
          "gif": null,
          "isHidden": false,
          "restrictedStatus": null,
          "hasTranslation": null
        }
      ],
      "count": 13,
      "cursor": "eyJpbnYiOiJ0cnVlIiwiaCI6Im1lZGlhOjM5ODMxMTgzODg3MDU2ODg3MzUiLCJjIjoiQVFIVGoxNzBNUkFBRS1FQ1pJZ1RhaXNVU19IT2MxMEtpR0hwOGZmX0dqNmxabU9HdE10bmc2aHJtOUNXS1R5aGRtVnF1…",
      "hasMore": true,
      "geoblockedComments": [],
      "fetchedAt": "2026-10-12T09:30:17.319Z"
    },
    "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/instagram/post/comments
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
  - name: Instagram
    description: Instagram scraping endpoints
  - name: Lagos Life
    description: Lagos Life scraping endpoints
paths:
  /v1/instagram/post/comments:
    get:
      tags:
        - Instagram
      summary: Post comments
      description: >-
        Fetches the comments on a public Instagram post or Reel by its URL,
        newest first, about 12–15 per page with a cursor. Each comment has its
        id, text with hashtags and mentions, posted date, like count, the author
        (id, handle, verified, profile picture, profile URL), the GIF for GIF
        comments, and hidden / restricted / translation flags. Top-level
        comments only: Instagram does not make comment replies (or reply counts)
        available without logging in, so replies can't be returned. Also lists
        comments Instagram withholds in the requester's country. A post with
        comments turned off returns an empty list; a private or missing post
        returns 404. Only publicly available data is returned.
      parameters:
        - name: url
          in: query
          required: true
          description: >-
            The Instagram post or Reel URL, e.g.
            `https://www.instagram.com/reel/DdG4RIxIPyf/`.
          schema:
            type: string
          example: https://www.instagram.com/reel/DdG4RIxIPyf/
        - name: cursor
          in: query
          required: false
          description: >-
            The `cursor` from a previous response (same `url`) to fetch the next
            page. Omit for the first page.
          schema:
            type: string
        - 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: A page of the post's comments.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      post:
                        type: object
                      comments:
                        type: array
                        items:
                          type: object
                      count:
                        type: integer
                      cursor:
                        type: string
                        nullable: true
                      hasMore:
                        type: boolean
                      geoblockedComments:
                        type: array
                        items:
                          type: object
                      fetchedAt:
                        type: string
                        format: date-time
                  meta:
                    type: object
                    description: >-
                      requestId + credit/caching metadata (creditsCharged,
                      creditsRemaining, cached, cachedAt).
                required:
                  - data
                  - meta
              example:
                data:
                  post:
                    id: '3983118388705688735'
                    code: DdG4RIxIPyf
                    url: https://www.instagram.com/p/DdG4RIxIPyf/
                  comments:
                    - id: '18627640678004801'
                      text: 🔥🔥🔥🔥🔥
                      hashtags: []
                      mentions: []
                      createdAt: '2026-10-12T07:05:05.000Z'
                      likeCount: 0
                      replyCount: null
                      author:
                        id: '33402776402'
                        handle: seetheworld3000
                        fullName: null
                        isVerified: false
                        profilePicUrl: >-
                          https://scontent-los4-1.cdninstagram.com/v/t51.82787-19/780593730_18093068459112403_8813944285625000079_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=101&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4xMDgwLkMzIn0%3D&_nc_ohc=OZS2hJwTGugQ7kNvwEfeK1K&_nc_oc=AdpPDLTwLya1EtrgLXDKWjMqvrbPFdbL7EjqCqMaJJdnE7p8ya7akM10TsGjWlPuAqY&_nc_zt=24&_nc_ht=scontent-los4-1.cdninstagram.com&_nc_gid=rBG53-vS573gmNhtq4TkoQ&_nc_ss=7a289&oh=00_AQPiBRJ-9K9wV85IXT4Sd5jxFBcHFNNMrW1Tjhc50_BPJQ&oe=6AD277C4
                        url: https://www.instagram.com/seetheworld3000/
                      gif: null
                      isHidden: false
                      restrictedStatus: null
                      hasTranslation: null
                    - id: '18131045659749445'
                      text: 🔥🔥🔥🔥🔥🔥
                      hashtags: []
                      mentions: []
                      createdAt: '2026-10-12T07:04:48.000Z'
                      likeCount: 0
                      replyCount: null
                      author:
                        id: '33402776402'
                        handle: seetheworld3000
                        fullName: null
                        isVerified: false
                        profilePicUrl: >-
                          https://scontent-los4-1.cdninstagram.com/v/t51.82787-19/780593730_18093068459112403_8813944285625000079_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=101&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4xMDgwLkMzIn0%3D&_nc_ohc=OZS2hJwTGugQ7kNvwEfeK1K&_nc_oc=AdpPDLTwLya1EtrgLXDKWjMqvrbPFdbL7EjqCqMaJJdnE7p8ya7akM10TsGjWlPuAqY&_nc_zt=24&_nc_ht=scontent-los4-1.cdninstagram.com&_nc_gid=rBG53-vS573gmNhtq4TkoQ&_nc_ss=7a289&oh=00_AQPiBRJ-9K9wV85IXT4Sd5jxFBcHFNNMrW1Tjhc50_BPJQ&oe=6AD277C4
                        url: https://www.instagram.com/seetheworld3000/
                      gif: null
                      isHidden: false
                      restrictedStatus: null
                      hasTranslation: null
                    - id: '17910787941514768'
                      text: Nature never stops surprising me. Incredible capture! 🌍
                      hashtags: []
                      mentions: []
                      createdAt: '2026-10-11T13:23:01.000Z'
                      likeCount: 0
                      replyCount: null
                      author:
                        id: '77484032089'
                        handle: ikram.rehman300
                        fullName: null
                        isVerified: false
                        profilePicUrl: >-
                          https://scontent-los4-1.cdninstagram.com/v/t51.82787-19/567476387_17849722161576090_7062417739127258235_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=110&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy4xMDgwLkMzIn0%3D&_nc_ohc=qMFBATMHkasQ7kNvwEGWtBk&_nc_oc=AdpmWCcrGdw6HHyaU0hpOsUVmdeXQQXm88munieRrt07DJ8oy7DZXAJPGhUD5faTVb4&_nc_zt=24&_nc_ht=scontent-los4-1.cdninstagram.com&_nc_gid=rBG53-vS573gmNhtq4TkoQ&_nc_ss=7a289&oh=00_AQOk8KP53SclwqGCyzyNzAjvrJHRyyqMsSsMtGwDTB9k-Q&oe=6AD29520
                        url: https://www.instagram.com/ikram.rehman300/
                      gif: null
                      isHidden: false
                      restrictedStatus: null
                      hasTranslation: null
                  count: 13
                  cursor: >-
                    eyJpbnYiOiJ0cnVlIiwiaCI6Im1lZGlhOjM5ODMxMTgzODg3MDU2ODg3MzUiLCJjIjoiQVFIVGoxNzBNUkFBRS1FQ1pJZ1RhaXNVU19IT2MxMEtpR0hwOGZmX0dqNmxabU9HdE10bmc2aHJtOUNXS1R5aGRtVnF1TUdtZVRDcEJSMzM2MDd6dnVfUXBBIn0
                  hasMore: true
                  geoblockedComments: []
                  fetchedAt: '2026-10-12T09:30:17.319Z'
                meta:
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
                  creditsCharged: 1
                  creditsRemaining: 4999
                  cached: false
        '400':
          description: Invalid or expired cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: BAD_REQUEST
                  message: The request was invalid.
                  requestId: req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f
        '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 at this URL (missing, deleted or private).
          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 (`url` must be an Instagram post or Reel
            URL).
          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.