Reddit Api Scraper avatar

Reddit Api Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Reddit Api Scraper

Reddit Api Scraper

Extract posts, comments, subreddit data, and user insights from Reddit using the Reddit API Scraper. Collect titles, scores, authors, timestamps, and full discussions. Ideal for market research, sentiment analysis, trend monitoring, and building datasets from Reddit communities.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Share

Reddit Post Search Scraper — Titles, Scores and Comments

Reddit Post Search Scraper searches Reddit by keyword and returns structured post data — title, subreddit, author, score, upvote ratio, and comment count — as clean JSON, no HTML parsing required. Search across all of Reddit or narrow to specific subreddits, then sort by new, hot, top, or relevance. No Reddit account, API key, or OAuth setup needed. Run it on Apify and start collecting posts in minutes.

🧭 What is Reddit Post Search Scraper?

Reddit Post Search Scraper is an Apify Actor that queries Reddit for posts matching one or more keywords and returns each match as a structured JSON record — title, author, subreddit, engagement metrics, flair, and timestamps. It needs no Reddit account, API key, or login: results are grouped by keyword and written to the dataset as they are found. It's built for researchers, brand-monitoring teams, and developers feeding Reddit discussion data into analytics or AI pipelines.

🔓 What Reddit post data is publicly available to scrape?

Post titles, body text, scores, comment counts, flair, author usernames, and subreddit metadata are all visible to anyone browsing reddit.com without an account — this Actor returns exactly that public surface.

Data CategoryPublicly AvailableRestricted (requires Reddit login)
Post title & selftext body
Score, upvote ratio & comment count
Author username & flairAuthor's private profile details
Subreddit name & typePosts inside private or quarantined subreddits
Post flair, awards & crosspost count
Media URL, domain & thumbnail
NSFW flag
Full comment threadsNot collected by this Actor (posts only)

Reddit Post Search Scraper only returns publicly visible data — what any visitor sees. Nothing behind a login wall.

📊 What data can I extract with Reddit Post Search Scraper?

Every matched post is returned with its identity fields, engagement metrics, and status flags — 36 fields per row, not just the columns shown in the default dataset view.

📝 Post identity & subreddit fields

Field NameDescription
keywordThe search keyword (from searchKeywords) that produced this result
idReddit post ID (short form, e.g. 1abcde)
nameReddit post fullname (prefixed ID, e.g. t3_1abcde)
titlePost title
selftextPost body text for text (self) posts; empty for link posts
selftext_htmlPost body rendered as HTML; empty for link posts
subredditSubreddit the post was made in (short name, e.g. webscraping)
subreddit_name_prefixedSubreddit name prefixed with r/ (e.g. r/webscraping)
subreddit_idReddit's internal ID for the subreddit
subreddit_typeSubreddit visibility type (e.g. public)
authorUsername of the post's author
author_fullnameReddit's internal ID for the author (e.g. t2_xxxxx)
author_flair_textAuthor's flair text on that subreddit, if any
author_flair_typeAuthor flair rendering type (text, richtext, or none)
link_flair_textPost flair text, if any
link_flair_text_colorPost flair text color
link_flair_typePost flair rendering type
domainDomain the post links to (e.g. self.webscraping, i.redd.it)
thumbnailThumbnail URL, or a status string (self, default, nsfw)
post_hintReddit's content-type hint (e.g. image, link, self, hosted:video)
permalinkRelative path to the post on reddit.com
urlFull URL of the post or the content it links to
metaDataNested object carrying the search keyword again, for grouping when processing rows programmatically

📈 Engagement metrics

Field NameDescription
scorePost score (net upvotes)
upsRaw upvote count
upvote_ratioRatio of upvotes to total votes (0–1)
num_commentsNumber of comments on the post
num_crosspostsNumber of times the post was crossposted
total_awards_receivedNumber of Reddit awards given to the post

🏷️ Flags & timestamps

