~ / endpoints / Subreddit API

Reddit Subreddit Scraper API

Name a subreddit and our Reddit subreddit scraper returns its post listing, hot, new, top, or rising, as an ordered JSON array where every thread carries its title, author, score, upvote ratio, comment count, and a cursor for the next page.

Get a free API keyBrowse endpoints
1,000
free requests
2.6s
median response
13
fields per post
JSON
structured output
the challenge

Why Reddit Subreddit data is hard to collect

Watching a subreddit through Reddit's Data API means registering an OAuth client, since every request now authenticates with OAuth2, and Reddit charges $0.24 per 1,000 calls above a free ceiling of 100 queries per minute introduced on July 1, 2023. The listing surface also stops paging at 1,000 posts per feed and exposes only the most recent ones, so deep or continuous monitoring of an active community runs into that wall fast.

get started

Call the Reddit Subreddit Scraper API in one request

cURL
curl "https://api.redditscraperapi.com/api/v1/reddit/subreddit?subreddit=python&sort=hot&limit=25&api_key=$API_KEY"
Python
import requests

resp = requests.get(
    "https://api.redditscraperapi.com/api/v1/reddit/subreddit",
    params={
        "subreddit": "python",
        "sort": "hot",
        "limit": 25,
        "api_key": "YOUR_API_KEY",
    },
)
data = resp.json()

print(data["total_results"], "posts from r/" + data["subreddit"], "sorted by", data["sort"])
for post in data["posts"]:
    print(f"[{post['score']}] {post['title']} ({post['num_comments']} comments)")

# page on with the returned cursor
if data["after_cursor"]:
    print("next page after:", data["after_cursor"])
inputs

Parameters

ParameterRequiredDefaultNotes
subredditrequired-The community to pull, with or without a leading r/ (for example python or r/python). This is the only required field.
sortoptionalhotWhich listing to read: hot, new, top, rising, or controversial. It sets the order Reddit ranks the posts in before we return them.
toptional-Time window for the top and controversial sorts: hour, day, week, month, year, or all. Ignored by hot, new, and rising.
afteroptional-Paging cursor. Pass the after_cursor value from a previous response to fetch the next page of the same listing.
limitoptional25How many posts to return, from 1 to 75. One page of the shreddit listing yields up to roughly 24 unique posts, so a higher limit may return fewer.
the response

Fields the Reddit Subreddit Scraper API returns

200 OK
{
  "subreddit": "python",
  "sort": "hot",
  "t": null,
  "after_cursor": "t3_1abc234",
  "total_results": 25,
  "posts": [
    {
      "id": "t3_1abd567",
      "title": "What is your favorite Python library and why?",
      "score": 4821,
      "num_comments": 936,
      "upvote_ratio": 0.97,
      "awards": 3,
      "author": "dev_jane",
      "author_id": "t2_8x4q1",
      "subreddit": "python",
      "permalink": "https://www.reddit.com/r/python/comments/1abd567/",
      "external_url": null,
      "domain": null,
      "created": "2026-05-31T14:22:08+00:00"
    },
    {
      "id": "t3_1abe890",
      "title": "I built a CLI for tracking subreddit keywords",
      "score": 1290,
      "num_comments": 187,
      "upvote_ratio": 0.95,
      "awards": 0,
      "author": "toolmaker",
      "author_id": "t2_4k2p9",
      "subreddit": "python",
      "permalink": "https://www.reddit.com/r/python/comments/1abe890/",
      "external_url": "https://github.com/toolmaker/subkeys",
      "domain": "github.com",
      "created": "2026-05-31T11:08:44+00:00"
    }
  ],
  "_source": "shreddit"
}
FieldTypeDescription
subredditstringThe community the listing was read from, without the r/ prefix.
sortstringThe listing sort that was applied (hot, new, top, rising, or controversial).
tstring or nullThe time window applied for top or controversial, or null when none was set.
after_cursorstring or nullThe cursor for the next page of this listing. Pass it back as after to continue; null when no further page is exposed.
total_resultsintegerHow many posts are in the posts array for this page.
postsarrayThe post listing in ranked order, each entry holding the fields below.
posts[].idstringThe submission's t3_ thing id, unique across Reddit and ready to hand to the post endpoint.
posts[].titlestringThe post title as shown in the listing.
posts[].scoreinteger or nullNet upvotes (upvotes minus downvotes) at request time. Null only on the rare .rss fallback when the live vote surface was unreachable.
posts[].num_commentsinteger or nullComment count Reddit reports for the submission.
posts[].upvote_ratiofloat or nullShare of votes that are upvotes, from 0 to 1, so 0.97 reads as 97 percent upvoted. Null when the listing tag omits it.
posts[].awardsinteger or nullNumber of awards on the post when the listing exposes an award count.
posts[].authorstringUsername of the poster, or [deleted] when the account was removed.
posts[].author_idstring or nullThe poster's t2_ account id when Reddit exposes it in the listing.
posts[].permalinkstring (url)Absolute www.reddit.com link to the submission.
posts[].external_urlstring or nullThe outbound link a link post points to, or null for a self post.
posts[].domainstring or nullHost of external_url (for example github.com) on link posts, otherwise null.
posts[].createdstringISO-8601 timestamp of when the post was submitted.
what you build

What you can build with it

>

Subreddit monitoring at scale

Poll a community's new or hot listing on a schedule and capture each fresh thread the moment it lands, so a busy subreddit feeds your pipeline without anyone refreshing a browser tab.
>

Keyword and topic watch

