Open in ChatGPT
Coding with AI?
Connect your agent to our MCP and let it integrate any endpoint for you in one shot.

Reddit User Posts

Get a Reddit user’s submitted posts by username or profile URL, sorted by newest, hot, top or controversial, with a time window for top and controversial. Returns the same post fields as Post Details, 25 per page.

Endpoint

GET /v1/reddit/user/posts

Price: $0.003 per page Free tier: 50 requests/month

Parameters

Parameter Required Description
username One required Reddit username, with or without u/ (3-20 characters). Provide exactly one of username or url.
url One required Reddit profile URL, e.g. https://www.reddit.com/user/spez (max 500 characters). Provide exactly one of username or url.
sort_by No Sort order: most_recent, hot, top, or controversial (default: most_recent)
posted_ago No 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 No Number of pages to fetch, 1-40 (default: 1). Each page returns up to 25 posts.
get_sentiment No Set to true to add AI emotion analysis (Plutchik’s Wheel) to each result. Adds +$0.001 per page to the cost. Returns emotion scores, dominant emotion, intensity, and polarity.

Response Fields

Field Type Description
posts array The user’s posts
posts[].post_id string Post ID (the base-36 ID in the post URL)
posts[].title string Post title
posts[].url string Direct link to the post
posts[].date string Publication date and time (UTC)
posts[].author string Author’s Reddit username ([deleted] for a deleted account)
posts[].author_url string Link to the author’s profile (empty for a deleted account)
posts[].source string "Reddit"
posts[].domain string "reddit.com"
posts[].snippet string Post text (the title for link, image and video posts)
posts[].subreddit string Subreddit name
posts[].upvotes integer Net upvotes (upvotes minus downvotes)
posts[].upvote_ratio number Fraction of votes that are upvotes, between 0 and 1
posts[].comments integer Number of comments
posts[].crossposts integer Number of times the post has been crossposted
posts[].flair string Post flair text, or empty string
posts[].link_url string The URL a link, image or video post shares (empty for text posts)
posts[].thumbnail string Thumbnail image URL, or empty string
posts[].is_video boolean Whether the post is a Reddit-hosted video
posts[].nsfw boolean Whether the post is marked NSFW
posts[].spoiler boolean Whether the post is marked as a spoiler
posts[].locked boolean Whether the post is locked to new comments
posts[].stickied boolean Whether the post is pinned in its subreddit
posts[].video_url string 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
posts[].video_hls_url string HLS stream (with sound) of a Reddit-hosted video, or empty string. Reddit can expire this link too
posts[].images array Image URLs: every image of a gallery post, in order, or the image of an image post (empty otherwise)
posts[].sentiment object/null Emotion analysis results. Only present when get_sentiment=true. Returns null if analysis fails.
posts[].sentiment.emotions object Plutchik emotion scores (0-100) for: joy, trust, fear, surprise, sadness, disgust, anger, anticipation.
posts[].sentiment.dominant_emotion string The emotion with the highest score.
posts[].sentiment.emotional_intensity integer Overall emotional intensity on a scale of 0-10.
posts[].sentiment.polarity string Overall sentiment polarity: positive, negative, or neutral.
username string The username
sort_by string The sort order used
pages integer Number of pages returned
count integer Number of posts returned

Example Request

cURL

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

Python

import requests

response = requests.get(
    "https://apidirect.io/v1/reddit/user/posts",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={
        "username": "GallowBoob",
        "sort_by": "most_recent",
        "pages": 2
    }
)
print(response.json())

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
}

Notes

  • Some profiles show only part of their history to logged-out visitors; those return what Reddit shows.