Reddit API
Read live public subreddit feeds with Reddit-native sorting and after cursors, plus individual post and thread-comment records. The served Atom surface is partial: votes, account/community IDs, per-comment parent IDs, complete comment trees, and full text may be unavailable and are identified in each response.
Endpoint health
Loading verification…
Connect your agent
Connect through MCP so your agent can find this API, read its docs, and call its endpoints.
Add the server from your terminal.
claude mcp add --transport http agent-data https://agent-data.motie.dev/mcpIn Claude Code, run /mcp, select agent-data, then Authenticate. Sign in to your agent-data account in the browser.
Then ask your agent to use the Reddit API for your task.
Call it over HTTP
Get an API keySign up free, generate an API key, and set it as AGENT_DATA_API_KEY in your environment. Your first 100 calls each month are free.
curl --request GET --get 'https://api.agent-data.dev/reddit-com/v1/subreddits/ProjectSekai/posts' \
--header "Authorization: Bearer $AGENT_DATA_API_KEY"Endpoints
Inputs and response fields for every endpoint in this API.
GETSubreddits by subreddit posts/v1/subreddits/{subreddit}/posts
Fetch one live public Atom page; RSS fields and history are partial.
Input
subredditRequiredPath · stringPublic Reddit community name without the r/ prefix.
Example: ProjectSekai
sortOptionalQuery · "new" | "hot" | "top" | "rising" | "controversial"Source-verified Reddit feed ordering.
Example: new
limitOptionalQuery · integer, min: 1, max: 25, default: 20Number of Atom entries to request (maximum 25 observed per feed).
Example: 3
cursorOptionalQuery · string | nullExact t3_ fullname returned as next_cursor by the prior page; passed to Reddit as after.
Response
sort"new" | "hot" | "top" | "rising" | "controversial"items?object[]items[].idstringitems[].text?string | nullitems[].score?integer | nullitems[].titlestringitems[].author?string | nullitems[].author_id?string | nullitems[].subreddit?string | nullitems[].created_at?string (date-time) | nullitems[].subreddit_id?string | nullitems[].upvote_ratio?number | nullitems[].canonical_urlstringitems[].comment_count?integer | nullitems[].source_format?string, default: reddit_atomitems[].text_coverage?string, default: partialitems[].thumbnail_url?string | nullitems[].comments_coverage?"not_in_feed" | "partial"items[].unavailable_fields?string[]has_morebooleanpage_sizeintegersubredditstringtransportstringrequest_idstringsource_urlstringnext_cursor?string | nullretrieved_atstring (date-time)source_format?string, default: reddit_atompartial_coverage?boolean, default: trueunavailable_fieldsstring[]Fields marked ? are optional.
For the next page, pass next_cursor from the response as cursor. Leave it empty on the first call.
GETPosts by post id/v1/posts/{post_id}
Fetch the post root from its public thread Atom feed; source fields may be partial.
Input
post_idRequiredPath · stringStable Reddit post fullname, including t3_.
Example: t3_1wnxisk
Response
postobjectpost.idstringpost.text?string | nullpost.score?integer | nullpost.titlestringpost.author?string | nullpost.author_id?string | nullpost.subreddit?string | nullpost.created_at?string (date-time) | nullpost.subreddit_id?string | nullpost.upvote_ratio?number | nullpost.canonical_urlstringpost.comment_count?integer | nullpost.source_format?string, default: reddit_atompost.text_coverage?string, default: partialpost.thumbnail_url?string | nullpost.comments_coverage?"not_in_feed" | "partial"post.unavailable_fields?string[]post_idstringtransportstringrequest_idstringsource_urlstringretrieved_atstring (date-time)unavailable_fieldsstring[]Fields marked ? are optional.
GETPosts by post id comments/v1/posts/{post_id}/comments
Return Atom comments tied to the requested thread; parent links/tree coverage are unavailable.
Input
post_idRequiredPath · stringStable Reddit post fullname whose public thread to read.
Example: t3_1wnxisk
Response
post_idstringcomments?object[]comments[].idstringcomments[].text?string | nullcomments[].score?integer | nullcomments[].titlestringcomments[].author?string | nullcomments[].link_idstringcomments[].author_id?string | nullcomments[].parent_id?string | nullcomments[].subreddit?string | nullcomments[].created_at?string (date-time) | nullcomments[].record_type?string, default: commentcomments[].subreddit_id?string | nullcomments[].upvote_ratio?number | nullcomments[].canonical_urlstringcomments[].comment_count?integer | nullcomments[].source_format?string, default: reddit_atomcomments[].text_coverage?string, default: partialcomments[].thumbnail_url?string | nullcomments[].comments_coverage?"not_in_feed" | "partial"comments[].unavailable_fields?string[]comments[].relationship_coverage?string, default: thread_onlytransportstringrequest_idstringsource_urlstringretrieved_atstring (date-time)comments_complete?boolean, default: falsecomments_coveragestringcomments_returned?integer, default: 0unavailable_fieldsstring[]parent_relationships_available?boolean, default: falseFields marked ? are optional.
Don’t see the endpoint you need?
Ask agent-data to add an endpoint or return more fields. Extensions are free and keep existing endpoints working.
An account is required to submit an extension. Prepare your request, then sign in to build.