Pull the listing and filter post titles for the terms you track, turning a Reddit keyword scraper into a same-day alert when your product, ticker, or niche shows up in a community.
>

Idea and demand mining

Read the rising and new feeds of a niche subreddit as a Reddit idea scraper, surfacing the questions and pain points a community raises before any thread climbs to the front page. Used this way the listing doubles as a Reddit thread scraper for fresh discussion.
>

Trend and ranking research

Sort by top within a time window to see which threads a subreddit produced over the day, week, or month, and compare score and num_comments to read what resonates.
>

Seed lists for deeper scraping

Collect each post id from the listing, then hand it to the Reddit post scraper API to pull the full submission and its comment thread for the ones worth a closer look.
>

Link and image feeds

Read external_url and domain off link posts to build a feed of what a community shares, including the image and gallery submissions when you scrape a subreddit for images and other media.
our edge

Why developers pick our Reddit Subreddit Scraper API

Our Reddit subreddit scraper runs the residential fetch, anti-bot clearance, and HTML parsing on our infrastructure, reading the live community listing and returning each thread as a flat post object with real score, comment count, and upvote ratio attached. Pass a subreddit name and the page comes back in about 2.6 seconds behind one api_key, with an after_cursor to walk the listing and a free tier of 1,000 requests.

*

One key, no developer app

A single api_key authenticates the call. There is no Reddit OAuth client to register, no token to refresh, and no 100-queries-per-minute review to clear before you read a listing.
*

Every sort Reddit serves

Read hot, new, top, rising, or controversial, with a time window on the top and controversial sorts, so you choose exactly which slice of a community a request returns.
*

Real scores in the listing

Each post arrives with its net score, upvote_ratio, and comment count read from Reddit's rendered listing, so you can rank or filter a whole feed without refetching posts one by one.
*

Cursor paging built in

Every page hands back an after_cursor you feed straight into the next call, so walking a listing forward is a simple loop and you never assemble paging state by hand.
*

Anti-bot and residential proxies

Requests route through rotating residential IPs that clear Reddit's verification interstitial, so the real listing returns instead of a challenge page or a 403.
*

Billed on success

Unreturned fetches retry across residential and datacenter pools automatically, and only calls that come back with a listing count against your plan.
vs the api

Reddit Subreddit Scraper API compared to the official Reddit API

FactorOur Reddit subreddit scraper APIDIY listing scrapingReddit Data API
SetupOne api_keyProxies, headers, parser, retriesRegistered OAuth client plus token
Rate limitPlan request limit onlyNone, but you absorb the blocks100 queries per minute, OAuth-gated
AuthSingle api_keyCustom User-Agent to dodge 429sOAuth2 bearer token on every call
Listing depthCursor pages the live feedYou stitch after cursors yourself1,000 posts per feed, recent only
Scores in listingScore and ratio per postRead from rendered markup yourselfIncluded until quota runs out
Anti-bot and proxiesHandled for youYou build and maintain itOutside the API's scope
Output shapeFlat ranked JSON arrayWhatever you parse from HTMLNested Listing JSON
plans

Free to start, priced to scale

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

How do I scrape a subreddit's posts?

Send the community name in the subreddit parameter to our reddit/subreddit endpoint with your api_key, and add sort to pick hot, new, top, rising, or controversial. The response is a posts array in ranked order, each entry carrying the title, author, score, upvote_ratio, num_comments, permalink, and created timestamp, plus an after_cursor to page on. You do not register a Reddit OAuth app or run any proxy and parsing stack of your own.

Do I need the Reddit API or an OAuth app to read a subreddit?

No. Reddit's Data API authenticates every request with OAuth2 and holds free access to 100 queries per minute per client id, the ceiling set when Reddit began charging $0.24 per 1,000 calls on July 1, 2023. Our endpoint fetches and parses the listing for you behind a single api_key, so there is no app to register, no client secret to rotate, and no per-minute approval to apply for. The free tier covers 1,000 requests.

Which sorts and time windows can I request?

Pass sort as hot, new, top, rising, or controversial. The top and controversial sorts also take a t window of hour, day, week, month, year, or all, so you can ask a community for its best threads of the last day or the last year. The hot, new, and rising listings ignore t and return Reddit's current ordering for the subreddit.

How do I page through more than one listing of posts?

Each response includes an after_cursor. Pass that value back as the after parameter on your next call and you get the following page of the same sorted listing. Reddit's own listing surface stops at roughly 1,000 posts per feed and exposes only the most recent ones, so for deeper coverage of an active subreddit, poll the new feed on a schedule and store posts as they appear instead of paging back through history.

What fields does each post in the listing return?

Every post returns id, title, score, num_comments, upvote_ratio, awards, author, author_id, subreddit, permalink, external_url, domain, and created. Self posts leave external_url and domain null, while link posts populate both with the outbound URL and its host, so a single shape covers text, link, image, and gallery submissions in the feed.

How fast is the Reddit subreddit scraper?

A listing page returns in a median of 2.6 seconds end to end, including proxy routing, anti-bot clearance, retries, and parsing.

What does the Reddit subreddit scraper cost?

The free tier covers 1,000 requests, Pro pricing is about $0.60 per 1,000 requests, and pay-as-you-go top-ups run $0.90 per 1,000 successful requests. You are billed only for calls that come back with a listing, and each post id can be handed to the reddit/post endpoint when you want the full thread.

Pull subreddit api as JSON
Free plan includes 1,000 requests. No card needed.
Get a free API key Browse endpoints