~ / endpoints / Profile API

TikTok Profile Scraper API

Our TikTok profile scraper takes any @username or profile URL and returns structured JSON: follower count, following count, total hearts, video count, the bio, avatar, and verified flag, plus the exact string counts in one request.

Get a free API keyBrowse the endpoints
1,000
free requests / mo
2.6s
median response
exact
follower counts
JSON
structured output

Use it for

>

Influencer discovery

Resolve a list of @handles into follower count, total hearts, and video count to size up creators before you reach out or sponsor.
>

Competitor tracking

Pull rival accounts on a schedule and watch follower count and upload cadence move over time from the stats block.
>

Creator databases

Enrich a spreadsheet of profile URLs into clean rows: nickname, handle, bio, avatar, and verified status for a searchable catalog.
>

Audience history graphs

Poll a profile daily and store followerCount and heartCount to build the growth history TikTok does not hand you.

Quickstart

cURL
curl "https://api.tiktokscraperapi.com/api/v1/tiktok/profile?username=nba&api_key=$API_KEY"
Python
import requests

BASE = "https://api.tiktokscraperapi.com/api/v1"
API_KEY = "YOUR_API_KEY"

# Pass a bare @username, or a full profile URL via the url param.
data = requests.get(
    f"{BASE}/tiktok/profile",
    params={"username": "nba", "api_key": API_KEY},
    timeout=30,
).json()

print(data["nickname"], "-", data["stats"]["followerCount"], "followers")
print("hearts:", data["stats"]["heartCount"], "| videos:", data["stats"]["videoCount"])
# statsV2 carries the exact string counts when TikTok ships them.
print("exact followers:", data["statsV2"]["followerCount"])

Response

200 OK
{
  "uniqueId": "nba",
  "nickname": "NBA",
  "signature": "NBA Summer action tips off Friday, July 3!\n\nCalifornia Classic: 7/3 - 7/6\nSalt Lake City: 7/4 - 7/7\nNBA Summer League in Las Vegas: 7/9 - 7/19",
  "verified": true,
  "secUid": "MS4wLjABAAAAsny0dcfyctb1_fdyyiu7JOLnblf8y3jd64yTHQLQoc9O5m57HhjT94OdgfSmNgaG",
  "id": "134941634731003904",
  "create_time": 1472544108,
  "created_at": "2016-08-30T08:01:48.000Z",
  "avatar": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/8beb8b849e725f2776a11575b1e7aebf~tplv-tiktokx-cropcenter:1080:1080.jpeg?x-expires=1783051200&x-signature=...",
  "url": "https://www.tiktok.com/@nba",
  "socialPlatform": "tiktok",
  "stats": {
    "followerCount": 27100000,
    "followingCount": 266,
    "heartCount": 1100000000,
    "videoCount": 22600
  },
  "statsV2": {
    "followerCount": "27067298",
    "followingCount": "266",
    "heartCount": "1119255388",
    "videoCount": "22608"
  }
}
FieldTypeDescription
uniqueIdstringThe creator @handle, e.g. nba.
nicknamestringThe display name shown on the profile.
signaturestringThe profile bio text, newlines preserved.
verifiedbooleanTrue when the account carries TikTok's verified badge.
secUidstringThe stable secondary user id TikTok keys its APIs by (never changes for the account).
idstringThe numeric user id.
create_timeintegerAccount creation time as a Unix timestamp.
created_atstringAccount creation time as an ISO 8601 string.

How it works

  1. Send a GET request with your target and API key.
  2. We route through residential proxies, handle anti-bot, and parse the response.
  3. You get validated JSON back, ready to use.

How it compares

Our APIDIY (requests / headless)TikTok official API
Input by handle or URLYes, username or urlManual page fetch and parseResearch API, keyed by handle, US academics only
Follower and heart countsNumeric plus exact stringsPossible but parser breaks oftenAvailable to approved researchers
SetupAPI key onlyProxies, headless browser, JSON parserApplication and approval process
Anti-bot and proxiesBuilt in, US residentialYou build and maintain itNot applicable
AccessOpen, any public profileBound by your proxy poolGated to vetted use cases
OutputFlat JSON, stable schemaRaw HTML blob you parseJSON, restricted fields

Pricing

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is a TikTok profile scraper?

A TikTok profile scraper is a tool that reads a creator's public profile and returns it in a structured format. Our TikTok profile scraper API takes an @username or profile URL and returns the nickname, handle, bio, avatar, verified flag, follower count, following count, total hearts, and video count as JSON from a single request.

How do I scrape a TikTok profile without writing a parser?

Send one GET request to our tiktok/profile endpoint with the username (or a profile url) and your API key. We route through US residential IPs, render nothing you have to script, handle anti-bot checks, retry on failure, and parse the embedded profile blob, so you get clean JSON back without maintaining selectors against TikTok's changing markup.

Can I get the exact follower count?

Yes. The stats block returns a rounded numeric followerCount (for example 27100000), and statsV2 carries the exact string count (for example "27067298") when TikTok includes it in the page. The same applies to heartCount and videoCount, so you can store either the rounded or the precise figure.

Do I need a TikTok API key or approval?

No. You only need a tiktokscraperapi key, passed as the api_key query parameter. TikTok's own Research API is gated to approved academic and non-profit use, but our endpoint reads the public profile a logged-out visitor sees, so there is no application to file. The free tier includes 1,000 requests per month.

Why does scraping TikTok from a server return empty data?

TikTok verify-walls datacenter and cloud IP ranges, so a request from AWS, GCP, or Azure often returns a CSR shell or a CAPTCHA page with no profile data, even though the identical request from a home connection works. Our API routes through US residential proxies so the user-detail blob actually hydrates, which is why the profile fields come back populated.

How fast is the TikTok profile scraper API?

Median end-to-end response is about 2.6 seconds, which includes residential proxy routing, anti-bot handling, retries, and parsing. One call returns the full profile, so you do not chain extra requests just to assemble the stats.

Get profile api as JSON
Free plan, 1,000 requests. No credit card required.
Get a free API key All endpoints