Reddit data, ready when you are.

Posts, comments, subreddits and search from Reddit, with scores and permalinks on every row.

Try in playground From $0.0045 a record · $0.10 free

What you can get.

  • $0.0045per record

    Posts by a person

    A person's latest posts, with likes and comments.

    Try it →
  • $0.0045per record

    Subreddit

    A subreddit's listing under one sort. `postedWithin` applies to `top` only. Reddit ignores it for every other sort.

    Try it →
  • $0.0045per record

    Comments

    Top comments on up to ten POSTS, by permalink or bare post id. Commenters are free text. Not corpus members.

    Try it →
  • $0.0045per record

    Search

    Posts across all of Reddit matching a keyword. What Reddit is saying about something. `postedWithin` applies to `top` only.

    Try it →

What the data looks like.

authorsubreddittitlekindscoreupvoteRatiocommentsCountpostedAtpostIdisNsfwpermalinkexternalUrlmediaUrlthumbnailUrleditedAtdetails
u/quietbuilderr/startupsWhat we learned pricing our first B2B producttext1,2400.963182026-10-14T10:00:00Z226223522falsehttps://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000https://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000https://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000https://img.reddit.com/what-we-learned-pricing-our-first-b2b-pr.jpg2026-10-09
  • {}
u/quietbuilderr/SaaSOur churn halved after one onboarding changetext8600.941442026-10-02T16:30:00Z220858165falsehttps://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001https://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001https://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001https://img.reddit.com/our-churn-halved-after-one-onboarding-ch.jpg2026-10-12
  • {}
u/quietbuilderr/EntrepreneurYear 2 revenue: honest numbersimage2,3100.914022026-09-21T12:10:00Z2482195380falsehttps://www.reddit.com/year-2-revenue-honest-numbers-1002https://www.reddit.com/year-2-revenue-honest-numbers-1002https://www.reddit.com/year-2-revenue-honest-numbers-1002https://img.reddit.com/year-2-revenue-honest-numbers.jpg2026-10-06
  • {}
16 fields, scroll sideways for all. Example rows: made-up names, real field names. Live calls return real data.

For developers

API reference.

One endpoint, POST /v1/reddit. Open an operation to see its fields.

Read the docs
Posts by a personposts

One user's recent submissions. Score, comment count, upvote ratio and the kind of each post.

FieldTypeMeaning
subject *string · ≤400 charsOne u/username or profile URL.
limitinteger · 1-50

Response fields, each row of data

FieldType
postIdstring
authorstring
subredditstring
titlestring
bodystring
kindstring
flairstring
isNsfwboolean
permalinkstring
externalUrlstring
mediaUrlstring
thumbnailUrlstring
postedAtstring
editedAtstring
scoreinteger
upvoteRationumber
commentsCountinteger
subredditSubscribersinteger
fullnamestring
gallerylist of string
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · posts
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"posts","subject":"u/spez","limit":25}'

Example response rows