Field NameDescription
created_utcPost creation time as a Unix timestamp
created_atPost creation time as an ISO 8601 UTC string
over_18Whether the post is marked NSFW
is_videoWhether the post contains a video
is_selfWhether the post is a text (self) post rather than a link post
is_original_contentWhether the post is flagged as original content
is_galleryWhether the post is a multi-image gallery

🤖 Add-on: Need more social data than Reddit?

If your monitoring covers more than one platform, pair this Actor with Instagram Posts Scraper With Creator Profiles or TikTok User Profile Scraper With Engagement Analytics to track the same keyword or brand across Instagram and TikTok alongside Reddit — all as the same normalized JSON shape.

🛠️ Why not build this yourself?

Reddit does publish an official API, but building your own keyword-search pipeline on top of it means handling OAuth app registration, retry and backoff logic for rate-limited or failed requests, cursor-based pagination, deduplication across pages, and proxy routing for endpoints that block direct cloud egress IPs. Reddit Post Search Scraper already does all of this: exponential backoff on HTTP 429 and 5xx responses (up to 4 attempts, capped at 20 seconds), cursor-based pagination deduplicated by post ID, and an Apify Proxy (residential) applied automatically to the search path that would otherwise return HTTP 403 from a cloud container's IP. Keeping that pipeline working as Reddit's endpoints and anti-bot rules change is ongoing engineering work; running this Actor is one input form.

▶️ How to use Reddit Post Search Scraper

Run it from the Apify Console — no code required to get your first results.

  1. Open Reddit Post Search Scraper on its Apify Store page and click Try for free (or Start, if you already have it saved).
  2. Enter one or more search terms in searchKeywords — the only required field.
  3. Optionally restrict the search to specific communities with subredditNames, set resultsLimitPerKeyword (1–1000, default 10), and pick a sorting order.
  4. Click Start to run the Actor.
  5. Download results as JSON, CSV, or another supported format once the run finishes, or watch rows appear in the dataset in real time as each post is found.

📦 How to scale to bulk post extraction

searchKeywords and subredditNames are both array inputs with bulk-edit support (one entry per line), so a single run already searches every keyword — optionally across every listed subreddit — without repeated runs. Raise resultsLimitPerKeyword (up to 1000) to pull more posts per keyword in the same run.

🎯 What can you do with Reddit post data?

  • 📈 A brand manager monitoring mentions uses subreddit, score, and num_comments to spot which communities are driving engagement around a product keyword.
  • 🔬 A market researcher studying a topic uses selftext and created_at to build a time-ordered corpus of community discussion for qualitative analysis.
  • 🤖 An AI engineer building a RAG pipeline uses title and selftext as source text and permalink as a citation link when grounding answers in Reddit discussion.
  • 📊 A data analyst tracking sentiment over time uses score, upvote_ratio, and created_at to chart engagement trends for a keyword across weeks.
  • 🧑‍💻 A community manager scouting mentions in specific communities uses subredditNames to scope the search and author to identify recurring commenters.

Because output is typed JSON with a stable schema, any of these workflows can call the Actor directly from an agent framework via the Apify API.

🛡️ How does Reddit Post Search Scraper handle rate limits and blocking?

Requests are retried with exponential backoff (up to 4 attempts, capped at 20 seconds) on HTTP 429 and 5xx responses; a 400 response is treated as invalid and not retried. Concurrent requests are capped at 2 in flight, with a short delay between requests and between keywords. A pure keyword search with no subreddit specified is routed through Apify Proxy (residential) automatically, since that search path blocks direct requests from cloud container IPs; subreddit-scoped searches need no proxy. If a request keeps failing after all retries, that page is skipped and the run logs a warning rather than stopping — other keywords and subreddits continue processing.

