Endpoints
Scrape Reddit posts
Scrapes Reddit posts and scores them for relevance with AI. Free in credits — you only pay at generation time.
/api/v1/scrapeFreeThe endpoint runs exactly the product's scan pipeline: search across the requested subreddits, deduplication, freshness filter (30 days), then AI scoring of every remaining post. Nothing is stored on our side — you get the scored posts and you do what you want with them.
Parameters
Request body (application/json)
| Parameter | Type | Required | Description |
|---|---|---|---|
subreddits | string[] | Required | Subreddits to search, in r/name form. Between 1 and 5. |
keywords | string[] | Required | Search keywords. Between 1 and 10. They serve both as the Reddit query and as context for the scoring. |
product_description | string | Optional | Description of your product. It lifts relevance sharply: it is what tells the scoring which problem you solve. 500 characters at most. |
target_language | fr | en | Optional | Target language of the posts. A strict filter when set; when absent, no language filter is applied. |
limit | number | Optional | Number of posts returned, an integer from 1 to 25. Posts come back sorted by descending score.Default: 10 |
product_description changes everything
Example
curl -s -X POST https://subreply.io/api/v1/scrape \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sr_live_VOTRE_CLE_API" \
-d '{
"subreddits": ["r/startupfrance", "r/entrepreneur_libre"],
"keywords": ["trouver clients", "prospection", "acquisition"],
"product_description": "SaaS de gestion de leads pour TPE/PME françaises",
"target_language": "fr",
"limit": 5
}'{
"posts": [
{
"reddit_post_id": "1abc23",
"title": "Comment trouver mes premiers clients B2B sans réseau ?",
"url": "https://www.reddit.com/r/startupfrance/comments/1abc23/...",
"subreddit": "startupfrance",
"score": 0.87,
"is_potential_customer": true,
"customer_intent": "recherche active",
"product_fit": 0.82,
"language": "fr",
"created_utc": 1725977600
}
],
"meta": {
"scraped": 47,
"scored": 47,
"returned": 1,
"credits_used": 0
}
}Response fields
| Field | Type | Description |
|---|---|---|
posts[].reddit_post_id | string | Reddit identifier of the post (without the t3_ prefix). |
posts[].url | string | Permalink of the post. This is the URL the two other endpoints take. |
posts[].score | number | Overall relevance, from 0 to 1. |
posts[].product_fit | number | How well the post matches the problem your product solves, from 0 to 1. |
posts[].is_potential_customer | boolean | The author is a potential customer (rather than a competitor or a peer). |
posts[].customer_intent | string | Nature of the buying signal (see below). |
posts[].created_utc | number | Publication date, Unix timestamp in seconds. |
meta.scraped | number | Posts retrieved after deduplication. |
meta.scored | number | Posts that actually went through scoring. |
meta.returned | number | Posts returned, after limit is applied. |
Understanding the scoring
Two different questions are asked of every post, and a post has to pass both to come back.
score
Overall relevance of the post to your search, from 0 to 1. It is the sort key of the response. In practice, above 0.7 a post deserves a comment, below 0.5 it is rarely worth acting on.
product_fit
Does the post talk about the problem your product solves? This score deliberately ignores who the author is: a consultant describing your problem perfectly will have a high product_fit and an is_potential_customer of false.
is_potential_customer
Can the author become a customer? false for a competitor, a peer selling the same service or someone merely curious. This is the field that stops you from prospecting people in your own trade.
customer_intent
Nature of the buying signal, from warmest to coldest:
recherche active— the author is looking for a solution right now. The best possible moment to reply.frustration— they are living with the problem without looking for a tool yet.curiosité— they are informing themselves, with no urgency.aucun— no customer signal at all.
An empty array is an honest answer
posts: [] with a meta.scored above 0 means posts existed but none matched your target. That is not a bug: it is the filter doing its job. Widen the keywords or the subreddits rather than re-running the same call.What comes next
Keep the posts above 0.7 with is_potential_customer: true, then pass their url and their title to the generation endpoint. Only at that step are credits charged.