Threads API: Get profile
Gets a public Threads profile by username or profile link, with bio, followers, verification, picture and bio links. Private profiles are not returned.
Unofficial. Not affiliated with or endorsed by Threads.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Username, required
username Threads username with or without @, or a Threads profile link, for example zuck or https://www.threads.com/@zuck.
https://www.threads.com/@spotify
Input as JSON
{ "username": "https://www.threads.com/@spotify" }Output
{ "bio": "your fall listening arc starts here", "username": "spotify", "bio_links": [ "https://open.spotify.com/genre/0JQ5DAqbMKFJ6dHNHTv6Mx" , "http://open.spotify.com" , "https://open.spotify.com/genre/section0JQ5IMCbQBLyGf0Sj0c3IJ" ], "followers": 3223509, "is_verified": true, "profile_url": "https://www.threads.com/@spotify" , "display_name": "Spotify", "threads_user_id": "63295417283", "profile_picture_url": "https://scontent-sea5-1.cdninstagram.com/v/t51.2885-19/358162502_1038284560473867_7645518712425998110_n.jpg?efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4zNzYuYzIifQ&_nc_ht=scontent-sea5-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2gGIT4_zbI8bIM63LyhHqr_TpaSyDGxav0qLJxb4t_QyRureOA8UqSu2KjoRz4grp_o&…" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"threads.com/get_profile","input":{"username":"https://www.threads.com/@spotify"}}' # 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": "threads.com/get_profile" , "input": { "username": "https://www.threads.com/@spotify" }})# 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": "threads.com/get_profile" , "input": { "username": "https://www.threads.com/@spotify" } }), 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 threads.com/get_profile# with {"username":"https://www.threads.com/@spotify"}"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": "Threads username with or without @, or a Threads profile link, for example zuck or https://www.threads.com/@zuck." } }}Output schema
{ "type": "object", "required": [ "username", "display_name", "bio", "followers", "is_verified", "profile_picture_url", "bio_links", "profile_url", "threads_user_id" ], "properties": { "bio": { "type": [ "string", "null" ], "description": "Profile biography." }, "username": { "type": "string", "description": "Threads username without @." }, "bio_links": { "type": "array", "items": { "type": "string" }, "description": "Links shown in the profile bio." }, "followers": { "type": [ "integer", "null" ], "description": "Follower count." }, "is_verified": { "type": "boolean", "description": "Whether the profile has a verified badge." }, "profile_url": { "type": "string", "description": "Link to the Threads profile." }, "display_name": { "type": [ "string", "null" ], "description": "Name shown on the profile." }, "threads_user_id": { "type": [ "string", "null" ], "description": "Threads user ID." }, "profile_picture_url": { "type": [ "string", "null" ], "description": "Profile picture link." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
threads.com/get_profile- Returns
- username, display name, bio, followers, verified, picture, bio links, profile URL, user ID
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 threads.com/get_profile with the inputs above.
Ask your agent
- Look up the public Threads profile for @zuck, including bio and follower count
- Can you get the bio, verification status, and profile picture for the Threads account nasa?
- What's the follower count on the Threads profile at https://www.threads.com/@meta?
- Show me the bio links and user ID for the Threads user instagram
- Is the Threads account of a creator named mkbhd verified, and what does their bio say?
See more
All Threads methodsLists 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_postsGets a public Threads post with its engagement counts and the replies visible without logging in.
threads.com/get_postGets 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_profileGets a TikTok creator's public profile and totals (followers, following, likes, videos) from a username, @handle or profile link. Profiles not visible to public visitors cannot be returned.
tiktok.com/get_profileGets a public Pinterest profile and its visible boards in profile order. Monthly views are null when Pinterest does not show them.
pinterest.com/get_profileGets a Chess.com player's public profile, ratings and game records, best puzzle rating and Puzzle Rush best score from a username or member profile link.
chess.com/get_player_statsLooks up a public Bluesky profile by handle or profile link, including bio, audience counts and join date. A bare name first checks its .bsky.social handle, then the top relevant people-search result.
bsky.app/get_profile