Reddit API Comparison 2026: Real Cost per 1,000 Records
Every Reddit API comparison you can find quotes prices that cannot be compared. One vendor charges per record, another per request, a third per credit, and Reddit itself charges per call. Put those four numbers in a column and the column is meaningless. This post does the conversion instead: every published rate, normalised to dollars per 1,000 Reddit records, with the arithmetic shown so you can check it.
I read every rate below off the vendor's own live pricing page on 9 September 2026 and linked each one inline. I ran no benchmark and I make no claim about anyone's speed or success rate — this is a pricing, field-coverage and response-shape comparison built from documentation. Serpent is the API this site sells, and it appears here as one row among several.
Short answer: the unit is the whole story. Per-record vendors sit between $0.28 and $2.50 per 1,000 posts; per-call vendors sit between $0.02 and $0.17 per 1,000 posts, because one call carries up to 100 posts; and the Serpent Reddit API rate card of $0.12 per 1,000 calls works out at $0.0048 per 1,000 posts. Reddit's own Data API is free for non-commercial use and has no published retail rate for anything else. Two vendors cannot be ranked at all, because they never say how many items one request returns.
How I normalised this Reddit API comparison
The task is fixed: collect 1,000 public posts from subreddit listings, at the deepest page size each option supports. Everything else follows from that.
- Reddit's listings return at most 100 items per request. PRAW's own quick start states it plainly: "Without the
limitparameter PRAW should yield as many results as it can with a single request. For most endpoints this results in 100 items per request." So a per-call option needs ten requests for 1,000 posts, and a per-record option pays its record rate a thousand times. - Entry rate and lowest published rate are separate columns. Quoting a vendor's floor against another vendor's entry price is the single most common dishonesty in this category. Both are shown, and so is what the floor costs you every month.
- A monthly minimum is not a per-record price. A $0.14 rate that needs $99 a month is not cheaper than a $0.50 rate if you spend $30 a month, so the monthly floor gets its own column rather than a footnote.
- If a vendor does not publish how many items one unit returns, the row is marked not comparable. I would rather leave a cell empty than invent the number that fills it.
The Reddit API comparison table: $ per 1,000 posts
This is the table I could not find assembled anywhere. Same job, same 1,000 posts, every published rate converted to the same unit.
| Option | What one unit is | $ / 1,000 posts — entry | $ / 1,000 posts — lowest published | Monthly floor for that lowest rate | Free allowance |
|---|---|---|---|---|---|
| Serpent Reddit API | Per call; one unit per started block of 25 items | $0.0048 | $0.0034 | None — a one-time $500 deposit, spendable as balance | 10 free API calls |
| Reddit Data API — free access | Per API call, up to 100 items | $0.00 | $0.00 | None | Non-commercial use, 100 queries/minute |
| Reddit Data API — commercial | Per API call, up to 100 items | No published retail rate | No published retail rate | Quote only; approval required | — |
| Bright Data — Reddit Scraper API | Per record (one post or one comment) | $1.50 | $1.30 | $499/mo Scale plan (384,000 records) | 5,000 records/month |
| Bright Data — pre-collected Reddit dataset | Per record, delivered as a dataset | up to $2.50 | Quote at volume | $250 minimum order | — |
| Apify — prodiger/reddit-scraper | Per post event (comments priced separately) | $1.15 | $0.28 | Diamond tier, contact sales | $5 platform credit |
| Apify — labrat011/reddit-scraper | Per result pushed to the dataset | $1.50 | $1.50 | None, but network traffic bills on top | 25 results per run |
| Apify — trudax/reddit-scraper | Monthly rental plus platform usage credits | under $4.00 | under $4.00 | $45/month rental, before any usage | $5 platform credit |
| redditapis.com | Per read call | $0.02 | $0.02 | None; flat rate, no tiers | $0.50 in credits (about 250 reads) |
| Decodo — Web Scraping API | Per successful request; items per request not published | Not comparable | Not comparable | $99/mo Business plan for its $0.14 request rate | 2,000 requests |
| SocialCrawl | Per call from a credit balance; items per page not published | Not comparable | Not comparable | £299/mo Pro plan for its £1.99 credit rate | 100 credits, one-time |
| Self-scraping | Your own infrastructure and engineering time | No licence fee | No licence fee | None in fees; everything in maintenance | Reddit's free tier, non-commercial only |
The arithmetic, so you can check it
- Serpent, $0.0048. The published rate is $0.12 per 1,000 calls. A posts listing is charged one unit per started block of 25 items, so
limit=100is four units. Ten of those calls returns 1,000 posts: 40 units at $0.00012 each is $0.0048. On the Scale rate of $0.084 per 1,000 calls the same 40 units cost $0.0034. The full rate card and the block ladder are published rather than quoted. - redditapis.com, $0.02. Its pricing page lists $2.00 per 1,000 read calls, so ten reads is $0.02. Its pricing page does not publish an items-per-call figure, so I have assumed the best case — a full 100-item listing, Reddit's own ceiling. At 25 items a call the same job is $0.08. Writes, votes and DMs are separate, dearer units there ($12.00, $5.00 and $25.00 per 1,000).
- Bright Data, $1.50. A record is a post, so 1,000 posts is 1,000 records at the published pay-as-you-go rate. The $1.30 floor needs the $499-a-month Scale plan.
- Apify prodiger, $1.15 to $0.28. The actor page publishes a full event ladder: $0.00115 per post at the Free tier down to $0.00028 at Diamond, with comments at half the post rate on every tier. Add $0.003 per actor start — on a single 1,000-post run that is $0.003 on top, and on a thousand small runs it is $3.00.
- Apify trudax, under $4.00 plus $45 a month. The pricing tab shows "$45.00/month + usage", and the actor page quotes "1,000 results for less than $4 in platform usage credits". The rental is charged whether you run it or not.
- Decodo and SocialCrawl, not comparable — and this matters. Decodo's $0.14 per 1,000 requests on its $99-a-month Business plan would be $0.0014 per 1,000 posts if one request returned a full 100-post listing. Decodo does not publish that figure, so the number is an assumption rather than a quote, and I have not put an assumption in the table. The same applies to SocialCrawl, whose pricing page is explicit that "each page is a separate call billed at that endpoint's credit cost" but never says how large a page is.
- Currency. SocialCrawl publishes in pounds: £6.00 per 1,000 credits on Starter falling to £1.99 on Pro. At roughly £1 = $1.35 on 9 September 2026 that is about $8.10 and $2.70 per 1,000 calls. The pound figures are the ones that do not move.
Every rate above is the vendor's own published figure, read on 2026-09-09 from the page linked beside it. Nothing here is a benchmark, a measured success rate or a latency claim.
Two conclusions survive the normalisation. First, the unit matters more than the number: a $2.00 per-call vendor is 75 times cheaper per post than a $1.50 per-record vendor, and nothing about those two headline prices tells you that. Second, the cheapest published option is Reddit's own free tier — if your use is non-commercial and 100 queries a minute is enough. Everything else on this table exists because one of those two conditions fails. If you want the wider landscape rather than the head-to-head, the companion post on choosing a Reddit data provider covers who each vendor is built for; this one stays on the numbers. The same normalisation exercise across search vendors is in the cheapest SERP API in 2026.
What a post record actually contains
Price per record is only half the comparison. The other half is what a record is. Two vendors can both charge "per post" and hand you very different objects, and the differences show up late — usually the week you need flair colours for a chart, or an audio URL for a video post.
Here is what each option's own published field list names, for the five things people actually ask about.
| What you need | Serpent | Apify prodiger | Apify labrat011 | Bright Data dataset |
|---|---|---|---|---|
| Score and ratio | score, upvote_ratio | score, upvoteRatio | Score and upvote ratio | Not named |
| Awards | award_count, top_award.id, top_award.icon_url | totalAwards | Awards | Not named |
| Flair | flair.text, flair.background_color | linkFlairText | Not named | Not named |
| Media | media.type, media.url, media.hls_url, thumbnail | imageUrls, thumbnail, isVideo, isSelf | Post type hints: link, self, image, video, gallery | Not named |
| Comment count | num_comments | numComments | Comment count | Num comments |
| Moderation state | stickied, locked, archived, is_nsfw | isStickied, isNSFW, isSpoiler | Spoiler and NSFW flags | Not named |
| Stable identifiers | id, fullname, author_id, subreddit_id | id | Not named | Post id, URL |
| Total published fields | 27 | 25 | 28 | 8 named, "and more" |
Serpent's list is its published post record. Apify counts are from each actor's own field documentation (prodiger, labrat011). Bright Data's is the field list shown on its Reddit dataset page.
Three differences are worth knowing before you build.
Flair is usually text-only. Reddit's flair carries a colour as well as a label, and most published field lists name only the label. If your dashboard colours threads by flair, that is a second data source you did not budget for. Serpent returns flair.background_color alongside flair.text.
Video is where field lists diverge hardest. An image URL array is not a video stream. A record with media.hls_url gives you something you can play or measure; a record with an image array and an isVideo boolean gives you a flag and a thumbnail.
Subscriber counts live in different places. The prodiger actor attaches subredditSubscribers to every post record. Serpent reports community size on its community endpoint instead, and reports it as Reddit's card actually states it — weekly visitors and weekly contributions, under their own names, never relabelled as members. Two different, defensible choices; know which one you are buying.
One shape difference matters more than any single field: on Serpent every key is present in every response, so a value Reddit did not render arrives as null rather than as a missing key. That is the difference between a parser that branches and a parser that throws. If you are merging several providers into one schema, the guide to normalising JSON across providers covers the pattern.
Comment-tree depth, and the bill hiding in it
This is where a Reddit API comparison stops being about posts. Reddit does not hand you a whole thread. It renders the comments it considers most relevant and replaces the rest with more placeholders, and every expansion is a separate request.
The community-maintained Reddit API doc notes describe the two kinds of placeholder — "continue this thread" objects and "load more comments" objects that carry actual comment IDs — and document the endpoint's ceilings: the depth parameter tops out at 10, "a value of 1 means to only retrieve top-level comments", and for limit, "the default seems to be 200, and the max value appears to be 500." Crucially, it also records that /api/morechildren is serial: "You may only make one request at a time to this API endpoint."
How much of a thread does one call actually get? redditapis.com published a measurement on four threads of 649 to 775 comments: a single call returned roughly 100 rendered comments plus 50 to 70 more nodes — about 13 to 15 percent of the thread — and, in their words, "a thread with 60 more nodes turns into roughly 60 extra calls." The deepest reply chain they saw reached depth 8.
Take that as the shape of one busy thread and the cost comparison changes completely.
| Option | Requests to finish the thread | Cost for that one thread | $ / 1,000 comments |
|---|---|---|---|
| Serpent | One request — up to 100 comments synchronously, up to 1,000 in the job form | $0.0034 | $0.0048 |
| Reddit Data API — free access | About 61, and morechildren runs one at a time | $0.00 | $0.00 |
| redditapis.com | About 61 read calls | $0.12 | $0.17 |
| Bright Data Reddit Scraper API | Billed per record, not per request | $1.05 | $1.50 |
| Apify prodiger/reddit-scraper | One run, billed per comment event | $0.40 | $0.58 |
Serpent: 700 comments is 28 started blocks of 25 at $0.00012 a block. redditapis.com: 61 reads at $2.00 per 1,000. Bright Data: 700 records at $1.50 per 1,000 pay-as-you-go. Apify prodiger: 700 comments at $0.000575 each on the Free tier, plus $0.003 for the actor start; at the Diamond rate the same thread is $0.10.
Two practical notes. Depth control differs: the prodiger actor exposes a commentDepth input from 1 to 10 levels, Reddit's own endpoint tops out at depth 10, and Serpent returns a depth integer on every comment plus a nested replies[] array when you pass tree=true, which costs nothing extra. And a per-call price is only cheap if one call does a lot of work — on comment trees, where Reddit forces the call count up, the per-call vendors lose most of their advantage while a vendor that returns a deep tree in one request keeps it.
Historical reach: none of these is an archive
The question people ask third on this list, and should ask first, is how far back they can go. The honest answer for live APIs is: not far.
Reddit's listings stop at about 1,000 items. Apify's own Reddit Scraper page states it as a plain constraint of the platform — "Reddit's 1,000 items limit" for lists like subreddit posts or search results — and adds the useful caveat that it "does not affect the comments inside a specific post". Pagination ends at that ceiling however many posts a subreddit really has, which means no live API on this page can walk a busy subreddit back through a year.
Pushshift is not the answer any more. The archive that researchers used for historical Reddit questions was cut off from public access in 2023 and is now limited to verified moderators for moderation use. Community successors exist, but none of them is an official product with a support contract.
A pre-collected dataset is the one real alternative, and it is a different purchase. Bright Data sells Reddit posts as a dataset at "up to $0.0025 per record" with a $250 minimum order — that is a delivery of records you buy once, not an endpoint you call, and its page does not state the date range it covers, so ask before you buy.
For everything else the practical answer is unglamorous: start collecting today and store it yourself. The history you will want next year only exists if you began writing it down this year. That is also why the brands now tracking Reddit threads on their own commercial queries run daily pulls rather than one-off exports.
Rate limits and real throughput
Rate limits decide whether a price is reachable. A cheap record you can only collect at ten a second is not cheap when you need ten million of them.
- Reddit Data API. Reddit's Data API Wiki puts free access at 100 queries per minute per OAuth client ID, averaged over a ten-minute window so short bursts are fine, and 10 queries per minute for clients that do not authenticate with OAuth. Reddit's older developer wiki documents 60 requests per minute for OAuth2 clients and the
X-Ratelimit-Used,X-Ratelimit-RemainingandX-Ratelimit-Resetheaders — read the headers rather than trusting either number, because they are what your client actually gets. At 100 queries a minute, 1,000 posts takes six seconds and a million takes about four days. - Decodo. Publishes concurrency as a plan feature: 10 requests per second on Starter, 25 on Professional, 50 on Business. That is unusually transparent for this category and worth crediting.
- The marketplace actors. Throughput is governed by your Apify plan's run concurrency rather than by a published requests-per-second figure, so the number you care about is not on the actor page.
- Serpent. There is no daily bucket and no monthly plan in the pricing, so there is no per-day allowance to run out of; sustained automated overuse or heavy load can return a 429 like any API. The endpoint reference is the place to check the current caps — synchronous calls take up to 100 items, and the job form accepts up to 250 posts or 1,000 comments.
If you are debugging 429s against any provider, the mechanics are the same everywhere: back off, respect the reset header, and stop treating a 200 as proof of success. We wrote that up in fixing 429 and unusual-traffic errors.
Compliance and terms
This is the dimension that gets skipped and then becomes the whole problem. Three things are worth reading before you write any code.
Reddit's free tier is bounded by purpose, not just by volume. The free allowance covers non-commercial use — personal projects, bots, moderator tools, academic work. Commercial use requires approval under the Reddit Data API Terms, and Reddit publishes no retail rate card, so "we will just use the free tier" is a plan with a legal problem in it rather than a budget problem.
Deletion is an ongoing obligation, not a one-off check. Reddit content is user-generated and users remove it. Whatever route you take, your store needs a way to reflect removals after the fact; a database of posts collected in March is a database of posts some of whose authors have since deleted them. Build the deletion path on day one, because retrofitting it into a warehouse is far harder.
A third party's terms are not a substitute for Reddit's. Buying data from a vendor does not transfer Reddit's terms onto the vendor; read both. Our broader take on where the lines sit is in legal and ethical search data collection.
The build-it-yourself route deserves one plain sentence. It has no licence fee, and that is genuinely its advantage — but you inherit the OAuth registration, the terms, the 100-queries-a-minute ceiling, the 1,000-item listing wall, the more-node call amplification, and the ongoing maintenance of a parser against a site that changes. The trade-off is the same one laid out in a search API versus scraping it yourself: you are not choosing between paying and not paying, you are choosing between a line item and a headcount.
What an empty or removed thread looks like on the wire
Ask every vendor on your shortlist one question before you sign: what do I get back when the thread is empty, deleted, private or banned? The answer decides whether your pipeline can tell "nothing happened here" from "something broke".
There are three possible answers, and all three exist in this market:
- A success response with an empty array. Honest, and easy to handle — as long as it is only used for genuinely empty results.
- A 404 or an error. Also honest, if it is used only for things that truly are not there.
- A success response with an empty array for both. This is the one that costs you. A removed thread and a quiet week look identical in a chart, and you will not find out for months.
Serpent splits them deliberately. A listing that genuinely comes back with nothing is a success response with count: 0 and an empty posts array. A community, thread or account that is not there — deleted, private, banned, or a username that does not exist — answers 404 with the machine code not_found. A settled negative is treated as a real answer and charged, and anything that is our own failure answers a 5xx and is refunded automatically, so the two never wear each other's status code.
There is a third state most APIs do not have a name for: a listing that came back short. Serpent adds a top-level delivery block, present only when the response is short, naming what was requested, what returned, and a machine-readable reason that separates "we reached the end and that is all there is" from "the request's time budget stopped us". Nothing is silently truncated to make a response look complete.
Reddit's own API has its own version of this problem worth knowing: deleted comments still occupy a slot in the tree, with placeholder author and body values, so a naive count of returned comments will not match the thread's stated total. That mismatch is normal, not a bug in your parser.
Which option fits which job
- Non-commercial project, modest volume. Reddit's own Data API, free, at 100 queries a minute. Nothing beats free, and you get the canonical response shape. Register an OAuth app and read the terms.
- Commercial product, high volume, price is the constraint. The per-call vendors, and among them the lowest published per-post figure on this table is the Serpent Reddit API at $0.0048 per 1,000 posts, with 10 free API calls to test on and no monthly plan to commit to first.
- Deep comment trees. Anything that returns a whole thread in one request rather than charging you 60 times to reassemble it. Check the per-thread column, not the per-record one.
- One-off research pull, no engineering time. An Apify actor. You get a UI, a dataset export and no integration work, and for a few thousand records the per-record premium is irrelevant next to a day of developer time.
- Historical archive. A pre-collected dataset, or start collecting now. No live API on this page reaches past Reddit's 1,000-item listing wall.
- Reddit plus other networks on one key. Worth comparing the whole catalogue rather than one vertical — the social media API overview and the equivalent head-to-head for TikTok scraping APIs use the same normalisation method as this post, and the X (Twitter) API is priced on the same rate card.
Whichever you pick, do the same two checks before you commit. Pull one real subreddit listing and count the fields you will actually use against the field list you were sold. Then pull one deleted thread and see what comes back. Those two calls tell you more than any comparison table, including this one.
FAQ
What does $1.50 per 1,000 records actually cost me for a subreddit listing?
The same $1.50, because on a per-record vendor a record is a post. The gap only opens against per-call pricing, where one request returns up to 100 posts and is charged once, so 1,000 posts is ten charges rather than a thousand. Bright Data's published pay-as-you-go rate is $1.50 per 1,000 records. Serpent's Reddit rate card is $0.12 per 1,000 calls, and a listing at limit=100 is four started blocks of 25, so 1,000 posts costs $0.0048. Prices checked 2026-09-09.
How many API calls does one busy Reddit thread really take?
More than one, and that is the number most comparisons leave out. Reddit renders a partial comment tree and hides the rest behind more placeholders, and each expansion is its own request. redditapis.com published a measurement on four threads of 649 to 775 comments: a single call returned about 100 rendered comments plus 50 to 70 more nodes, roughly 13 to 15 percent of the thread, and finishing it took about 60 extra calls. Reddit's morechildren endpoint accepts one request at a time, so a deep thread is serial as well as expensive.
Is the official Reddit Data API free?
For non-commercial use, yes. Reddit's Data API Wiki puts free access at 100 queries per minute per OAuth client ID, averaged over a ten-minute window, and 10 queries per minute for clients that do not authenticate with OAuth. Commercial use is not covered by that allowance: it needs Reddit's approval under the Data API Terms, and Reddit publishes no retail rate card you can sign up to. Budget for a sales conversation, not a checkout page.
How far back into Reddit history can I go?
Not far, on any of these. Reddit's listings stop at about 1,000 items, a ceiling Apify's own Reddit Scraper page states plainly, and it applies to subreddit listings and search results alike. Pushshift, the archive researchers used for historical questions, was cut off from public access in 2023 and is now limited to verified moderators for moderation use. If you need history, start collecting now and store it yourself, or buy a pre-collected dataset.
What does an empty or removed Reddit thread look like on the wire?
It depends on the vendor, and it is worth checking before you build. On Serpent a listing that genuinely has nothing in it is a success response with a count of 0 and an empty posts array, while a community, thread or account that is not there answers 404 with the code not_found. The two are never confused. Every key is present in every response, so an absent value arrives as null rather than as a missing key, and a listing that came back short adds a delivery block naming what was requested and what actually returned.
Which Reddit option is cheapest per record?
On published, comparable rates, Serpent's Reddit endpoints at $0.0048 per 1,000 posts, which is $0.12 per 1,000 calls read per post. Reddit's own free access costs nothing at all if your use is non-commercial and 100 queries a minute is enough throughput. Two rows cannot be ranked against anything: Decodo and SocialCrawl both bill per request or per credit without publishing how many items one request returns, so no per-record figure can be derived from their pricing pages. Prices checked 2026-09-09.
Related reading on how Reddit threads are showing up in search and in AI answers, which is why so many teams need this data in the first place: tracking Reddit citations in AI answers.



