Reddit comments API

One record describes a single Reddit comment, from a post's comment thread or from a search hit. To get these records, set mode to comments, which reads postUrls, subreddits, commentSort, and maxCommentsPerPost.

Record type
comment
Fields
26
From
$1.80 per 1,000 records
Billed as
comment

Example request and record

The request below is the one this record answers, taken from a real run. The names, usernames, photos and contact details of people in it are fictional. Long text and long lists are shortened here. The download has the whole record.

Example Reddit comment recordExample
{  "source": "reddit",  "id": "t1_p8tou35",  "commentId": "p8tou35",  "postId": "t3_1wbwx4y",  "parentId": "t1_p8tkeze",  "depth": 1,  "replyCount": 0,  "author": "example_user_1",  "authorAvatar": "https://example.com/avatars/1.jpg",  "authorFlair": null,  "score": 1,  "awardCount": null,  "createdAt": "2026-09-09T21:03:54.678000+0000",  "permalink": "/r/Python/comments/1wbwx4y/comment/p8tou35/",  "url": "https://www.reddit.com/r/Python/comments/1wbwx4y/comment/p8tou35/",  "contentType": "text",  "isOp": false,  "isCollapsed": false,  "isTranslatable": false,  "isControversial": false,  "text": "Your submission has been automatically queued for manual review by th…  "bodyHtml": "<div id=\"t1_p8tou35-post-rtjson-content\" class=\"py-0 xs:mx-xs mx-2…  "subreddit": "Python",  "type": "comment",  "event": "comment",  "collectedAt": "2026-09-14T04:38:11.871Z"}

Each field name links to its row in the field table. Long values are shortened.

Fields

Every field of comment records, read from real Reddit records. Where a field does not apply to an item it is null or an empty list, not left out. Each record starts with the envelope: source, type, event, id, url, collectedAt.

26 fields on comment records, besides the envelope
FieldTypeWhat it holdsPresent on
postIdstringId of the post the comment belongs to, t3_ prefixed.All
permalinknull | stringSite-relative path to the comment.All
subredditstringName of the subreddit the comment's post belongs to, without the r/ prefix.All
subredditIdstringReddit's internal id for the subreddit. Only on search-result records.Only search-result
authorstringUsername of the comment's author.All
scoreinteger | nullNet upvotes (upvotes minus downvotes) at collection time.Only comment
awardCountnullNumber of awards given to the comment.Only comment
createdAtstringISO 8601 timestamp the comment was created.All
isNsfwbooleanWhether the comment's parent post is marked not safe for work. Only on search-result records.Only search-result
authorFlairnullAuthor's flair text in the subreddit, or null.Only comment
textnull | stringPlain-text body of the comment.All
bodyHtmlnull | stringRaw HTML of the comment body.Only comment
commentIdstringComment's id with the leading t1_ type prefix removed.Only comment
parentIdnull | stringId of the comment's immediate parent comment, or null for a top-level comment.Only comment
depthintegerNesting depth of the comment in the thread; 0 for a top-level comment.Only comment
replyCountintegerNumber of direct replies to the comment counted within the same fetched batch.Only comment
authorAvatarstringURL of the comment author's avatar image.Only comment
contentTypenull | stringReddit's raw content type for the comment body.Only comment
isOpbooleanWhether the comment's author is the original poster of the parent post.Only comment
isCollapsedbooleanWhether the comment is collapsed by default.Only comment
isTranslatablebooleanWhether Reddit offers a translation for the comment.Only comment
isControversialbooleanWhether Reddit marks the comment as controversial.Only comment
postTitlestringTitle of the comment's parent post, when known: on search hits, and on comments fetched by expanding a subreddit listing.All
postUrlstringURL of the comment's parent post; present only when comments were fetched by expanding a subreddit listing.Only comment
searchQuerystringSearch query string that produced this result. Only on search-result records.Only search-result
pageinteger1-based page number of search results this record came from. Only on search-result records.Only search-result

Options

These inputs and switches change what comes back. Every request also takes maxItems and maxItemsPerInput.

OptionTypeDefaultWhat it does
postUrlsarraynonehttps://www.reddit.com/r/Python/comments/1w78kp5/... (an id alone needs the subreddit, so prefer URLs)
subredditsarraynoneNames or URLs: python, r/learnpython, https://www.reddit.com/r/AskReddit/
commentSortstring"top"In comments mode, how to order each post's comment tree.
maxCommentsPerPostinteger200Maximum comments to collect per post.

Reddit comments pricing

You pay once for each record you receive, at the price of the event it carries. A request that returns nothing costs nothing.

EventPer 1,000 recordsPer record
comment$1.80$0.00180

Edge cases

  • A post that does not exist returns no record and costs nothing.
  • maxCommentsPerPost caps the comments per post, 200 unless you set it. It counts across the whole thread.
  • Long threads are read through up to 40 of Reddit's load-more links per post.

Related