Reddit posts with their full comment trees, post search with subreddit, sort and time filters, and a subreddit's hot, new, top, rising or controversial listing.
Call these actions with your String API key; see Authentication. Every call answers with the envelope described in Responses & errors, whose data holds the rows below.
- Site:
reddit - Version:
1.0.1 - Reads from:
www.reddit.com
| Action | Description | Listed price |
|---|---|---|
post | Read one Reddit post and its full comment tree: every reply, however deep, including the branches Reddit collapses behind "more replies". Returns one row: the post (title, author, body, score, comment count, flair, link) and its comments depth first, each with its parent, depth, author, body, score and time. Large threads take several pages; maxPages bounds them, and complete says whether the tree was read to the end. A post id Reddit has no post for fails as not found. | Billed per request at your plan's rates |
search | Search Reddit posts by keyword, across Reddit or within one subreddit, sorted by relevance, hot, top, new or most comments, optionally limited to the last hour, day, week, month or year. Each row is a full post: title, author, subreddit, body, link, score, upvote ratio, comment count and flair. One search returns up to 500 posts, all Reddit serves for it; narrow the query, subreddit or time window to reach others. Results exclude NSFW posts, as Reddit's logged-out search does. | Billed per request at your plan's rates |
subreddit | List a subreddit's posts in the order Reddit shows them: hot, new, top, rising, controversial or best, with a time range for top and controversial. Each row is a full post, the same as search returns: title, author, body, link, score, upvote ratio, comment count and flair. About 25 posts per page after a short first page; pinned posts come first, as on the site. A subreddit that does not exist, or that Reddit bans, keeps private or quarantines, fails with that reason. | Billed per request at your plan's rates |
post
Read one Reddit post and its full comment tree: every reply, however deep, including the branches Reddit collapses behind "more replies". Returns one row: the post (title, author, body, score, comment count, flair, link) and its comments depth first, each with its parent, depth, author, body, score and time. Large threads take several pages; maxPages bounds them, and complete says whether the tree was read to the end. A post id Reddit has no post for fails as not found.
POST https://request.usestring.ai/v1/integrations/reddit/postInput
Unknown fields are rejected.
| Field | Type | Description |
|---|---|---|
post | string | Required. The post: its URL, such as https://www.reddit.com/r/technology/comments/1xapaw7/, a redd.it link, its id 1xapaw7 or its fullname t3_1xapaw7. A URL ending in .json works too. At least 1 character. |
sort | best top new old controversial qa | Comment order: best (the default, Reddit's own), top, new, old, controversial or qa. |
maxPages | integer | The most comment pages to read, 1 to 100. A page is up to 200 comments, or one collapsed reply branch. Defaults to 20. From 1 to 100. |
Output
data is an array of rows, one per result. Each row has:
| Field | Type | Description |
|---|---|---|
post | object | — |
post.id | string | The post's base36 id, as in reddit.com/comments/<id>. |
post.fullname | string | The post's fullname, t3_<id>. |
post.subreddit | string | The subreddit's name without r/. |
post.subredditId | string | The subreddit's fullname, t5_<id>. |
post.title | string | — |
post.author | string | null | The author's username; null when the account is deleted or suspended. |
post.authorId | string | null | The author's fullname, t2_<id>. |
post.createdAt | string | When the post was submitted, ISO 8601 in UTC. |
post.editedAt | string | null | When the post was last edited, ISO 8601 in UTC; null if never. |
post.score | integer | Upvotes minus downvotes, as Reddit shows it. |
post.upvoteRatio | number | null | The share of votes that are upvotes, 0 to 1. |
post.commentCount | integer | — |
post.permalink | string | The post's page on www.reddit.com. |
post.url | string | What the post links to; the post's own page for a text post. |
post.domain | string | The linked site's domain, or self.<subreddit> for a text post. |
post.isSelf | boolean | True for a text post. |
post.body | string | null | A text post's body as Markdown; null for a link, image or video post without text. |
post.flair | string | null | The post's flair text. |
post.thumbnail | string | null | The post's thumbnail image URL. |
post.isNsfw | boolean | — |
post.isSpoiler | boolean | — |
post.isLocked | boolean | — |
post.isStickied | boolean | — |
post.isArchived | boolean | — |
post.distinguished | string | null | moderator or admin when the author posted in that role. |
post.removedBy | string | null | Why the post is removed, such as moderator, author or deleted; null when it is not. |
post.language | string | null | The post's language as Reddit detected it, such as en; und (undetermined) when Reddit could not tell, as for many link and image posts with little text. |
comments | object[] | Every comment read, depth first in the chosen order: each comment is followed by its replies. |
comments[].id | string | The comment's base36 id. |
comments[].fullname | string | The comment's fullname, t1_<id>. |
comments[].postId | string | The post's fullname, t3_<id>. |
comments[].parentId | string | The parent comment's fullname, or the post's for a top-level comment. |
comments[].depth | integer | 0 for a top-level comment, 1 for a reply to one, and so on. |
comments[].author | string | null | The author's username; null when the account is deleted or suspended. |
comments[].authorId | string | null | The author's fullname, t2_<id>. |
comments[].body | string | null | The comment as Markdown; null when it is deleted or removed. |
comments[].createdAt | string | ISO 8601 in UTC. |
comments[].editedAt | string | null | ISO 8601 in UTC; null if never edited. |
comments[].score | integer | null | Upvotes minus downvotes; null while the subreddit hides a new comment's score. |
comments[].isSubmitter | boolean | True when the post's author wrote the comment. |
comments[].isStickied | boolean | — |
comments[].distinguished | string | null | moderator or admin when the author commented in that role. |
comments[].removedBy | string | null | Why the comment is removed; null when it is not. |
comments[].permalink | string | The comment's page on www.reddit.com. |
comments[].replyCount | integer | Direct replies Reddit counts for the comment, loaded or not. |
complete | boolean | True when every comment Reddit serves for the post was read; false when maxPages ran out first. |
Example
curl https://request.usestring.ai/v1/integrations/reddit/post \
-H "Authorization: Bearer $STRING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": "https://www.reddit.com/r/MaticRobots/comments/1wxjx5g/bag_pass_and_matic_care_are_getting_more/",
"maxPages": 3
}'data starts with these rows:
[
{
"post": {
"id": "1wxjx5g",
"fullname": "t3_1wxjx5g",
"subreddit": "MaticRobots",
"subredditId": "t5_9uh9zm",
"title": "Bag Pass and Matic Care are getting more expensive tomorrow",
"author": "IrishSpring",
"authorId": "t2_64j5h",
"createdAt": "2026-10-04T16:30:47Z",
"editedAt": null,
"score": 16,
"upvoteRatio": 0.9444444444444444,
"commentCount": 31,
"permalink": "https://www.reddit.com/r/MaticRobots/comments/1wxjx5g/bag_pass_and_matic_care_are_getting_more/",
"url": "https://www.reddit.com/r/MaticRobots/comments/1wxjx5g/bag_pass_and_matic_care_are_getting_more/",
"domain": "self.MaticRobots",
"isSelf": true,
"body": "I just got an email from Matic that the bag pass and Matic Care extended warranty are getting more expensive due to tariffs and components costs.\n\n\"Annual Bag P…",
"flair": "Discussion",
"thumbnail": null,
"isNsfw": false,
"isSpoiler": false,
"isLocked": false,
"isStickied": false,
"isArchived": false,
"distinguished": null,
"removedBy": null,
"language": "en"
},
"comments": [
{
"id": "pdvm9qq",
"fullname": "t1_pdvm9qq",
"postId": "t3_1wxjx5g",
"parentId": "t3_1wxjx5g",
"depth": 0,
"author": "branden3112",
"authorId": "t2_6jssp",
"body": "Can bag passes be stacked to have multiple years worth?",
"createdAt": "2026-10-04T20:13:43Z",
"editedAt": null,
"score": 6,
"isSubmitter": false,
"isStickied": false,
"distinguished": null,
"removedBy": null,
"permalink": "https://www.reddit.com/r/MaticRobots/comments/1wxjx5g/bag_pass_and_matic_care_are_getting_more/pdvm9qq/",
"replyCount": 1
},
{
"id": "pdwqaxr",
"fullname": "t1_pdwqaxr",
"postId": "t3_1wxjx5g",
"parentId": "t1_pdvm9qq",
"depth": 1,
"author": "IrishSpring",
"authorId": "t2_64j5h",
"body": "+1",
"createdAt": "2026-10-04T23:16:55Z",
"editedAt": null,
"score": 2,
"isSubmitter": true,
"isStickied": false,
"distinguished": null,
"removedBy": null,
"permalink": "https://www.reddit.com/r/MaticRobots/comments/1wxjx5g/bag_pass_and_matic_care_are_getting_more/pdwqaxr/",
"replyCount": 0
},
{
"id": "pdu3k7k",
"fullname": "t1_pdu3k7k",
"postId": "t3_1wxjx5g",
"parentId": "t3_1wxjx5g",
"depth": 0,
"author": "IrishSpring",
"authorId": "t2_64j5h",
"body": "Here's the full email\n\n",
"createdAt": "2026-10-04T16:31:36Z",
"editedAt": null,
"score": 2,
"isSubmitter": true,
"isStickied": false,
"distinguished": null,
"removedBy": null,
"permalink": "https://www.reddit.com/r/MaticRobots/comments/1wxjx5g/bag_pass_and_matic_care_are_getting_more/pdu3k7k/",
"replyCount": 0
}
],
"complete": true
}
]Requests and billing
- Requests: 1 Web Access request per result page, plus up to 2 setup requests per call.
- Billing:
passthrough. Each request the action makes bills at its own rate on your plan; there is no separate charge for the action. See Pricing.
search
Search Reddit posts by keyword, across Reddit or within one subreddit, sorted by relevance, hot, top, new or most comments, optionally limited to the last hour, day, week, month or year. Each row is a full post: title, author, subreddit, body, link, score, upvote ratio, comment count and flair. One search returns up to 500 posts, all Reddit serves for it; narrow the query, subreddit or time window to reach others. Results exclude NSFW posts, as Reddit's logged-out search does.
POST https://request.usestring.ai/v1/integrations/reddit/searchInput
Unknown fields are rejected.
| Field | Type | Description |
|---|---|---|
query | string | Required. What to search for, as typed in Reddit's search box. At least 1 character. |
subreddit | string | Only posts in this subreddit: its name, such as technology, or r/technology. |
sort | relevance hot top new comments | relevance (the default), hot, top, new or comments (most commented) |
time | hour day week month year all | Only posts from the last hour, day, week, month or year, or all (the default) |
limit | integer | The most posts to return, 1 to 500. Defaults to 500, all Reddit serves for one search. From 1 to 500. |
Output
data is an array of rows, one per result. Each row has:
| Field | Type | Description |
|---|---|---|
id | string | The post's base36 id, as in reddit.com/comments/<id>. |
fullname | string | The post's fullname, t3_<id>. |
subreddit | string | The subreddit's name without r/. |
subredditId | string | The subreddit's fullname, t5_<id>. |
title | string | — |
author | string | null | The author's username; null when the account is deleted or suspended. |
authorId | string | null | The author's fullname, t2_<id>. |
createdAt | string | When the post was submitted, ISO 8601 in UTC. |
editedAt | string | null | When the post was last edited, ISO 8601 in UTC; null if never. |
score | integer | Upvotes minus downvotes, as Reddit shows it. |
upvoteRatio | number | null | The share of votes that are upvotes, 0 to 1. |
commentCount | integer | — |
permalink | string | The post's page on www.reddit.com. |
url | string | What the post links to; the post's own page for a text post. |
domain | string | The linked site's domain, or self.<subreddit> for a text post. |
isSelf | boolean | True for a text post. |
body | string | null | A text post's body as Markdown; null for a link, image or video post without text. |
flair | string | null | The post's flair text. |
thumbnail | string | null | The post's thumbnail image URL. |
isNsfw | boolean | — |
isSpoiler | boolean | — |
isLocked | boolean | — |
isStickied | boolean | — |
isArchived | boolean | — |
distinguished | string | null | moderator or admin when the author posted in that role. |
removedBy | string | null | Why the post is removed, such as moderator, author or deleted; null when it is not. |
language | string | null | The post's language as Reddit detected it, such as en; und (undetermined) when Reddit could not tell, as for many link and image posts with little text. |
Example
curl https://request.usestring.ai/v1/integrations/reddit/search \
-H "Authorization: Bearer $STRING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "robot vacuum",
"subreddit": "MaticRobots",
"sort": "new"
}'data starts with these rows:
[
{
"id": "1x8dyli",
"fullname": "t3_1x8dyli",
"subreddit": "MaticRobots",
"subredditId": "t5_9uh9zm",
"title": "Brand new Mattic Robot making clicking noise",
"author": "Pingfao",
"authorId": "t2_104igt",
"createdAt": "2026-10-17T16:06:18Z",
"editedAt": null,
"score": 5,
"upvoteRatio": 0.8571428571428571,
"commentCount": 19,
"permalink": "https://www.reddit.com/r/MaticRobots/comments/1x8dyli/brand_new_mattic_robot_making_clicking_noise/",
"url": "https://v.redd.it/q0y3v9luw1wh1",
"domain": "v.redd.it",
"isSelf": false,
"body": "Sharing to see if this is normal. We just got our Matic yesterday. The vacuuming and mopping itself is quiet but there's a weird clicking noise when it's cleani…",
"flair": "Bug / Issue",
"thumbnail": "https://external-preview.redd.it/cmg3MmIzanV3MXdoMU32WJgmPKSvMfnYrsqG86Pw_3Wngtej-loEIkZAe9N3.png?width=140&height=140&crop=1%3A1%2Csmart&format=jpg&auto=webp&s=f25ebd6a9472f4b688e6a87e834f55ad1c517b48",
"isNsfw": false,
"isSpoiler": false,
"isLocked": false,
"isStickied": false,
"isArchived": false,
"distinguished": null,
"removedBy": null,
"language": "en"
}
]Requests and billing
- Requests: 1 Web Access request per call, plus up to 1 setup request per call.
- Billing:
passthrough. Each request the action makes bills at its own rate on your plan; there is no separate charge for the action. See Pricing.
subreddit
List a subreddit's posts in the order Reddit shows them: hot, new, top, rising, controversial or best, with a time range for top and controversial. Each row is a full post, the same as search returns: title, author, body, link, score, upvote ratio, comment count and flair. About 25 posts per page after a short first page; pinned posts come first, as on the site. A subreddit that does not exist, or that Reddit bans, keeps private or quarantines, fails with that reason.
POST https://request.usestring.ai/v1/integrations/reddit/subredditInput
Unknown fields are rejected.
| Field | Type | Description |
|---|---|---|
subreddit | string | Required. The subreddit: its name, such as technology, r/technology, or its URL. A URL ending in .json works too. At least 1 character. |
sort | hot new top rising controversial best | hot (the default), new, top, rising, controversial or best. |
time | hour day week month year all | For top and controversial: the last hour, day, week, month or year, or all. Reddit's default is day. |
maxPages | integer | The most listing pages to read, 1 to 40, the first about 7 posts and each later one about 25. Defaults to 5 (about 100 posts) From 1 to 40. |
Output
data is an array of rows, one per result. Each row has:
| Field | Type | Description |
|---|---|---|
id | string | The post's base36 id, as in reddit.com/comments/<id>. |
fullname | string | The post's fullname, t3_<id>. |
subreddit | string | The subreddit's name without r/. |
subredditId | string | The subreddit's fullname, t5_<id>. |
title | string | — |
author | string | null | The author's username; null when the account is deleted or suspended. |
authorId | string | null | The author's fullname, t2_<id>. |
createdAt | string | When the post was submitted, ISO 8601 in UTC. |
editedAt | string | null | When the post was last edited, ISO 8601 in UTC; null if never. |
score | integer | Upvotes minus downvotes, as Reddit shows it. |
upvoteRatio | number | null | The share of votes that are upvotes, 0 to 1. |
commentCount | integer | — |
permalink | string | The post's page on www.reddit.com. |
url | string | What the post links to; the post's own page for a text post. |
domain | string | The linked site's domain, or self.<subreddit> for a text post. |
isSelf | boolean | True for a text post. |
body | string | null | A text post's body as Markdown; null for a link, image or video post without text. |
flair | string | null | The post's flair text. |
thumbnail | string | null | The post's thumbnail image URL. |
isNsfw | boolean | — |
isSpoiler | boolean | — |
isLocked | boolean | — |
isStickied | boolean | — |
isArchived | boolean | — |
distinguished | string | null | moderator or admin when the author posted in that role. |
removedBy | string | null | Why the post is removed, such as moderator, author or deleted; null when it is not. |
language | string | null | The post's language as Reddit detected it, such as en; und (undetermined) when Reddit could not tell, as for many link and image posts with little text. |
Example
curl https://request.usestring.ai/v1/integrations/reddit/subreddit \
-H "Authorization: Bearer $STRING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subreddit": "MaticRobots",
"sort": "new",
"maxPages": 1
}'data starts with these rows:
[
{
"id": "1xafajp",
"fullname": "t3_1xafajp",
"subreddit": "MaticRobots",
"subredditId": "t5_9uh9zm",
"title": "Holiday Sales?",
"author": "Jazzlike_Rich_9275",
"authorId": "t2_co3yzo0u",
"createdAt": "2026-10-20T01:37:33Z",
"editedAt": null,
"score": 3,
"upvoteRatio": 1,
"commentCount": 4,
"permalink": "https://www.reddit.com/r/MaticRobots/comments/1xafajp/holiday_sales/",
"url": "https://www.reddit.com/r/MaticRobots/comments/1xafajp/holiday_sales/",
"domain": "self.MaticRobots",
"isSelf": true,
"body": "Any plans for Black Friday or holiday sales this year? I’ve been considering purchasing a Matic for a while and really regret not pulling the trigger before the…",
"flair": "Other",
"thumbnail": null,
"isNsfw": false,
"isSpoiler": false,
"isLocked": false,
"isStickied": false,
"isArchived": false,
"distinguished": null,
"removedBy": null,
"language": "en"
},
{
"id": "1xad50k",
"fullname": "t3_1xad50k",
"subreddit": "MaticRobots",
"subredditId": "t5_9uh9zm",
"title": "Need More Convenient “Job” Options",
"author": "Muhahahahaz",
"authorId": "t2_i3w9f",
"createdAt": "2026-10-19T23:57:44Z",
"editedAt": null,
"score": 8,
"upvoteRatio": 1,
"commentCount": 2,
"permalink": "https://www.reddit.com/r/MaticRobots/comments/1xad50k/need_more_convenient_job_options/",
"url": "https://i.redd.it/tp9mjxssiiwh1.jpeg",
"domain": "i.redd.it",
"isSelf": false,
"body": "It would be really nice to have a “Start Now” option for this impending job. (Or at the very least, let me schedule it for any arbitrary time I want? Rather tha…",
"flair": "New Feature",
"thumbnail": "https://preview.redd.it/tp9mjxssiiwh1.jpeg?width=140&height=140&crop=1%3A1%2Csmart&auto=webp&s=ff0ca09058aa38b48b6c0c5d4d67b917c1ce26d1",
"isNsfw": false,
"isSpoiler": false,
"isLocked": false,
"isStickied": false,
"isArchived": false,
"distinguished": null,
"removedBy": null,
"language": "en"
}
]Requests and billing
- Requests: 1–2 Web Access requests per result page, plus up to 1 setup request per call.
- Billing:
passthrough. Each request the action makes bills at its own rate on your plan; there is no separate charge for the action. See Pricing.