TikTok API: Get profile
Gets 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.
Unofficial. Not affiliated with or endorsed by TikTok.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Username, required
username Creator username with or without @, or a TikTok profile link; for example, nasa.
https://www.tiktok.com/@duolingo
Input as JSON
{ "username": "https://www.tiktok.com/@duolingo" }Output
{ "bio": "back to school and back on my bs", "videos": 1187, "private": false, "user_id": "6917704832925746181", "bio_link": "https://Duolingo.com" , "username": "duolingo", "verified": true, "followers": 18155178, "following": 314, "total_likes": 501586678, "display_name": "Duolingo", "profile_link": "https://www.tiktok.com/@duolingo" , "profile_picture_link": "https://p19-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/6b2beff1167b40574fcd2ea2caf1444d~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=a037e61a&x-expires=1790809200&x-signature=CWuvR7aJVpp2X5PQgwdZmH8r5Ys%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast5" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"tiktok.com/get_profile","input":{"username":"https://www.tiktok.com/@duolingo"}}' # 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": "tiktok.com/get_profile" , "input": { "username": "https://www.tiktok.com/@duolingo" }})# 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": "tiktok.com/get_profile" , "input": { "username": "https://www.tiktok.com/@duolingo" } }), 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 tiktok.com/get_profile# with {"username":"https://www.tiktok.com/@duolingo"}"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", "description": "Creator username with or without @, or a TikTok profile link; for example, nasa." } }}Output schema
{ "type": "object", "required": [ "username", "display_name", "bio", "followers", "following", "total_likes", "videos", "verified", "private", "bio_link", "profile_picture_link", "profile_link", "user_id" ], "properties": { "bio": { "type": "string", "description": "The creator’s biography." }, "videos": { "type": "integer", "description": "Number of videos." }, "private": { "type": "boolean", "description": "Whether this account is private." }, "user_id": { "type": "string", "description": "TikTok’s internal user ID.", "x-fous-developer": true }, "bio_link": { "type": [ "string", "null" ], "description": "The link listed in the profile biography, if any." }, "username": { "type": "string", "description": "The creator’s TikTok username." }, "verified": { "type": "boolean", "description": "Whether TikTok marks this account verified." }, "followers": { "type": "integer", "description": "Number of followers." }, "following": { "type": "integer", "description": "Number of accounts followed." }, "total_likes": { "type": "integer", "description": "Total likes received." }, "display_name": { "type": "string", "description": "The creator’s display name." }, "profile_link": { "type": "string", "description": "Link to the TikTok profile." }, "profile_picture_link": { "type": [ "string", "null" ], "description": "Link to the profile picture, if present." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
tiktok.com/get_profile- Returns
- username, display name, bio, followers, following, total likes, videos, verified, private, bio link, profile picture, profile link, 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 tiktok.com/get_profile with the inputs above.
Ask your agent
- How many followers does @khaby.lame have right now on TikTok?
- Pull the bio, follower count, and total likes for the creator at https://www.tiktok.com/@charlidamelio
- Is the account zachking verified, and what link does he have in his bio?
- I need the user ID and profile picture URL for the handle @nasa
- Check whether bellapoarch's account is private and how many videos she's posted
See more
All TikTok methodsGets details and engagement statistics for one public TikTok video from its link, including vm.tiktok.com short links: creator, caption, hashtags, posting time, views, likes, comments, shares, length and sound.
tiktok.com/get_videoLists publicly visible TikTok Creative Center trending hashtags by country, time period and industry. Anonymous visitors see at most three rows; rank change and new-entry status are not public and come back null.
ads.tiktok.com/list_trending_hashtagsGets a TikTok creator's Social Blade profile totals, grade when shown, 30-day follower and like changes, and up to 14 days of daily totals, from a TikTok handle or a TikTok or Social Blade profile link. Counts reflect Social Blade's recorded and sometimes rounded figures.
socialblade.com/get_tiktok_statsGets 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 public Threads profile by username or profile link, with bio, followers, verification, picture and bio links. Private profiles are not returned.
threads.com/get_profileGets an Instagram account's follower count plus its posting and engagement over the last 30 days: posts published, average views of its videos and reels, and average likes and comments per post, from a username or profile link.
instagram.com/get_engagement_stats_2Looks 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