πŸ’¬

Reddit Posts, Comments & Community Data APIs

Read public Reddit threads, recent community feeds, subreddit metadata and user karma as JSON. Keep source links and collection times for product research and social listening without assuming complete discussion coverage.

Open the standalone Reddit data demo

Your first subreddit information request

Replace <API_KEY> with your authorized platform API key from the dashboard. Make production requests server-side and keep the key out of shared URLs, screenshots, source control and logs.

The read-only example calls subreddit-info with subreddit=AskReddit, a bare community name without r/ or a URL. No Reddit account credential is required. Inspect the returned description, subscriber count and creation timestamp; current availability and populated fields are not guaranteed. Opening this page, browsing endpoints or copying an example does not send a data request.

Base URL https://api.opendata-api.com

curl -X GET 'https://api.opendata-api.com/api/project/reddit/subreddit-info?key=<API_KEY>&subreddit=AskReddit'
Reddit data request basics
  • Use a full discussion URL for post-details and a full subreddit URL for posts. subreddit-comments and subreddit-info take only the community name, such as AskReddit, without r/. User reads take a bare username, such as spez, without u/. These independent, read-only requests do not require a Reddit account session or modify an account; use public data only for authorized, lawful purposes and respect access, retention and deletion requirements.
  • Thread comments use content for text and replies arrays for nested nodes. The recent-comment feed uses body for text and includes parent_id, link_id, link_title and link_permalink; its observed replies value was an empty string, not a reply tree. Parse these endpoints separately and use the source-post link for deliberate thread-context lookup. Some numeric-looking fields in nested replies were strings, so normalize timestamps and scores before calculations.
  • For listings that declare cursor, omit it initially and reuse only that endpoint's actual returned continuation value with the same community, account and filters. Demonstrated post and recent-comment listings use meta.cursor. Stop on an empty body or a missing, null, empty or repeated cursor, deduplicate IDs and impose a request budget. Listing cursors do not apply to post-details, and available pages are not a complete historical archive.
  • The checked historical thread reported meta.totalComments=194 and returned 76 top-level comment objects plus nested replies. Keep the reported total, top-level count and traversed-node count separate: none proves exhaustive retrieval. post-details has no documented comment pagination or expansion mechanism. CSV export and parent-link construction are client-side; official-client helpers such as PRAW replace_more are not capabilities of this API.
  • Community subscribers is a subscriber-count snapshot, not active readers or a growth series. User karma and verified, is_mod or is_gold flags are public metadata, not proof of real-world identity, authenticity or trustworthiness. Calculate account age from created_utc locally, preserve unavailable profile or image fields, and do not infer private activity from public observations.
  • Build keyword matching, brand alerts, sentiment labels, CSV exports, account-age calculations and snapshot comparisons in your application. No keyword-search endpoint or built-in sentiment scores are declared for this project. Use a bounded community feed for local matching, retain source links and collection times, and deduplicate returned IDs. Scores, subscriber counts and karma can change; recent samples do not establish a guaranteed delivery interval or complete monitoring coverage.
  • Live checks covered post-details, posts with filter=new, subreddit-comments, subreddit-info and user-stats. Hot/top post modes were documented but not tested. user-data, subreddit-popular and subreddit-new are included from documentation and supplied samples, not successful live checks; validate their current availability, fields, filters, ordering and pagination before production use. Safe public examples do not guarantee successful access or populated results.

Check transport status, business status and result shape

Check HTTP status separately from the gateway's code/message/data business status: code 200 indicates gateway business success, but HTTP 200 alone does not establish a usable result. Then inspect meta.status and body inside data. Thread details use body.post and body.post_comments, listings use body arrays, and community or user metadata uses body objects. A checked nonexistent subreddit produced meta.status=200, an empty body array and a null cursor; that is an observed empty listing, not proof of how every inaccessible community behaves.

Choose a Reddit research workflow
Read a selected discussion and preserve nested replies

post-details requires a full public discussion URL containing /r/community/comments/post-id/. Read body.post and recursively traverse body.post_comments using each node's replies array. Preserve the returned parent-child structure for client-side exports; no comment cursor or missing-comment expansion input is documented.

Discover posts and collect recent community comments

posts requires a full subreddit URL and offers hot, new or top through filter. subreddit-comments instead requires a bare subreddit name and returns comments across discussions. Start without cursor, then continue only with that listing's returned meta.cursor and unchanged selectors. Use a source discussion URL for a separate post-details request when a comment needs thread context.

Build a community shortlist and inspect its public context

subreddit-info requires a bare community name and returns descriptions, subscriber counts, creation time and available artwork. subreddit-popular and subreddit-new have no required community input; omit their optional cursor initially. Those two discovery listings have not been live-validated, so check response shapes, ordering and continuation before using them to seed a watchlist.

Add public karma, account age and bounded activity context

