Reddit API endpoint
Returns public posts submitted from a linked domain. A `503` with a `Retry-After` header means Reddit is temporarily throttling the request; wait that many seconds and retry. If source.type is redlib, public fields and credit weights are preserved.
/reddit/domain/{domain}/postsPath parameters: domain is required and accepts a hostname such as openai.com, without scheme, port, path, query, or fragment.
Query parameters: sort is optional and must be one of hot, new, top, or rising; it defaults to hot. time is optional and must be one of hour, day, week, month, year, or all when supplied. limit defaults to 25 and clamps to 100. after is an optional Reddit pagination token.
Notable response behavior: invalid domain hostnames, sort values, time values, or limits return 400. Empty result sets return 404. Reddit block pages, malformed upstream responses, and transport failures return 503. When Reddit rate limits the request, the response is 503 with a Retry-After header giving the number of seconds to wait; this is a temporary throttle rather than a permanent failure, so clients should back off for that long and retry instead of treating the endpoint as unavailable. The score and comment_count fields remain in the schema but are not populated by the default feed.
When the native Reddit source fails, the service can use the internal Redlib provider. Fallback responses retain the same fields and credit weights and report source.type=redlib with a public Reddit URL. Listing cursors use the upstream JSON cursor; results remain bounded by limit. Temporary provider, authentication, rate-limit and parser failures return 503, while confirmed missing resources return 404. Provider selection is server configuration.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| name | 20 | |
| subreddit | 20 | |
| title | 20 | |
| url | 20 | reddit.com |
| permalink | 20 | reddit.com |
| author | 20 | |
| created_utc | 20 | 2026-10-06 to 2026-10-10 |
| created | 20 | 2026-10-06 to 2026-10-10 |
| selftext | 20 | |
| source_feed_url | 20 | reddit.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| domain (path) | string | Yes | Domain hostname, without scheme or path | openai.com | |
| sort | string | No | Sort: hot, new, top, or rising Allowed values: hot, new, top, rising. | ||
| time | string | No | Time window for top sort: hour, day, week, month, year, or all Allowed values: hour, day, week, month, year, all. | ||
| limit | integer | No | 25 and clamps to 100 | Maximum posts, defaults to 25 and clamps to 100 | |
| after | string | No | Reddit pagination token | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/reddit/domain/openai.com/posts?sort=hot&time=hour&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"domain": "openai.com",
"sort": "hot",
"posts": [
{
"id": "1abcxyz",
"name": "t3_1abcxyz",
"subreddit": "OpenAI",
"title": "OpenAI discussion thread",
"url": "https://www.reddit.com/r/OpenAI/comments/1abcxyz/openai_discussion_thread/",
"author": {
"name": "sample_user",
"profile_url": "https://www.reddit.com/user/sample_user/"
},
"created": "2024-04-19T00:00:00Z",
"selftext": "Discussion body",
"source_feed_url": "https://www.reddit.com/domain/openai.com?limit=25"
}
],
"pagination": {
"limit": 25,
"after": "t3_1abcxyz"
},
"source": {
"type": "feed",
"url": "https://www.reddit.com/domain/openai.com?limit=25"
}
}
}Request schema
No body schema
Response schema
#/definitions/reddit.domainPostsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | reddit.DomainPostsResponse | No | ||||
| data.domain | string | No | openai.com | |||
| data.pagination | reddit.Pagination | No | ||||
| data.pagination.after | string | No | t3_1abcxyz | Cursor to pass as the `after` parameter to fetch the next page. | ||
| data.pagination.limit | integer | No | 25 | Maximum number of items requested for this page. | ||
| data.posts | array | No | Post record, 28 fields: author, award_count, comment_count, created, created_utc, domain, estimated_downvotes, estimated_upvotes, flair, id, is_self, is_video and 14 more. Described under Reddit Search API. | |||
| data.sort | string | No | hot | |||
| data.source | reddit.SourceDetail | No | ||||
| data.source.type | string | No | feed | Kind of Reddit source the data was read from. | ||
| data.source.url | string | No | https://www.reddit.com/r/OpenAI/ | Reddit URL the data was read from. | ||
| data.time | string | No | week | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/reddit/domain/openai.com/posts?sort=hot&time=hour&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"