data · made-up names, real field names
[
  {
    "author": "u/quietbuilder",
    "subreddit": "r/startups",
    "title": "What we learned pricing our first B2B product",
    "kind": "text",
    "score": 1240,
    "upvoteRatio": 0.96,
    "commentsCount": 318,
    "postedAt": "2026-10-14T10:00:00Z",
    "postId": "226223522",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000",
    "externalUrl": "https://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000",
    "mediaUrl": "https://www.reddit.com/what-we-learned-pricing-our-first-b2b-pr-1000",
    "thumbnailUrl": "https://img.reddit.com/what-we-learned-pricing-our-first-b2b-pr.jpg",
    "editedAt": "2026-10-09",
    "details": {}
  },
  {
    "author": "u/quietbuilder",
    "subreddit": "r/SaaS",
    "title": "Our churn halved after one onboarding change",
    "kind": "text",
    "score": 860,
    "upvoteRatio": 0.94,
    "commentsCount": 144,
    "postedAt": "2026-10-02T16:30:00Z",
    "postId": "220858165",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001",
    "externalUrl": "https://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001",
    "mediaUrl": "https://www.reddit.com/our-churn-halved-after-one-onboarding-ch-1001",
    "thumbnailUrl": "https://img.reddit.com/our-churn-halved-after-one-onboarding-ch.jpg",
    "editedAt": "2026-10-12",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try posts by a person in the playground Examples and pricing for posts by a person
Subredditsubreddit

A subreddit's listing under one sort. `postedWithin` applies to `top` only. Reddit ignores it for every other sort.

FieldTypeMeaning
subject *string · ≤400 charsOne r/name or subreddit URL.
sortenumhot · newest · top · rising
postedWithinenum1h · 1d · 7d · 30d · 1y · any
limitinteger · 1-50

Response fields, each row of data

FieldType
postIdstring
authorstring
subredditstring
titlestring
bodystring
kindstring
flairstring
isNsfwboolean
permalinkstring
externalUrlstring
mediaUrlstring
thumbnailUrlstring
postedAtstring
editedAtstring
scoreinteger
upvoteRationumber
commentsCountinteger
subredditSubscribersinteger
fullnamestring
gallerylist of string
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · subreddit
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"subreddit","subject":"r/technology","sort":"top","postedWithin":"7d","limit":25}'

Example response rows

data · made-up names, real field names
[
  {
    "author": "u/brew_nerd",
    "subreddit": "r/coffee",
    "title": "Best grinder under $200 in 2026?",
    "kind": "text",
    "flair": "Gear",
    "score": 286,
    "upvoteRatio": 0.97,
    "commentsCount": 241,
    "postedAt": "2026-10-11T09:00:00Z",
    "subredditSubscribers": 2410000,
    "postId": "2117003186",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/best-grinder-under-200-in-2026-1000",
    "externalUrl": "https://www.reddit.com/best-grinder-under-200-in-2026-1000",
    "mediaUrl": "https://www.reddit.com/best-grinder-under-200-in-2026-1000",
    "thumbnailUrl": "https://img.reddit.com/best-grinder-under-200-in-2026.jpg",
    "editedAt": "2026-10-09",
    "details": {}
  },
  {
    "author": "u/latteart_lou",
    "subreddit": "r/coffee",
    "title": "My first decent heart after 3 months!",
    "kind": "image",
    "flair": "Latte art",
    "score": 1920,
    "upvoteRatio": 0.98,
    "commentsCount": 96,
    "postedAt": "2026-10-10T18:40:00Z",
    "subredditSubscribers": 2410000,
    "postId": "4131271503",
    "isNsfw": false,
    "permalink": "https://www.reddit.com/my-first-decent-heart-after-3-months-1001",
    "externalUrl": "https://www.reddit.com/my-first-decent-heart-after-3-months-1001",
    "mediaUrl": "https://www.reddit.com/my-first-decent-heart-after-3-months-1001",
    "thumbnailUrl": "https://img.reddit.com/my-first-decent-heart-after-3-months.jpg",
    "editedAt": "2026-10-11",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try subreddit in the playground Examples and pricing for subreddit
Commentscomments

Top comments on up to ten POSTS, by permalink or bare post id. Commenters are free text. Not corpus members.

FieldTypeMeaning
subjects *list of string · 1-10 itemsPost permalinks or bare post ids.
limitinteger · 1-100

Response fields, each row of data

FieldType
commentIdstring
parentIdstring
authorstring
bodystring
scoreinteger
depthinteger
postedAtstring
isOpboolean
permalinkstring
parentFullnamestring
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · comments
curl -X POST https://apiforagents.dev/v1/reddit \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"comments","subjects":["https://www.reddit.com/r/technology/comments/<post-id>/"],"limit":50}'

Example response rows

data · made-up names, real field names
[
  {
    "author": "u/kai_dev",
    "body": "Charge more than feels comfortable. Then talk to every churned user.",
    "score": 412,
    "depth": 0,
    "isOp": false,
    "postedAt": "2026-10-14T10:30:00Z",
    "commentId": "2387243326",
    "parentId": "4795852",
    "permalink": "https://www.reddit.com/u-kai-dev-1000",
    "details": {}
  },
  {
    "author": "u/quietbuilder",
    "body": "This. We doubled price and lost only 4% of signups.",
    "score": 128,
    "depth": 1,
    "isOp": true,
    "postedAt": "2026-10-14T10:52:00Z",
    "commentId": "2972310197",
    "parentId": "2461267070",
    "permalink": "https://www.reddit.com/u-quietbuilder-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try comments in the playground Examples and pricing for comments
Historyhistoryfree

The stored score / comment-count series of up to ten posts. Free, reads only what captures already wrote.

FieldTypeMeaning
subjects *list of string · 1-10 itemsPost permalinks or bare post ids.
metricenumscore · comments_count
daysinteger · 1-730
Try history in the playground

Guides and ideas.

Use it from your tools.

More in social.

All platforms