Apinoa Docs

Comments

Get a Reddit post's comment tree, the replies under one comment, or a user's comments.

View raw .mdx
GET | POST /v1/reddit/comments

Send parameters as a query string with GET, or as a JSON body with POST. Both are equivalent.

What to Pass

PassReadsNotes
postA post's comment treeTop-level comments with the replies Reddit nests under them; the post is in ext.post. sort: confidence (default), top, new, controversial, old, qa
post + commentThe replies under one commentThat comment, with its replies nested
usernameA user's commentssort: new, hot, top, controversial

Pass one source per call. Every identifier also takes the page URL.

Parameters

ParameterTypeRequiredNotes
commentstringWith post: the comment whose replies to load (base36 id or t1_ fullname) — e.g. one whose moreReplies says replies were held back.
cursorstringOpaque cursor from the previous page's cursor. Pass it alone for the next page.
limitinteger 1–100Items per page, 1–100.
periodenumTime window for sort top or controversial: hour, day, week, month, year or all. hour day week month year all
poststringA post's comments: post id, fullname (t3_…) or URL.
sortenumOrder. post: confidence (Reddit's 'best'), top, new, controversial, old, qa · username: new, hot, top, controversial. confidence top new controversial old qa hot
usernamestringA user's comments: username or profile URL.

Request

curl "https://gateway.apinoa.com/v1/reddit/comments?post=1wtm5mp" \
  -H "x-api-key: $APINOA_API_KEY"

Response

Returns Page of Comment in data. A real response, shortened: arrays keep their first entries and long text is cut.

{
  "success": true,
  "data": {
    "platform": "reddit",
    "items": [
      {
        "platform": "reddit",
        "id": "pcvg4r0",
        "url": "https://www.reddit.com/r/technology/comments/1wtm5mp/comment/pcvg4r0/",
        "postId": "1wtm5mp",
        "author": {
          "platform": "reddit",
          "handle": "bryancald",
          "avatarUrl": "https://styles.redditmedia.com/t5_21dyao/styles/profileIcon_snoo96d39f88-0d0d-4954-a766-4738a4900b3a-headshot.png?width…"
        },
        "text": "I truly hope this leads to the demise of McDonalds and any other company that uses this business model.",
        "createdAt": "2026-09-29T21:14:47.455Z",
        "replies": [],
        "moreReplies": {
          "count": 114,
          "cursor": "L4XGv5gQ_FjNqfTT50wyH8HLEFcVKbYmFyUeCUqK7sWTOyfFoRJhjidTb3_j1nbWbQFGMKsNt5HrRLGMOg0FKTXRRGR0E7PbYOr0toK3-hr569AwBmuPKON…"
        },
        "ext": {
          "fullname": "t1_pcvg4r0",
          "parentFullname": "t3_1wtm5mp",
          "depth": 0,
          "score": 2311,
          "awards": 4,
          "community": "technology"
        }
      }
    ],
    "cursor": "uLbhrTSCxojEb5jzOX2Bo3KUoyHedf6jaMv9hj7OlvK_HdPrLWt8_nE12KPBUV3ilwsATxuZi_45UdCtRMCxSMjSdrBmRFU_oHiRvSHt1R3A7S1Qzdg5n-J…",
    "ext": {
      "post": {
        "platform": "reddit",
        "id": "1wtm5mp",
        "url": "https://www.reddit.com/r/technology/comments/1wtm5mp/mcdonalds_is_reportedly_using_ai_to_dynamically/",
        "author": {
          "platform": "reddit",
          "handle": "AdSpecialist6598",
          "id": "cc0n0rs5"
        },
        "title": "McDonald's Is Reportedly Using AI To \"Dynamically\" Price Its Burgers",
        "createdAt": "2026-09-29T21:06:04.000Z",
        "media": [],
        "metrics": {
          "comments": 3406
        },
        "linkPreview": {
          "url": "https://www.engadget.com/2272211/mcdonalds-is-reportedly-using-ai-to-dynamically-price-its-burgers/",
          "domain": "engadget.com",
          "thumbnailUrl": "https://external-preview.redd.it/AQiUEhcGHE3YfA3sQBeQ19JM5rWJBxMI7qHIwZZXKCE.jpeg?auto=webp&s=b396d5d14e8ed04fcfdafd4db…"
        },
        "sensitive": false,
        "ext": {
          "fullname": "t3_1wtm5mp",
          "score": 19516,
          "ups": 19516,
          "upvoteRatio": 0.94,
          "numCrossposts": 6,
          "awards": 0,
          "flair": "Business",
          "flairTextColor": "dark",
          "flairTemplateId": "49cac61c-a816-11e9-be34-0ebbab5890a0",
          "kind": "link",
          "preview": {
            "source": {
              "url": "https://external-preview.redd.it/AQiUEhcGHE3YfA3sQBeQ19JM5rWJBxMI7qHIwZZXKCE.jpeg?auto=webp&s=b396d5d14e8ed04fcfdafd4db…",
              "width": 1600,
              "height": 898
            },
            "resolutions": [
              {
                "url": "https://external-preview.redd.it/AQiUEhcGHE3YfA3sQBeQ19JM5rWJBxMI7qHIwZZXKCE.jpeg?width=108&crop=smart&auto=webp&s=300b…",
                "width": 108,
                "height": 60
              },
              {
                "url": "https://external-preview.redd.it/AQiUEhcGHE3YfA3sQBeQ19JM5rWJBxMI7qHIwZZXKCE.jpeg?width=216&crop=smart&auto=webp&s=74aa…",
                "width": 216,
                "height": 121
              }
            ],
            "enabled": false
          },
          "thumbnailUrl": "https://external-preview.redd.it/AQiUEhcGHE3YfA3sQBeQ19JM5rWJBxMI7qHIwZZXKCE.jpeg?width=320&crop=smart&auto=webp&s=7d75…",
          "spoiler": false,
          "locked": false,
          "archived": false,
          "community": {
            "name": "technology",
            "id": "2qh16",
            "subscribers": 20595712,
            "type": "public"
          }
        }
      }
    }
  }
}

Errors

StatusCodeMeaning
400INVALID_CURSORThe cursor is not one this operation returned. Start again without it.
400INVALID_PARAMSA parameter is missing, unknown or out of range. The message names it.
401UNAUTHORIZEDThe x-api-key header is missing, or the key is revoked or unknown.
402INSUFFICIENT_BALANCEThe balance does not cover this call. Top up in the dashboard.
404NOT_FOUNDThe account, post or group does not exist, or is private, deleted or age-restricted.
429MARKETPLACE_SATURATEDToo many concurrent calls. Retry after the Retry-After seconds.
502UPSTREAM_ERRORThe platform answered with something unusable. Retry with backoff.

Every code is listed in Errors. Failed calls are not billed.

Pricing

Price $0.001 per call, plus $0.001 for each extra call it makes — at most 2 more, so $0.003 in total. List price; the rate steps down above 1,000 calls a day.

Notes

  • A post's comments come in Reddit's own pages. The first page holds Reddit's top 25 comments and the replies it nests under them; each cursor page loads the next batch, as Reddit's "more comments" does. ext.more.count says how many top-level comments are still to load. limit does not apply to a post's comments.
  • Replies Reddit held back. A comment whose replies were not all included carries moreReplies.count. Pass its id as comment (with the same post) to load them: the answer is that comment with its replies, and cursor continues its direct replies.
  • comment takes a base36 id or a t1_ fullname. A comment the post does not have answers 404 NOT_FOUND.
  • period (hour … all) applies to a user's comments with sort=top or sort=controversial; sort=hot is for a user's comments only.

On this page