All endpoints
Reddit User Posts

Reddit User Posts API

Get a Reddit user's submitted posts by username or profile URL. Sort by newest, hot, top or controversial, with a time window (past hour to all time) for top and controversial. Returns title, text, subreddit, date, score, upvote ratio, comment count, flair, shared link, video and gallery links and NSFW flags for each post, 25 per page, up to about 1,000 posts.

Price: $0.003 per page
Free tier: 50 requests/month
Endpoint
GET /v1/reddit/user/posts

Parameters

username
Reddit username, with or without u/ (3-20 characters). Provide exactly one of username or url.
url
Reddit profile URL, e.g. https://www.reddit.com/user/spez (max 500 characters). Provide exactly one of username or url.
sort_by
Sort order: most_recent, hot, top, or controversial (default: most_recent)
posted_ago
Time window for sort_by=top or sort_by=controversial: 1h, 24h, 7d, 30d, 12m, or all (default: all). Rejected with any other sort_by.
pages
Number of pages to fetch, 1-40 (default: 1). Each page returns up to 25 posts.
get_sentiment
Set to true to add AI emotion analysis (+$0.001/page)

Response fields

posts
The user's posts
post_id
Post ID (the base-36 ID in the post URL)
title
Post title
url
Direct link to the post
date
Publication date and time (UTC)
author
Author's Reddit username ([deleted] for a deleted account)
author_url
Link to the author's profile (empty for a deleted account)
source
"Reddit"
domain
"reddit.com"
snippet
Post text (the title for link, image and video posts)
subreddit
Subreddit name
upvotes
Net upvotes (upvotes minus downvotes)
upvote_ratio
Fraction of votes that are upvotes, between 0 and 1
comments
Number of comments
crossposts
Number of times the post has been crossposted
flair
Post flair text, or empty string
link_url
The URL a link, image or video post shares (empty for text posts)
thumbnail
Thumbnail image URL, or empty string
is_video
Whether the post is a Reddit-hosted video
nsfw
Whether the post is marked NSFW
spoiler
Whether the post is marked as a spoiler
locked
Whether the post is locked to new comments
stickied
Whether the post is pinned in its subreddit
video_url
MP4 file of a Reddit-hosted video, or empty string. It can be silent (Reddit stores most video sound separately), so use video_hls_url for video with sound. Reddit can expire video links, so use them soon after fetching
video_hls_url
HLS stream (with sound) of a Reddit-hosted video, or empty string. Reddit can expire this link too
images
Image URLs: every image of a gallery post, in order, or the image of an image post (empty otherwise)
sentiment
Emotion analysis: emotions, dominant_emotion, emotional_intensity, polarity (when get_sentiment=true)
username
The username
sort_by
The sort order used
pages
Number of pages returned
count
Number of posts returned

Example Request

curl "https://apidirect.io/v1/reddit/user/posts?username=GallowBoob&sort_by=most_recent&pages=2" \
  -H "X-API-Key: YOUR_API_KEY"

Example Response

{
  "posts": [
    {
      "post_id": "fgghrs",
      "title": "‪Everything in balance.‬ ‪Except karma ⬆️‬⬆️⬆️",
      "url": "https://www.reddit.com/user/GallowBoob/comments/fgghrs/everything_in_balance_except_karma/",
      "date": "2020-03-10 16:27:45",
      "author": "GallowBoob",
      "author_url": "https://www.reddit.com/user/GallowBoob",
      "source": "Reddit",
      "domain": "reddit.com",
      "snippet": "‪Everything in balance.‬ ‪Except karma ⬆️‬⬆️⬆️",
      "subreddit": "u_GallowBoob",
      "upvotes": 7949,
      "upvote_ratio": 0.94,
      "comments": 66,
      "crossposts": 6,
      "flair": "",
      "link_url": "https://i.redd.it/41i4qishgvl41.jpg",
      "thumbnail": "https://b.thumbs.redditmedia.com/I4852BZ7_GtmRUfZQki5aAefmUmWDKtd_1Ymqr9UT1I.jpg",
      "is_video": false,
      "nsfw": false,
      "spoiler": false,
      "locked": true,
      "stickied": true,
      "video_url": "",
      "video_hls_url": "",
      "images": [
        "https://i.redd.it/41i4qishgvl41.jpg"
      ],
      "sentiment": {
        "emotions": {
          "joy": 40,
          "trust": 55,
          "fear": 0,
          "surprise": 10,
          "sadness": 0,
          "disgust": 0,
          "anger": 0,
          "anticipation": 30
        },
        "dominant_emotion": "trust",
        "emotional_intensity": 5,
        "polarity": "positive"
      }
    }
  ],
  "username": "GallowBoob",
  "sort_by": "most_recent",
  "pages": 2,
  "count": 50
}

Frequently asked questions

How far back can I go?

Reddit lists up to about 1,000 posts per user, so 40 pages of 25 is the deepest.

Are NSFW posts included?

Yes. Posts marked NSFW are included with nsfw set to true.

Can I get a user's top posts of the past week?

Yes: sort_by=top&posted_ago=7d. Without posted_ago, top and controversial cover all time.

How does pricing work?

You only pay for successful requests. The Reddit User Posts API costs $0.003 per page. There are no monthly fees or commitments. You get 50 free requests per endpoint every month.

Do I need a credit card to start?

No. You can sign up and use the free tier (50 requests/endpoint/month) without adding a payment method. You only need to add a card when you want to exceed the free tier.

Are there rate limits?

Yes, there's a concurrency limit of 10 simultaneous requests per endpoint per user. If you need more, just get in touch.

Start using the Reddit User Posts API

Get your API key and start making requests in minutes. 50 requests/month free every month.

Get API Key