SocialCrawl

Reddit

Reddit subreddit feeds, community details, post bodies, full comment trees, video transcripts, three kinds of search, and a one-call listening sweep

Reddit is the richest source of unprompted opinion on the API, and these endpoints cover it end to end: a community's feed, its own stats and rules, a post's body, the whole nested comment tree beneath it, video transcripts, three different searches, and a composite that does a listening sweep in one call.

Base URL: /v1/reddit/...

Reddit search is the slowest social search on the API, 10 to 12 seconds, and its relevance is loose. Treat omni-search as a voice-of-customer sweep, not a precision ranking: you are trading exactness for coverage of what people actually said. Set client timeouts accordingly, or stream it.

Quickstart

1. Size up a community

cURL
curl "https://www.socialcrawl.dev/v1/reddit/subreddit/details?subreddit=technology" \
  -H "x-api-key: YOUR_API_KEY"

2. Read its feed

cURL
curl "https://www.socialcrawl.dev/v1/reddit/subreddit?subreddit=technology" \
  -H "x-api-key: YOUR_API_KEY"

3. Read computed fields

When an endpoint supports a computed field and the required source inputs are present, the unified response includes that optional field. Depending on the endpoint, optional fields can include engagement_rate, language, content_category, and estimated_reach. See Computed fields for formulas, clamping rules, and null semantics. Where an endpoint supports them, list rows also carry judged labels (computed.labels, computed.relevance) by default at no extra credits; see Labels.

Communities

EndpointCreditsWhat it returnsKey parameters
GET /v1/reddit/subreddit/details1Subscriber count, description, rules, and community settingssubreddit or url
GET /v1/reddit/subreddit1The community feed: titles, scores, comment counts, flairsubreddit, sort, timeframe, after, label, judgments

timeframe only works with sort=top. On subreddit, a timeframe with any other sort is ignored by Reddit. Omitting sort entirely auto-selects top for you, so ?subreddit=technology&timeframe=week behaves as you would expect, but ?subreddit=technology&sort=new&timeframe=week quietly gives you the unfiltered new feed.

Posts and comments

EndpointCreditsWhat it returnsKey parameters
GET /v1/reddit/post1One post including the body text, plus score, upvote ratio, flairurl
GET /v1/reddit/post/comments5The full nested comment tree, each comment with author, score, and awardsurl, cursor, trim, label, judgments
GET /v1/reddit/post/transcript10A video post's captions, both raw and as plain texturl, language

The feed and search endpoints leave the body text out, so post is the call that gets it.

post/comments is the one advanced-tier endpoint on this platform, because it expands the whole tree rather than a page. On very large threads the response reports which branches were left unopened. When Reddit publishes no captions, post/transcript comes back empty and flagged rather than as an error.

EndpointCreditsWhat it returnsKey parameters
GET /v1/reddit/search1 to 26One keyword across all of Reddit, with subreddit names and permalinksquery, sort, timeframe, after, label, relevance, judgments
GET /v1/reddit/subreddit/search1 to 26The same search confined to one communitysubreddit, query, sort, timeframe, cursor
GET /v1/reddit/subreddits/search1 to 26Which communities discuss a topic; include=details adds the creation date, weekly activity, rules and language per communityquery, include, limit (1-25), cursor
GET /v1/reddit/omni-search5 to 9A listening sweep: search, thread comments, and a subreddit roll-upquery, threads (1-8, default 8), subreddit, timeframe

subreddits/search is the call that comes before the other three: it answers which communities discuss a subject, and author.id on each row is the exact subreddit parameter the rest of this platform takes. On a plain call it returns the name, subscriber count, description and icon for 1 credit. Add include=details and every community on the page is joined, in the same call, to subreddit/details, so the creation date, weekly active users, weekly contributions, rules and language land on each row: 1 credit for the page plus 1 per community filled from a fresh lookup, 26 at most. Communities already in cache are filled for free, communities that could not be filled are refunded, and limit=N (1 to 25) takes the top N and caps the extra credits with it. The response carries a data.hydration block with the rows looked up, filled and served from cache, the credits held and kept, and the milliseconds the lookups added. Allow 3 to 9 seconds on a fresh page, never more than 12, and nothing when the communities are already cached.

The keyword search lanes are metered too: the page itself is 1 credit, and only include_body=true can take it higher. That flag is rarely worth reaching for on /v1/reddit/search, which already returns bodies on the rows themselves; it reserves up to 25 extra credits, refunds every one it does not spend, and a link post has no body to fetch and is not charged for. On the scoped lane the bodies are genuinely absent, so the flag does something, and /v1/reddit/search?query=subreddit:<name> <terms> gets you the same bodies for 1 credit if you can live with a different index.

