Reddit posts data API
Read a subreddit's posts, the full comment tree under a post, a community's profile, or Reddit search results. Each post, comment or community comes back as one record.
- Record types
postcommentcommunity- Fields
- 58
- From
- $1.80 per 1,000 records
What you can request
Set mode in the request body to choose what comes back; without it the request runs as posts. Each mode reads the inputs listed next to it.
| Mode | What comes back | Inputs | Billed as |
|---|---|---|---|
posts | One record per post in each subreddit, sorted hot, new, top or rising. With | subreddits sort time | post |
comments | One record per comment under each post. | postUrls subreddits commentSort maxCommentsPerPost | comment |
community | A community's profile: subscribers, weekly activity, description and creation date. | subreddits | community |
search | One record per post, comment or community that matches each query. | searchQueries searchType searchSort searchTime | search-result |
Every request also takes maxItems (records for the whole request) and maxItemsPerInput (records per search, URL or name).
Datasets
These Reddit record types have their own page, with their own example record, fields, options and prices.
| Dataset | One record is | Fields | From, per 1,000 |
|---|---|---|---|
| Comments | One record describes a single Reddit comment, from a post's comment thread or from a search hit. | 26 | $1.80 |
Example request and record
The request below is the one this example record answers. The names, usernames, photos and contact details of people in it are fictional. Long values in the record are shortened.
curl
curl -X POST https://api.urakimon.com/records/reddit \
-H "x-api-key: $URAKIMON_API_KEY" \
-H "content-type: application/json" \
-d '{
"mode": "posts",
"subreddits": ["Python"],
"sort": "hot",
"maxItemsPerInput": 30
}'Python
import os
import requests
res = requests.post(
"https://api.urakimon.com/records/reddit",
headers={"x-api-key": os.environ["URAKIMON_API_KEY"]},
json={
"mode": "posts",
"subreddits": [
"Python"
],
"sort": "hot",
"maxItemsPerInput": 30
},
)
res.raise_for_status()
records = res.json()["records"]Node
const res = await fetch("https://api.urakimon.com/records/reddit", {
method: "POST",
headers: {
"x-api-key": process.env.URAKIMON_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"mode": "posts",
"subreddits": ["Python"],
"sort": "hot",
"maxItemsPerInput": 30
}),
});
const { records } = await res.json();{ "source": "reddit", "id": "t3_1wkziub", "postId": "1wkziub", "title": "State of the art in Python 2026?", "url": "https://www.reddit.com/r/Python/comments/1wkziub/state_of_the_art_in_python_2026/", "permalink": "/r/Python/comments/1wkziub/state_of_the_art_in_python_2026/", "contentUrl": "https://www.reddit.com/r/Python/comments/1wkziub/state_of_the_art_in_python_2026/", "domain": "self.Python", "postType": "text", "subreddit": "Python", "subredditPrefixed": "r/Python", "subredditId": "t5_2qh0y", "author": "example_user_1", "authorId": "t2_example1", "score": 427, "upvoteRatio": 0.9383983572895277, "commentCount": 167, "awardCount": 0, "createdAt": "2026-09-19T22:26:17.014000+0000", "language": "en", "isNsfw": false, "isSpoiler": false, "isPromoted": false, "isStickied": false, "moderationVerdict": null, "thumbnail": "https://www.redditstatic.com/avatars/defaults/v2/avatar_default_4.png", "authorFlair": null, "flair": "Discussion", "text": "What would you guys consider the state of the art in python in 2026, or what do you expect from modern python codebases?\n\nHeres my list, …", "bodyHtml": "<p>\n What would you guys consider the state of the art in python in 2026, or what do you expect from modern python codebases?\n </…", "mediaType": "text", "media": [], "isSelf": true, "isGallery": false, "hasMedia": false, "wordCount": 157, "type": "post", "event": "post", "collectedAt": "2026-09-20T19:44:36.052Z"}Fields
Every record starts with the same envelope: source, type, event, id, url, collectedAt. What the envelope means. The tables below list the fields after it, read from real Reddit records. Where a field does not apply to an item it is null or an empty list, not left out. "Present on" names the billed events a field comes with when it is not on every record of that type.
post records
One record describes a single Reddit post, from a subreddit listing or from a search hit. Billed as post or search-result.
| Field | Type | What it holds | Present on |
|---|---|---|---|
postId | string | Post's id with the leading t3_ type prefix removed. | Only post |
title | string | Post title as shown on Reddit. | All |
permalink | string | Site-relative path to the post's page, for example /r/sub/comments/id/slug/. | All |
contentUrl | string | Post's primary content link: the post page for a self post, or an external URL for a link post. | Only post |
domain | string | Domain the post links to; self.<subreddit> for a self (text) post. | Only post |
postType | string | Reddit's raw post type: text, image, gif, gallery, video, link, poll, multi_media, or crosspost. | Only post |
subreddit | string | Name of the subreddit the post was posted in, without the r/ prefix. | All |
subredditPrefixed | string | Subreddit name with the r/ prefix, for example r/Python. | Only post |
subredditId | string | Reddit's internal id for the subreddit, t5_ prefixed. | All |
author | string | Username of the post's author. | All |
authorId | string | Reddit's internal id for the post's author, t2_ prefixed. | All |
score | integer | Net upvotes (upvotes minus downvotes) at collection time. | All |
upvoteRatio | integer | number | Fraction of votes that were upvotes, from 0 to 1. | Only post |
commentCount | integer | Total number of comments on the post at collection time. | All |
awardCount | integer | Number of awards given to the post. | Only post |
createdAt | string | ISO 8601 timestamp the post was created. | All |
language | string | Language code Reddit detected for the post, or null when unknown. | Only post |
isNsfw | boolean | Whether the post is marked not safe for work. | All |
isSpoiler | boolean | Whether the post is marked as a spoiler. | All |
isPromoted | boolean | Whether the post is a promoted or ad post. | Only post |
isStickied | boolean | Whether the post is pinned (stickied) in the subreddit. | Only post |
moderationVerdict | null | Moderation action recorded against the post, or null when none applies. | Only post |
thumbnail | string | URL of the post's thumbnail or author icon image. | Only post |
authorFlair | null | Author's flair text in the subreddit, or null. | Only post |
flair | null | string | Post's flair text, with any emoji rendered as :shortcode:, or null. | Only post |
text | null | string | Plain-text body of a self post, or null for a post with no self-text. | Only post |
bodyHtml | null | string | Raw HTML of the self post body, or null for a post with no self-text. | Only post |
mediaType | string | Same value as postType: the kind of media the post contains. | Only post |
media | array | Media attached to the post: an array of objects with type (image, gif, video, or poster) and url. | Only post |
isSelf | boolean | Whether the post is a self (text) post rather than a link post. | Only post |
isGallery | boolean | Whether the post is a multi-image gallery. | Only post |
hasMedia | boolean | Whether the post has at least one media item. | Only post |
wordCount | integer | null | Number of words in the post's self-text body, or null when the post has no self-text. | Only post |
snippet | null | Short excerpt of the post body shown in search results, or null. Only on search-result records. | Only search-result |
searchQuery | string | Search query string that produced this result. Only on search-result records. | Only search-result |
page | integer | 1-based page number of search results this record came from. Only on search-result records. | Only search-result |
comment records
One record describes a single Reddit comment, from a post's comment thread or from a search hit. Billed as comment or search-result. 26 fields. Reddit comments: every field, an example record and the options
community records
One record describes a single subreddit (community), from its own page or from a search hit. Billed as search-result.
| Field | Type | What it holds | Present on |
|---|---|---|---|
createdAt | string | ISO 8601 date the subreddit was created; a date-only source is pinned to UTC midnight. | All |
name | string | Subreddit name, without the r/ prefix. | All |
prefixedName | string | Subreddit name with the r/ prefix, for example r/Python. | All |
subscribers | integer | Total subscriber count. Only on search-result records. | All |
onlineCount | integer | Number of members currently marked online, or null. Only on search-result records. | All |
description | string | Subreddit's public description or about text, or null. | All |
icon | null | string | URL of the subreddit's icon image. Only on search-result records. | All |
over18 | boolean | Whether the subreddit is marked not safe for work (over 18). | All |
searchQuery | string | Search query string that produced this result. Only on search-result records. | All |
page | integer | 1-based page number of search results this record came from. Only on search-result records. | All |
displayName | string | Subreddit's display name as shown in its banner, or null. Only from the subreddit's own page. | All |
weeklyActiveUsers | integer | Number of members active in the subreddit over the last 7 days. Only from the subreddit's own page. | All |
weeklyContributions | integer | Number of posts and comments in the subreddit over the last 7 days. Only from the subreddit's own page. | All |
Reddit data pricing
You pay once for each record you receive, at the price of the event it carries. A request that returns nothing costs nothing.
| Event | Per 1,000 records | Per record |
|---|---|---|
comment | $1.80 | $0.00180 |
post | $2.10 | $0.00210 |
search-result | $2.10 | $0.00210 |
community | $2.30 | $0.00230 |
Freshness and limits
- Records are collected when you send the request. Each one carries
collectedAt, the UTC time it was read. POST /records/redditreturns up to 500 records in one response. Ask for more and it answers413; send the same body toPOST /jobs/redditinstead.- A request without
maxItemsreturns up to 100 records. - Your key's rate limit and quotas apply to every source.