Catalog / Reddit

Reddit API

reddit.com

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.

  • Social & video
  • reddit
  • public-content
  • social-media
3 endpointsDocs updated

Endpoint health

Loading verification…

Connect your agent

Connect through MCP so your agent can find this API, read its docs, and call its endpoints.

Setup guide

Add the server from your terminal.

Claude Code · terminal
claude mcp add --transport http agent-data https://agent-data.motie.dev/mcp

In 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 key

Sign 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.

Fetch one live public Atom page; RSS fields and history are partial.

Public Reddit community name without the r/ prefix.

Optional parameters 3

Source-verified Reddit feed ordering.

Number of Atom entries to request (maximum 25 observed per feed).

Exact t3_ fullname returned as next_cursor by the prior page; passed to Reddit as after.

View call pricing
cURL · Subreddits by subreddit posts
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 · string

Public 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: 20

Number of Atom entries to request (maximum 25 observed per feed).

Example: 3

cursorOptionalQuery · string | null

Exact 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[].idstring
items[].text?string | null
items[].score?integer | null
items[].titlestring
items[].author?string | null
items[].author_id?string | null
items[].subreddit?string | null
items[].created_at?string (date-time) | null
items[].subreddit_id?string | null
items[].upvote_ratio?number | null
items[].canonical_urlstring
items[].comment_count?integer | null
items[].source_format?string, default: reddit_atom
items[].text_coverage?string, default: partial
items[].thumbnail_url?string | null
items[].comments_coverage?"not_in_feed" | "partial"
items[].unavailable_fields?string[]
has_moreboolean
page_sizeinteger
subredditstring
transportstring
request_idstring
source_urlstring
next_cursor?string | null
retrieved_atstring (date-time)
source_format?string, default: reddit_atom
partial_coverage?boolean, default: true
unavailable_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 · string

Stable Reddit post fullname, including t3_.

Example: t3_1wnxisk

Response

postobject
post.idstring
post.text?string | null
post.score?integer | null
post.titlestring
post.author?string | null
post.author_id?string | null
post.subreddit?string | null
post.created_at?string (date-time) | null
post.subreddit_id?string | null
post.upvote_ratio?number | null
post.canonical_urlstring
post.comment_count?integer | null
post.source_format?string, default: reddit_atom
post.text_coverage?string, default: partial
post.thumbnail_url?string | null
post.comments_coverage?"not_in_feed" | "partial"
post.unavailable_fields?string[]
post_idstring
transportstring
request_idstring
source_urlstring
retrieved_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 · string

Stable Reddit post fullname whose public thread to read.

Example: t3_1wnxisk

Response

post_idstring
comments?object[]
comments[].idstring
comments[].text?string | null
comments[].score?integer | null
comments[].titlestring
comments[].author?string | null
comments[].link_idstring
comments[].author_id?string | null
comments[].parent_id?string | null
comments[].subreddit?string | null
comments[].created_at?string (date-time) | null
comments[].record_type?string, default: comment
comments[].subreddit_id?string | null
comments[].upvote_ratio?number | null
comments[].canonical_urlstring
comments[].comment_count?integer | null
comments[].source_format?string, default: reddit_atom
comments[].text_coverage?string, default: partial
comments[].thumbnail_url?string | null
comments[].comments_coverage?"not_in_feed" | "partial"
comments[].unavailable_fields?string[]
comments[].relationship_coverage?string, default: thread_only
transportstring
request_idstring
source_urlstring
retrieved_atstring (date-time)
comments_complete?boolean, default: false
comments_coveragestring
comments_returned?integer, default: 0
unavailable_fieldsstring[]
parent_relationships_available?boolean, default: false

Fields 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.