Scoped search is the one to reach for when a term means something different in r/investing than in r/wallstreetbets. One caveat on timeframe: it narrows the window on sort=relevance, sort=top and the comment-count sort, and does nothing on sort=new, which is already ordered newest-first and returns recent posts regardless.

cURL
curl "https://www.socialcrawl.dev/v1/reddit/subreddit/search?subreddit=technology&query=data%20api&sort=top&timeframe=month" \
  -H "x-api-key: YOUR_API_KEY"

The listening sweep

GET /v1/reddit/omni-search is what you would otherwise build by hand: search, then a comments call per thread, then an aggregation. It does all three and returns threads with their top comments inline, capped at 15 a thread, plus a per-community tone label in the roll-up.

Pricing is metered and the floor is 5, not 1. It bills 1 credit per search page plus 1 credit per successfully expanded thread, with a minimum of 5 credits. A thread that fails to expand is not billed, and the unused thread ceiling is refunded. threads is the lever: 8 threads is a 9-credit ceiling, and lowering it lowers the ceiling.

subreddit scopes the whole sweep to one community, and next_cursor resumes the search. Send Accept: text/event-stream and it streams each thread as its comments land instead of making you wait.

cURL
curl "https://www.socialcrawl.dev/v1/reddit/omni-search?query=headless%20cms&threads=5&timeframe=month" \
  -H "x-api-key: YOUR_API_KEY"

All endpoints

14 endpoints available.

EndpointPathCredit Tier
Reddit VoC sweep: one keyword → threads across all of Reddit with subreddit attribution and top comments inline./v1/reddit/omni-searchstandard (5-9cr)metered
Get a Reddit post/v1/reddit/poststandard (1cr)
Get a Reddit user profile/v1/reddit/profilestandard (1cr)
Read a Reddit account's own comment history, newest first, deeper than any search index reaches. Metered: 2 credits per comment returned, so try /v1/reddit/search/comments?query=author:name first/v1/reddit/profile/commentsstandard (2-200cr)metered
List a Reddit user's posts/v1/reddit/profile/postsstandard (1cr)
Search Reddit posts/v1/reddit/searchstandard (1-34cr)metered
Search Reddit comments/v1/reddit/search/commentsstandard (1cr)
Search Reddit image and video posts/v1/reddit/search/mediastandard (1cr)
List Reddit subreddit posts/v1/reddit/subredditstandard (1-5cr)metered
Get Reddit subreddit details/v1/reddit/subreddit/detailsstandard (1cr)
Search within a subreddit/v1/reddit/subreddit/searchstandard (1-26cr)metered
Find subreddits by topic/v1/reddit/subreddits/searchstandard (1-26cr)metered
List Reddit post comments/v1/reddit/post/commentsadvanced (5-9cr)metered
Get a Reddit video post transcript/v1/reddit/post/transcriptpremium (10cr)

Platform notes

Spell subreddit names as Reddit does on subreddit/details. The main source for that endpoint is case-sensitive, and a non-canonical spelling falls through to a second source that answers with the core fields but without the weekly-activity numbers. Use the canonical casing (AskReddit, not askreddit) to get the whole object. The same applies inside subreddits/search?include=details, where each row carries Reddit's own casing: a community the main source cannot answer still gets its creation date and language from the second source, and that row is billed as filled while its weekly numbers and rules stay empty.

Reddit's ad-library endpoints are disabled upstream and return a 503 at no charge. For ad-library work, the Facebook, Google, and TikTok ad libraries are live.

Pagination is not uniform. subreddit and search page with after; subreddit/search, post/comments, and omni-search page with cursor.

Identifiers split three ways. subreddit, subreddit/search, and subreddit/details take a subreddit name, and details also accepts a url; post, post/comments, and post/transcript take a post url; the searches take a query.

Reddit feeds other surfaces too. It is one of the sources behind /v1/search/everywhere and the leg that most Prism brand composites lean on.

Labels

These lists label their rows by default, at no extra credit. On /v1/reddit/post/comments, each comment carries sentiment, question, purchase_intent and complaint on computed.labels. On /v1/reddit/search and /v1/reddit/subreddit, each row carries sponsored, intent and niche. /v1/reddit/search also scores each row's relevance to your query on computed.relevance, without dropping or reordering anything; add relevance=filter to drop the rows that are about something else, still free. Send judgments=off for the page without them. See Labels for the field shapes, rows still pending, and the labels you can add with label=.

Next steps