Apify Store
AS
Apify Store
/automation-lab/reddit-scraper

Reddit Scraper

Scrape public Reddit search results and subreddit listings, with posts, comments, and profiles available on a best-effort basis. No Reddit account or API key required.

liveasyncunknown~30s typical
social mediaailead generationreddit
$0.0014
per result + $0.005 call
plus $0.001 platform fee per run
Actor charges $0.00115 per result; Cracked adds 25% plus a $0.005 call fee
Bring your own Apify Store key: provider portion drops to $0.
$Set up https://cracked-ai-pearl.vercel.app/SKILL.md, then use Cracked to run apify /automation-lab/reddit-scraper for me.

Input

FieldTypeDescription
urlsanyReddit URLs to scrape. Supports subreddit URLs, post URLs, user profile URLs, and search URLs. API callers may pass either an array or a single URL string.
urlstringOptional compatibility alias for MCP/LLM tools that send a single URL instead of the canonical urls array. Prefer urls for new integrations.
comment_urlstringOptional compatibility alias for MCP/LLM tools. Use with commentContextMode=true to fetch focused context around a target comment.
commentUrlstringOptional compatibility alias for MCP/LLM tools. Use with commentContextMode=true to fetch focused context around a target comment.
searchQuerystringSearch Reddit for this query. Alternative to providing URLs. Put subreddit/community names in Search subreddit; a subreddit name alone is not treated as a matching search result.
searchSubredditstringLimit Reddit search to one subreddit. Enter the name with or without r/ (for example: technology or r/apify). Leave empty to search all Reddit.
sortstring (hot | new | top | rising | relevance)Sort order for subreddit listings and search results. default "hot"
timeFilterstring (hour | day | week | month | year | all)Time range filter (used with 'top' and 'relevance' sort). default "week"
maxPostsPerSourceintegerMaximum number of posts to scrape per subreddit, search, or user profile. Set 0 for unlimited posts. default 100
includeCommentsbooleanScrape comments for each post. Increases run time and cost. default false
maxCommentsPerPostintegerMaximum comments to scrape per post. default 100
commentDepthintegerMaximum reply nesting depth for comments, in levels. default 3
commentContextModebooleanWhen enabled and a Reddit comment URL is provided, fetch a focused best-effort context around that specific comment using Reddit public RSS/context output instead of treating the URL as a generic post URL. Default behavior stays unchanged when disabled. default false
commentContextDepthintegerBest-effort context levels to request around a target comment URL. Reddit may return less context and does not expose complete tree metadata in RSS. default 3
filterKeywordsarrayOnly keep posts matching these keywords (case-insensitive). Leave empty to keep all posts. Useful when Reddit search returns loosely related results. default []
filterKeywordModestring (any | titleOnly | all | exactPhrase)How keywords are matched: 'any' = post title or body contains any keyword; 'titleOnly' = only match against post title (strict); 'all' = title or body must contain ALL keywords; 'exactPhrase' = title must contain the exact phrase. default "any"
deduplicatePostsbooleanRemove duplicate posts that appear in multiple sources or pages. Enabled by default. default true
outputFormatstring (default | jsonl-finetune | rag-markdown)Controls the shape of output records. 'default' = standard post/comment objects (backward-compatible). 'jsonl-finetune' = instruction/response pairs for LLM supervised fine-tuning (SFT). 'rag-markdown' = markdown chunks with metadata for vector DB / RAG ingestion. default "default"
mcpDestinationConnectorstringOptional explicit opt-in destination for sending a bounded Reddit Scraper run summary after dataset output is saved. Select only a connector you want this Actor to write/post to; third-party credentials stay in Apify and are not exposed to the Actor. If the connector export fails, dataset results remain available.
mcpDestinationToolNamestringOptional exact connector tool to call. Leave empty to let the Actor choose the first safe send/post/write/create/append tool exposed by the selected connector.
mcpDestinationTargetstringOptional channel, page, database, or destination identifier required by your connector tool. The value is passed only to the selected connector.
mcpExportMaxItemsintegerMaximum dataset records to include in the connector summary. The Actor always saves full results to the default dataset first. default 10

Call it

curl
curl https://cracked-ai-pearl.vercel.app/v1/run \
  -H "Authorization: Bearer ck_live_..." -H "content-type: application/json" \
  -d '{"provider":"apify","endpoint":"/automation-lab/reddit-scraper","input":{"urls":["https://www.reddit.com/r/technology/"],"searchQuery":"web scraping tools","maxPostsPerSource":3,"maxCommentsPerPost":3},"wait":false}'
poll
curl "https://cracked-ai-pearl.vercel.app/v1/runs/<runId>?wait=30" -H "Authorization: Bearer ck_live_..."
cli
npx cracked-ai run -p apify -e /automation-lab/reddit-scraper -i '{"urls":["https://www.reddit.com/r/technology/"],"searchQuery":"web scraping tools","maxPostsPerSource":3,"maxCommentsPerPost":3}' -w 120
mcp
run_tool({ provider: "apify", endpoint: "/automation-lab/reddit-scraper", input: {"urls":["https://www.reddit.com/r/technology/"],"searchQuery":"web scraping tools","maxPostsPerSource":3,"maxCommentsPerPost":3}, wait: false })

Try it

Runs against your signed-in workspace balance. Sign in if you have not.