api
REST API reference.
A small, predictable API. JSON in, JSON out, one auth header. No SDKs required — a curl command is usually enough.
Authentication
Every request needs an API key in the x-api-key header. Generate one under Settings → API keys. Keys are scoped to your workspace and can be rotated anytime.
API access is included on Pro (10k calls/mo) and Team (100k/mo). You can check your remaining quota on every response.
GET /api/v1/opportunities
Returns scored and ranked matches for a keyword, sorted by score descending.
Parameters
| name | type | required | notes |
|---|---|---|---|
| keyword | string | required | The keyword or short phrase to match against post titles and bodies. |
| subreddits | string[] | optional | Comma-separated subreddit names. Omit to search every monitored sub. |
| min_score | number | optional | Floor on opportunity score, 0–100. Defaults to 30. We recommend 60+ in production. |
| limit | number | optional | Max results to return, 1–100. Defaults to 25. |
Example request
bash
curl -H "x-api-key: rs_your_key_here" \ "https://redditscanner.ai/api/v1/opportunities?keyword=AI+writing+tool&subreddits=SaaS,startups&min_score=60"
Example response
json
{
"keyword": "AI writing tool",
"subreddits": ["SaaS", "startups"],
"min_score": 60,
"count": 12,
"opportunities": [
{
"reddit_id": "abc123",
"title": "Looking for an AI writing tool for my blog",
"subreddit": "SaaS",
"url": "https://reddit.com/r/SaaS/comments/abc123/...",
"score": 82,
"age_hours": 3.5,
"comment_count": 15,
"upvotes": 28,
"reason": "Fresh thread, active discussion, question post."
}
]
}Rate limits
Every response includes X-RateLimit-Remaining and X-RateLimit-Reset headers. When you exceed the cap, subsequent requests return 429 until the reset window.
- Pro — 10,000 requests per month, 100 per hour.
- Team — 100,000 requests per month, 1,000 per hour.
Errors
Errors use standard HTTP codes. Response body is JSON with error.code and error.message.
json
{
"error": {
"code": "missing_keyword",
"message": "The 'keyword' query parameter is required."
}
}