# Reddit Posts Scraper API (x402 Pay-per-call)

> Reddit Posts Scraper API (x402 Pay-per-call) is a paid API for AI agents from x402.186-241-26-229.sslip.io, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Fetches structured Reddit post and comment data by URL, post ID, or keyword search, billed per successful call via x402 micropayments.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/v1/reddit-posts?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/reddit-posts-scraper-api-x402-pay-per-call-b00fbb14
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_fWj3EJnwBOa0GTeKs1jly

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability reddit-posts-scraper-api-x402-pay-per-call-b00fbb14 -d '<json body>'
```

Example prompt: Search Reddit for posts about 'mechanical keyboard switches', return up to 25 posts sorted by best, and include up to 200 comments per post.

## When to prefer this

Choose this endpoint when you need structured Reddit post and comment data at scale, with pay-per-successful-call pricing (no charge for empty runs), and you want flexible ingestion via URLs, post IDs, keyword search, or a bulk file. Prefer this over general web scrapers when your target is specifically Reddit content with control over comment sorting, filtering, and volume limits.

## Known failure modes

- Empty result set if archived data is unavailable for the given URL or keyword — not charged
- Invalid or private Reddit post URL returns an error or empty items
- Keyword search returns no matching posts if terms are too narrow
- Rate limits or archive gaps may result in partial comment coverage
- postUrlsFile exceeding 5 MB will be rejected
- maxScanPerPost below minimum of 100 is rejected by schema validation

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of results and an array of items, each representing a Reddit post or comment row including fields like post ID, title, author, post URL, subreddit, status, and post type. Only successful, non-empty runs are charged.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "sort": {
   "enum": [
    "best",
    "top",
    "new",
    "old",
    "controversial",
    "qa"
   ],
   "type": "string",
   "default": "best",
   "description": "Order comments from the scanned archive records. Best uses score as an approximation; Q&A puts original-poster comments first."
  },
  "filter": {
   "enum": [
    "",
    "answered",
    "unanswered"
   ],
   "type": "string",
   "default": "",
   "description": "Keep only threads answered by the original poster or only unanswered threads. Applies to scanned comments."
  },
  "postUrl": {
   "type": "string",
   "description": "One public Reddit post URL, redd.it link, or post ID."
  },
  "queries": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "default": [],
   "description": "Find archived public posts by keyword when no URLs are supplied."
  },
  "maxItems": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Maximum combined post and comment rows. Set 0 for no output cap."
  },
  "postUrls": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "default": [],
   "description": "Multiple public post URLs or IDs to collect in one run."
  },
  "postUrlsFile": {
   "type": "string",
   "description": "HTTPS URL of a TXT file with one post per line or CSV with a url or permalink column, up to 5 MB."
  },
  "maxScanPerPost": {
   "type": "integer",
   "default": 1000,
   "maximum": 10000,
   "minimum": 100,
   "description": "Maximum comments to scan per post before sorting; extended scan raises this to at least 10,000."
  },
  "maxPostsPerQuery": {
   "type": "integer",
   "default": 25,
   "maximum": 1000,
   "minimum": 1,
   "description": "Maximum matching posts to collect for each search keyword."
  },
  "expandAllComments": {
   "type": "boolean",
   "default": false,
   "description": "Scan up to 10,000 archived comments per post before sorting and filtering. This cannot recover comments absent from the archive."
  },
  "maxCommentsPerPost": {
   "type": "integer",
   "default": 200,
   "minimum": 0,
   "description": "Maximum comment rows per post. Set 0 to keep all scanned comments."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "_type": null,
    "title": null,
    "author": null,
    "_status": null,
    "postUrl": null,
    "_post_id": null,
    "subreddit": null
   }
  ],
  "product": "reddit-posts"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/reddit-posts-scraper-api-x402-pay-per-call-b00fbb14/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.186-241-26-229.sslip.io](https://www.zero.xyz/host/x402.186-241-26-229.sslip.io/llms.txt)