⚠️ A keyword search with no subreddit specified uses a fallback data source whose results can lag behind real time. For guaranteed current results, add at least one subreddit to subredditNames.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
searchKeywordsYesarray of stringsWords or phrases to search on Reddit (e.g. webscraping, python, ChatGPT). Add multiple keywords with + Add or Bulk edit — results are grouped by keyword in the output. One keyword per line in bulk mode.["webscraping", "python"]
subredditNamesNoarray of stringsOptional. Restrict the search to specific subreddits (e.g. python, programming, learnprogramming). Leave empty to search all of Reddit. Add multiple with + Add or Bulk edit.["webscraping"]
resultsLimitPerKeywordNointeger (min 1, max 1000)Maximum number of posts to fetch per keyword (1-1000). Higher values take longer. Default: 10.50
sortingNostring — enum: new, hot, top, relevanceOrder of the returned posts: New (latest first), Hot (trending now), Top (most upvoted of all time), or Relevance (best match to your keyword). Default: New."new"

⚠️ hot, top, and relevance are not native Reddit rankings — all three are implemented the same way, by gathering a larger pool of matching posts (up to 1000) and ranking it by score before trimming to resultsLimitPerKeyword. Only new reflects Reddit's own chronological order.

🧾 Example input

{
"searchKeywords": ["webscraping", "python"],
"subredditNames": ["webscraping"],
"resultsLimitPerKeyword": 50,
"sorting": "new"
}

⬆️ Output

Every matched post is written to the Apify dataset as one JSON row, with a consistent schema across runs. The dataset's default view surfaces 11 columns (keyword, id, subreddit, title, author, score, num_comments, created_at, permalink, url, selftext); every push writes the full set of 36 fields documented above. Download results as JSON, CSV, Excel, or any other format the Apify dataset export supports. Each pushed row is billed under the row_result charged event — a row that fails to push (network or platform error) is logged and skipped, not written to the dataset.

🧾 Example output

{
"keyword": "webscraping",
"id": "1abcde",
"name": "t3_1abcde",
"title": "Best practices for large-scale web scraping in 2026",
"selftext": "Curious what people are using for rotating proxies these days...",
"selftext_html": "<div class=\"md\"><p>Curious what people are using for rotating proxies these days...</p></div>",
"subreddit": "webscraping",
"subreddit_name_prefixed": "r/webscraping",
"subreddit_id": "t5_2sqho",
"subreddit_type": "public",
"author": "some_user",
"author_fullname": "t2_xxxxx",
"author_flair_text": null,
"author_flair_type": "text",
"link_flair_text": "Discussion",
"link_flair_text_color": "dark",
"link_flair_type": "text",
"score": 214,
"ups": 214,
"upvote_ratio": 0.97,
"num_comments": 38,
"num_crossposts": 1,
"total_awards_received": 0,
"created_utc": 1753180800,
"created_at": "2025-07-22T12:00:00+00:00",
"over_18": false,
"is_video": false,
"is_self": true,
"is_original_content": false,
"is_gallery": false,
"post_hint": null,
"domain": "self.webscraping",
"thumbnail": "self",
"permalink": "/r/webscraping/comments/1abcde/best_practices_for_large_scale_web_scraping/",
"url": "https://www.reddit.com/r/webscraping/comments/1abcde/best_practices_for_large_scale_web_scraping/",
"metaData": {
"keyword": "webscraping"
}
}

⚙️ How does it work?

Reddit Post Search Scraper queries specialized Reddit search backends over HTTP rather than rendering reddit.com in a browser — there's no headless browser in the request path. Your keyword, and optionally a subreddit, are sent as search parameters; a cursor walks backward in time to gather matching posts up to your configured limit. For new sorting, exactly resultsLimitPerKeyword posts are fetched in chronological order. For hot, top, and relevance, a larger pool of posts is gathered first and then ranked by score before being trimmed to the limit. Requests are retried with backoff on rate-limit and server errors, and Apify Proxy is applied automatically on the search path that needs it. Only publicly accessible post data is returned, and the output schema stays the same regardless of changes to Reddit's own site or ranking algorithms.

🔌 Integrations

Reddit Post Search Scraper runs on the Apify platform, so it works with the same tools every Apify Actor does — the Apify API, official client libraries, schedules, and webhooks.