user-stats and user-data require a bare username without u/ or a profile URL. user-stats provides karma and creation time, not authored content. user-data documents comments or posts via filter, new/hot/top via sortType and an optional cursor, but its live filtering, row shapes and pagination still need validation. Public profile flags are not identity or trust verification.

Posts And Comments

GET /api/project/reddit/post-details

Get Post Details and Available Comments

Full docs β†’
Details

Pass the full URL of one public Reddit discussion in url. The response contains meta.status, meta.totalComments, body.post, and body.post_comments. Observed post fields include id, title, author, subreddit, selftext, created_utc, score, ups, upvote_ratio, num_comments, permalink, and url. Each returned comment node uses id, author, content, up_votes, score, created_utc, and a replies array that can contain further comment nodes. Some numeric-looking fields in nested replies were strings, so normalize types before calculations. The checked historical discussion returned post p0esdp in wallstreetbets, meta.totalComments=194, and 76 top-level comment objects plus nested replies. Reported totals and top-level array length are different measurements; neither establishes that every comment is available. This endpoint has no cursor parameter and does not provide a documented way to expand missing comments. Text can be empty or unavailable for some posts; treat voting fields as a snapshot rather than a fixed score.

Test this Reddit data endpoint 1 required Β· 0 optional
ParameterInValue
query

Request cost is temporarily unavailable. No price is assumed.

View pricing
curl -X GET 'https://api.opendata-api.com/api/project/reddit/post-details?key=<API_KEY>&url=https%3A%2F%2Fwww.reddit.com%2Fr%2Fwallstreetbets%2Fcomments%2Fp0esdp%2Fdo_hedge_funds_beat_the_market_i_analyzed_the'
GET /api/project/reddit/posts

List Posts from a Subreddit URL

Full docs β†’
Details

Pass a full subreddit URL in url. Choose filter=hot, new, or top; hot is the documented default. Omit cursor for the first request, then use the returned meta.cursor with the same URL and filter when another page is available. The response contains meta.status, meta.total, meta.cursor, and a body array. Observed post rows include id, name, title, author, subreddit, selftext, created_utc, score, ups, num_comments, permalink, and url. created_utc is a Unix timestamp in seconds, and selftext can be empty. A live filter=new request for AskReddit returned 25 posts, including one created seconds before the request. That observation does not establish a fixed page size or delivery-time guarantee, and hot/top sorting was not live-tested. The checked nonexistent subreddit returned meta.status=200, meta.total=0, meta.cursor=null, and body=[]. Handle that clean empty result without displaying unrelated posts or assuming it describes every inaccessible-community case. Cursor listings do not promise a complete historical archive.

Test this Reddit data endpoint 1 required Β· 2 optional
ParameterInValue
query
query
Optional listing modes and continuation cursors (1)
ParameterInValue
query

Request cost is temporarily unavailable. No price is assumed.

View pricing
curl -X GET 'https://api.opendata-api.com/api/project/reddit/posts?key=<API_KEY>&url=https%3A%2F%2Fwww.reddit.com%2Fr%2FAskReddit&filter=hot'
GET /api/project/reddit/subreddit-comments

Get Recent Comments from a Subreddit

Full docs β†’
Details

Pass a bare community name such as AskReddit in subreddit, without r/ or a URL. Omit cursor initially and reuse the returned meta.cursor for continuation within the same community. The observed response contains meta.status, meta.subreddit, meta.cursor, and a body array of comment records. Rows include id, name, author, body, body_html, created_utc, subreddit, score, ups, parent_id, link_id, link_title, link_permalink, and permalink. Use body for a comment's text and created_utc for its Unix creation time in seconds. The checked AskReddit feed returned 25 recent comments, including one created seconds before the request. This is a cross-thread comment listing, not a complete reply tree: replies was an empty string in observed feed records. Use link_permalink to retrieve selected discussion context with post-details. Neither a guaranteed delivery interval nor complete subreddit comment history is established. Keyword matching, alerts, and sentiment labels require client-side processing.

Test this Reddit data endpoint 1 required Β· 1 optional
ParameterInValue
query
Optional listing modes and continuation cursors (1)
ParameterInValue
query

Request cost is temporarily unavailable. No price is assumed.

View pricing
curl -X GET 'https://api.opendata-api.com/api/project/reddit/subreddit-comments?key=<API_KEY>&subreddit=AskReddit'

Communities

GET /api/project/reddit/subreddit-info

Get Public Subreddit Information

Full docs β†’
Details

Pass a bare subreddit name such as AskReddit. The observed response contains meta.status, meta.subreddit, and a body object with name, title, public_description, description, subscribers, created_utc, subreddit_type, over18, lang, url, icon_img, community_icon, banner_img, and banner_background_image. The checked AskReddit result identified a public community with creation timestamp 1201233135 and URL /r/AskReddit/. Use public_description for a short introduction and description for longer community text. Subscriber counts and image URLs can change; image fields may be empty or unavailable for other communities. subscribers is not an active-user count, and this response is not a history of subscriber growth. Calculate community age or count deltas locally from stored timestamps and snapshots. Treat fields such as lang as returned metadata rather than inferring the language of every discussion. This read does not require a Reddit account session or modify the community.

