Reddit API: Get user
Gets a public Reddit user's profile (post and comment karma, account creation date) and their recent posts and comments, newest first. Suspended or nonexistent users are reported as not found.
Unofficial. Not affiliated with or endorsed by Reddit.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Username, required
username Reddit username, u/name, or profile link, for example spez or https://www.reddit.com/user/spez/.
u/spez
- Max Results optional
max_results Maximum recent posts and comments to return, for example 25. Default 25, maximum 100.
100
Whole number from 1 to 100. Default
25.
Input as JSON
{ "username": "u/spez" , "max_results": 100}Output
{ "user_id": "1w72", "username": "spez", "post_karma": 184487, "total_karma": 940980, "created_date": "2005-06-06", "profile_link": "https://www.reddit.com/user/spez/" , "comment_karma": 756493, "recent_activity": [ { "link": "https://www.reddit.com/r/u_spez/comments/1vgbkge/modernizing_reddits_infrastructure_with_you/p1wosm9/" , "text": "That was the thinking. Otherwise it would be easier to just replicate the UI. ", "type": "comment", "score": 11, "community": "u_spez", "posted_at": "2026-08-05T18:31:50+00:00" }, { "link": "https://www.reddit.com/r/u_spez/comments/1vgbkge/modernizing_reddits_infrastructure_with_you/p1w9sot/" , "text": "If we replace every line of code but the output is the same, is it still old Reddit?", "type": "comment", "score": 21, "community": "u_spez", "posted_at": "2026-08-05T17:30:18+00:00" }, { "link": "https://www.reddit.com/r/u_spez/comments/1vgbkge/modernizing_reddits_infrastructure_with_you/p1w9j2v/" , "text": "Karma and Age gates are really blunt tools that, while we understand why they are used today, end up with a blast radius making the it hard for (good) new users finding a way to participate. That makes a bad experience. Our plan is to build tools so you no longer feel the need to rely on hammers lik…", "type": "comment", "score": 23, "community": "u_spez", "posted_at": "2026-08-05T17:29:13+00:00" } ], "avatar_image_link": "https://styles.redditmedia.com/t5_3k30p/styles/profileIcon_uj015iwx9s7g1.png?width=256&height=256&crop=256:256,smart&s=aa819b0964f6e3019e769d1cc8ede7318c3869a3" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"reddit.com/get_user","input":{"username":"u/spez","max_results":100}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "reddit.com/get_user" , "input": { "username": "u/spez" , "max_results": 100 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "reddit.com/get_user" , "input": { "username": "u/spez" , "max_results": 100 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run reddit.com/get_user# with {"username":"u/spez","max_results":100}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "username" ], "properties": { "username": { "type": "string", "minLength": 1, "description": "Reddit username, u/name, or profile link, for example spez or https://www.reddit.com/user/spez/." }, "max_results": { "type": "integer", "default": 25, "maximum": 100, "minimum": 1, "description": "Maximum recent posts and comments to return, for example 25. Default 25, maximum 100." } }}Output schema
{ "type": "object", "required": [ "username", "created_date", "post_karma", "comment_karma", "total_karma", "avatar_image_link", "profile_link", "recent_activity" ], "properties": { "user_id": { "type": "string" }, "username": { "type": "string" }, "post_karma": { "type": "integer" }, "total_karma": { "type": "integer" }, "created_date": { "type": "string", "format": "date" }, "profile_link": { "type": "string" }, "comment_karma": { "type": "integer" }, "recent_activity": { "type": "array", "items": { "type": "object", "required": [ "type", "community", "text", "score", "posted_at", "link" ], "properties": { "link": { "type": "string" }, "text": { "type": "string", "description": "Post title or the first 500 characters of a comment." }, "type": { "enum": [ "post", "comment" ], "type": "string" }, "score": { "type": "integer" }, "community": { "type": "string" }, "posted_at": { "type": "string", "description": "ISO 8601 date and time in UTC." } }, "additionalProperties": false } }, "avatar_image_link": { "type": [ "string", "null" ] } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
reddit.com/get_user- Returns
- username, user id, created date, post/comment/total karma, avatar, profile link, recent posts and comments
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method reddit.com/get_user with the inputs above.
Ask your agent
- How much karma does u/GallowBoob have and when was the account created?
- Pull up the last 50 posts and comments from https://www.reddit.com/user/shittymorph/
- Is the Reddit account throwaway_dev_9182 still active or has it been suspended?
- Check out the profile of user AwkwardTheTurtle on reddit — I want their comment karma vs post karma and their 10 most recent comments
- Show me what poem_for_your_sprog has been posting lately, plus their account age
See more
All Reddit methodsFinds public Reddit posts by topic, optionally in one community, for a time window and sort order. Returns up to 100 posts in Reddit search order with score, comment count, text and link.
reddit.com/search_postsLists an account's latest public Bluesky posts, newest first. Replies and reposts are left out unless requested; a repost's time is when the account reposted it.
bsky.app/list_recent_postsLists an account's latest public Threads posts, newest first, with text, engagement counts, thumbnails and links. Only posts shown without logging in are returned.
threads.com/list_recent_postsLists the latest publicly embeddable posts and reels from an Instagram account, newest first. Without login Instagram may show fewer posts than requested. View counts that are not available are null.
instagram.com/list_recent_postsLists a Mastodon account's latest public posts, newest first. Replies and boosts are optional. Private and unlisted posts are left out.
mastodon.social/list_recent_postsLists the latest public articles by a Medium writer or publication (by username, publication name or Medium link), with dates, reading times, claps, member-only labels and tags.
medium.com/list_author_articlesGets an Instagram account's public profile from its username, @name or profile link: name, bio, exact follower, following and post counts, verified and private flags, first bio link, profile picture and account ID.
instagram.com/get_profileGets the public X profile for a username or profile link, including counts, verification, images and account details. Does not include posts or a timeline.
x.com/get_profile