🐍 Calling Reddit Post Search Scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("reddit-api-scraper").call(run_input={
"searchKeywords": ["webscraping", "python"],
"resultsLimitPerKeyword": 50,
"sorting": "new",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["score"])

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

🔗 No-code tools (n8n, Make)

In n8n, use the Apify integration node (or a generic HTTP Request node) pointed at this Actor's run endpoint to trigger a search and pass matched posts downstream in your workflow. In Make, the Apify app's actor-run module does the same, letting you route new Reddit posts for a keyword into Slack alerts, a spreadsheet, or a CRM without writing code.

Scraping publicly visible Reddit content is generally lawful — data a website makes available without requiring a login falls outside the scope of anti-hacking laws like the U.S. Computer Fraud and Abuse Act. Reddit Post Search Scraper only returns publicly visible data: whatever content and metadata anyone can see on Reddit without signing in. Because each post record includes an author's Reddit username, it can still count as personal data under GDPR or CCPA if that username is linked or linkable to an identifiable person — you are responsible for having a lawful basis for storing and using it, particularly for EU or California residents. Consult legal counsel if your use case involves bulk storage of personal data.

❓ Frequently asked questions

What Reddit post fields does Reddit Post Search Scraper return?

title, subreddit, author, score, and num_comments are the top fields, alongside 31 more covering flair, timestamps, and post flags — see What data can I extract above for the full list.

Does Reddit Post Search Scraper require a Reddit account or login?

No. The Actor makes no use of Reddit credentials, an API key, or OAuth anywhere in its input or its requests — you only need an Apify account to run it.

How many Reddit posts can I extract in one run?

Up to 1000 posts per keyword (the resultsLimitPerKeyword maximum), multiplied by however many keywords — and, if used, subreddits — you list in a single run.

What happens if a search returns zero results?

The Actor logs the keyword as returning 0 posts and moves on to the next one; no error is thrown and the run continues. If a keyword-subreddit combination has no matches, simply no rows with that keyword value appear in the dataset.

Can I scrape multiple Reddit keywords or subreddits at once?

Yes. searchKeywords and subredditNames both accept multiple values (bulk-edit supported), and every keyword is searched against every listed subreddit — or all of Reddit if none are given — in the same run.

Does Reddit Post Search Scraper work with Claude, ChatGPT, and other AI agent tools?

It's callable as a standard HTTP endpoint through the Apify API, so any agent framework that can make an HTTP request — including custom Claude or GPT tool integrations — can trigger a run and read back the resulting dataset.

What makes Reddit Post Search Scraper different from scraping Reddit yourself?

It ships the operational pieces a hand-rolled scraper usually lacks on day one: automatic retry with backoff on rate-limited and failed requests, a proxy fallback for the search path that blocks direct cloud IPs, deduplicated cursor pagination, and results already grouped by keyword — all with zero login or credential setup.

Does Reddit Post Search Scraper return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with consistent field names across runs — no HTML parsing or CSS selectors involved. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.

What happens when Reddit changes its layout or anti-bot system?

The Actor is maintained and its output schema stays stable across updates. No specific turnaround time is promised for fixes.

Can I use Reddit Post Search Scraper without managing proxies or browser infrastructure?

Yes. There's no browser to configure at all — requests go out over plain HTTP — and the one search path that needs a proxy to avoid being blocked has Apify Proxy applied automatically.

Which Reddit post fields work best for AI training data and RAG indexing?

For RAG, index title and selftext as your text content and keep permalink as the citation link. For training data, id, created_utc, score, and num_comments return as consistently typed primitives across every record.

ScraperWhat it extracts
Instagram Posts Scraper With Creator ProfilesPost captions, media, and the creator's profile details
TikTok User Profile Scraper With Engagement AnalyticsTikTok profile details and engagement analytics
Instagram Story Details ScraperStory details for one or more Instagram profiles
Snapchat User Stories ScraperPublic Snapchat stories and highlights, including media URLs and timestamps

💬 Your feedback

Found a bug or missing a field? Let us know through the Issues tab on this Actor's Apify Store page, or message the developer directly from the Console. Reports on sort behavior or field gaps help keep this README and the schema accurate as Reddit changes.