Media, Social & Knowledge

How do you scrape Reddit posts via API without getting blocked?

To scrape Reddit posts without maintaining browser sessions or brittle HTML parsers, call ReefAPI's Reddit search endpoint with a subreddit or query and read the returned posts as structured JSON.

Reddit engineLive JSON4 steps1,000 free credits

This guide demonstrates the real Reddit API engine with a captured response from . The example is only published because the engine passed the SEO snapshot gate.

Use case

Reddit post monitoring, community research, audience intelligence and social listening.

Step by step

Call the live endpoint

  1. 1

    Choose a subreddit or search query

    Start with a narrow subreddit, keyword or topic so the response stays relevant and easy to review.

  2. 2

    Call reddit/v1/search

    Send the JSON params from the captured example with your ReefAPI key in the x-api-key header.

  3. 3

    Normalize posts from data.results

    Store id, title, author, subreddit, score, comment count, created timestamp and permalink for your workflow.

  4. 4

    Use meta for monitoring

    Check meta.record_count, latency_ms, cache_hit and error fields before charging downstream jobs or alerts.

Code

Copy the request

These snippets use the captured request params for reddit/v1/search.

curl -X POST https://api.reefapi.com/reddit/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"subreddit":"python","limit":10}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.reddit.search with {"subreddit":"python","limit":10}.
Real response

Captured output from ReefAPI

Captured on UTC. The response below is the committed snapshot, including the API envelope and metadata.

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/reddit/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "subreddit": "python",
    "limit": 10
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "reddit",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 3400.5,
    "record_count": 10,
    "bytes": 33855,
    "cache_hit": false,
    "completeness_pct": 100,
    "requests": 1,
    "source_used": "arctic",
    "pagination": {
      "next_cursor": null,
      "has_more": false
    }
  },
  "data": {
    "results": [
      {
        "id": "1v00o59",
        "fullname": "t3_1v00o59",
        "title": "Bulletproofing User Sync: Handling Clerk and Auth0 Webhook Failures",
        "author": "JadeLuxe",
        "subreddit": "Python",
        "score": 1,
        "upvote_ratio": 1,
        "num_comments": 0,
        "created_utc": 1784392821,
        "url": "https://www.reddit.com/r/Python/comments/1v00o59/bulletproofing_user_sync_handling_clerk_and_auth0/",
        "permalink": "https://www.reddit.com/r/Python/comments/1v00o59/bulletproofing_user_sync_handling_clerk_and_auth0/",
        "selftext": "[removed]",
        "flair": "Discussion",
        "over_18": false,
        "spoiler": false,
        "stickied": false,
        "locked": false,
        "is_self": true,
        "is_video": false,
        "domain": "self.Python",
        "thumbnail": null,
        "num_crossposts": 0,
        "total_awards_received": 0,
        "edited": false
      },
      {
        "id": "1v0030v",
        "fullname": "t3_1v0030v",
        "title": "How I built an offline, AI-driven Live Caption Video Player using PySide6, VLC, and Vosk",
        "author": "abbaaminu",
        "subreddit": "Python",
        "score": 1,
        "upvote_ratio": 1,
        "num_comments": 1,
        "created_utc": 1784391428,
        "url": "https://www.reddit.com/r/Python/comments/1v0030v/how_i_built_an_offline_aidriven_live_caption/",
        "permalink": "https://www.reddit.com/r/Python/comments/1v0030v/how_i_built_an_offline_aidriven_live_caption/",
        "selftext": "",
        "flair": "News",
        "over_18": false,
        "spoiler": false,
        "stickied": false,
        "locked": false,
        "is_self": true,
        "is_video": false,
        "domain": "self.Python",
        "thumbnail": null,
        "num_crossposts": 0,
        "total_awards_received": 0,
        "edited": false
      },
      {
        "id": "1v001ni",
        "fullname": "t3_1v001ni",
        "title": "How I built an offline, AI-driven Live Caption Video Player using PySide6, VLC, and Vosk",
        "author": "abbaaminu",
        "subreddit": "Python",
        "score": 1,
        "upvote_ratio": 0.99,
        "num_comments": 2,
        "created_utc": 1784391336,
        "url": "https://www.reddit.com/r/Python/comments/1v001ni/how_i_built_an_offline_aidriven_live_caption/",
        "permalink": "https://www.reddit.com/r/Python/comments/1v001ni/how_i_built_an_offline_aidriven_live_caption/",
        "selftext": "[removed]",
        "flair": "Showcase",
        "over_18": false,
        "spoiler": false,
        "stickied": false,
        "locked": false,
        "is_self": true,
        "is_video": false,
        "domain": "self.Python",
        "thumbnail": null,
        "num_crossposts": 0,
        "total_awards_received": 0,
        "edited": false
      }
    ],
    "count": 10,
    "type": "post"
  }
}
Manual way

Why this is hard manually

Reddit pages change markup, hide useful fields behind hydration data, and can behave differently by locale, login state and rate. A crawler that works for a single subreddit can fail when pagination, deleted posts, quarantined communities or comment-heavy threads enter the workflow.

The risky part is not only fetching HTML. It is normalizing titles, authors, scores, created timestamps, comment counts and canonical URLs into a repeatable shape that downstream jobs can trust.

ReefAPI way

Why ReefAPI solves it

ReefAPI wraps the working Reddit engine behind one POST request and returns the same envelope as every other ReefAPI endpoint: ok, data, meta and error. The committed snapshot for this guide shows a live search returning 10 Reddit posts with score, subreddit, author, comments and permalink fields.

Use it when you need dependable community data for research dashboards, content discovery, trend alerts or AI agents that need current public Reddit context.

FAQ

Questions developers ask

Does this require a Reddit login?

No. The guide uses ReefAPI's Reddit engine and a ReefAPI key; it does not require your users to connect Reddit accounts.

What fields come back?

The captured response includes post ids, titles, authors, subreddit names, scores, comment counts, created timestamps, URLs and permalinks.

Is this live data?

Yes. The page renders the committed live snapshot captured by the SEO snapshot pipeline, including its capture timestamp and response metadata.

Can I monitor multiple subreddits?

Yes. Run one request per subreddit or query, store the post ids you have already seen, and dedupe new results in your own database.