Test this Reddit data endpoint 1 required Β· 0 optional
ParameterInValue
query

Request cost is temporarily unavailable. No price is assumed.

View pricing
curl -X GET 'https://api.opendata-api.com/api/project/reddit/subreddit-info?key=<API_KEY>&subreddit=AskReddit'
GET /api/project/reddit/subreddit-new

Discover New Subreddits

Full docs β†’
Details

Request the documented new-community listing with no required inputs. cursor is an optional continuation value and should be omitted on the first request. This endpoint has not been live-validated; confirm the current response envelope, cursor behavior, and meaning of its ordering before using it for time-sensitive discovery. The supplied documentation sample shows a body array containing community objects with display_name, display_name_prefixed, id, name, title, description, public_description, created_utc, subscribers, subreddit_type, url, and optional image fields. The sample includes a restricted community with a small subscriber count, so a listed entry is not proof of open access, an established audience, or active discussion. Use creation timestamps and your own collection times as separate values, and inspect candidates with subreddit-info rather than assuming an exhaustive or strictly newest-first community catalog.

Test this Reddit data endpoint 0 required Β· 1 optional
Optional listing modes and continuation cursors (1)
ParameterInValue
query

Request cost is temporarily unavailable. No price is assumed.

View pricing
curl -X GET 'https://api.opendata-api.com/api/project/reddit/subreddit-new?key=<API_KEY>'

Users

GET /api/project/reddit/user-stats

Get Public User Profile and Karma

Full docs β†’
Details

Pass a bare Reddit username such as spez, without u/ or a profile URL. The observed response contains meta.status, meta.username, and a body object with name, total_karma, link_karma, comment_karma, awardee_karma, awarder_karma, created_utc, is_gold, is_mod, verified, and profile. profile includes icon_img and a subreddit object containing public profile fields such as display_name, public_description, title, and url. The checked spez account returned creation timestamp 1118030400 and a public profile URL of /user/spez/. Karma values and public profile text are snapshots and can change. Calculate account age from created_utc in your own application. The returned verified, is_mod, and is_gold flags are account metadata, not an independent determination of identity, authenticity, or trustworthiness. This endpoint does not return the user's posts or comments; use user-data for the separately documented activity listing, whose live behavior has not been validated.

Test this Reddit data endpoint 1 required Β· 0 optional
ParameterInValue
query

Request cost is temporarily unavailable. No price is assumed.

View pricing
curl -X GET 'https://api.opendata-api.com/api/project/reddit/user-stats?key=<API_KEY>&username=spez'
GET /api/project/reddit/user-data

List Public User Activity

Full docs β†’
Details

Request the documented public activity listing for a bare username. filter selects comments or posts, sortType selects new, hot, or top, and cursor is an optional continuation value. The configured defaults are filter=comments and sortType=new. This endpoint has not been live-validated; its filtering, sorting, pagination, and current availability need validation before production use. The supplied documentation's comment sample has a body array with id, name, author, body, body_html, created_utc, subreddit, parent_id, link_id, link_title, link_permalink, permalink, and score. That sample describes comment records, not a verified schema for every mode. Do not assume post rows use the same text field or that every documented option returns the expected entity type. Follow only actual returned continuation values and treat the result as a bounded public activity sample, not a complete account archive or access to private activity.

Test this Reddit data endpoint 1 required Β· 3 optional
ParameterInValue
query
query
Optional listing modes and continuation cursors (2)
ParameterInValue
query
query

Request cost is temporarily unavailable. No price is assumed.

View pricing
curl -X GET 'https://api.opendata-api.com/api/project/reddit/user-data?key=<API_KEY>&username=spez&filter=comments&sortType=new'

Public discussion and community data capabilities

Collect public Reddit discussions and community context as structured JSON for developer tools, social listening, content discovery, and product research. Read a selected thread, follow a subreddit feed, or enrich a research watchlist without publishing or changing an account.

  • Post details: retrieve post text, voting fields, available comments, and nested replies from a discussion URL
  • Subreddit posts: choose hot, new, or top listings and continue with the returned cursor when available
  • Recent comments: collect comment text, authors, timestamps, and links back to the source discussions
  • Community metadata: read descriptions, subscriber counts, creation dates, community types, and available images
  • Public user context: retrieve karma totals, account creation time, and profile fields
  • Additional documented reads: public user activity plus new and popular community listings; these three endpoints have not been live-validated

Live samples demonstrated recent posts and comments, a historical thread with replies, community information, and public user statistics. Listing coverage and returned comment trees are bounded; neither exhaustive history nor guaranteed real-time delivery is promised. Build exports, alerts, sentiment analysis, and historical comparisons in your own application. This is an independent, read-only data API, not an official Reddit service.

Guides