TokScraper API
Scrape TikTok followers, following, profiles, keyword results and sound users — and pull the
emails found — programmatically. All endpoints are simple GET requests
authenticated with your API key.
Base URL
https://tokscraper.io/api
Authentication
Every request must include your personal API key as the api_key query
parameter. There are no auth headers. Create and manage your key in
Account → API.
https://tokscraper.io/api/credits/?api_key=YOUR_API_KEY
How it works
Scraping runs asynchronously. A scrape endpoint starts a job and immediately returns a
result id. Poll Result Status with that id
until the status is done to retrieve the scraped users and their emails.
- Start a scrape → you get back a
result id. - Poll result status →
in progressuntil finished. - Done → the response includes the array of users found (only users with a discovered email are returned).
/scrape-profile/ is the one exception — it runs synchronously and returns
the profile data directly. Optional email_limit stops a scrape after a
set number of emails are found.
Scrape Followers
Scrapes the followers of a TikTok account and extracts their emails.
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
tiktok_username required | string | The TikTok username whose followers to scrape (with or without @). |
email_limit optional | integer | Stop after finding this many emails. |
Example request
https://tokscraper.io/api/scrape-followers/?api_key=API_KEY&tiktok_username=parishilton
Response
{
"message": "Your task has started. To check it's status, make a request to the endpoint api/result-status with the result id as a parameter (check our docs)",
"result id": 12345
}
Scrape Following
Scrapes the accounts a TikTok user is following and extracts their emails.
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
tiktok_username required | string | The TikTok username whose following list to scrape. |
email_limit optional | integer | Stop after finding this many emails. |
Example request
https://tokscraper.io/api/scrape-following/?api_key=API_KEY&tiktok_username=parishilton
Response
{
"message": "Your task has started. To check it's status...",
"result id": 12345
}
Scrape Profile
Looks up a single TikTok profile and returns its data synchronously (no polling needed).
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
tiktok_username required | string | The TikTok username to look up. |
Example request
https://tokscraper.io/api/scrape-profile/?api_key=API_KEY&tiktok_username=parishilton
Response
{
"status": "done",
"result_id": 12345,
"data": [
{
"username": "parishilton",
"name": "Paris Hilton",
"first_name": "Paris",
"email": "team@example.com",
"signature": "Founder ...",
"region": "US",
"follower_count": 12148179,
"following_count": 9955,
"likes_count": 147309076,
"video_count": 2331,
"is_verified": true,
"tiktok_url": "https://www.tiktok.com/@parishilton",
"pfp": "https://..."
}
]
}
Scrape Keywords
Scrapes users who posted videos matching your keywords. Pass multiple keywords as a comma-separated list — each is searched separately to maximize unique users found.
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
keywords required | string | One or more keywords, comma-separated. URL-encode the value (space → %20, comma → %2C). |
email_limit optional | integer | Stop after finding this many emails. |
Example request (multiple keywords)
https://tokscraper.io/api/scrape-keywords/?api_key=API_KEY&keywords=cold%20email%2Cmarketing%2Cbusiness
That request searches three keywords: cold email, marketing, business.
Response
{
"message": "Your task has started. To check it's status...",
"result id": 12345
}
Scrape Sound
Scrapes every user who posted a video using a specific TikTok sound.
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
sound_url required | string | Full TikTok sound page URL (https://www.tiktok.com/music/...), URL-encoded. |
email_limit optional | integer | Stop after finding this many emails. |
Example request
https://tokscraper.io/api/scrape-sound/?api_key=API_KEY&sound_url=https%3A%2F%2Fwww.tiktok.com%2Fmusic%2Foriginal-sound-7016548700980806
Decoded, sound_url is https://www.tiktok.com/music/original-sound-7016548700980806.
Response
{
"message": "Your task has started. To check it's status...",
"result id": 12345
}
Result Status
Checks the status of a scrape and returns the users found once it's done. Poll this until
status is done.
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
result_id required | integer | The result id returned by a scrape endpoint. |
Example request
https://tokscraper.io/api/result-status/?api_key=API_KEY&result_id=12345
Responses
While running (HTTP 202):
{ "status": "in progress" }
When finished — only users with a discovered email are returned:
{
"status": "done",
"data": [
{
"username": "someuser",
"name": "Some User",
"first_name": "Some",
"email": "hello@example.com",
"signature": "bio text...",
"region": "US",
"follower_count": 5300,
"following_count": 412,
"likes_count": 88000,
"video_count": 120,
"is_verified": false,
"tiktok_url": "https://www.tiktok.com/@someuser",
"pfp": "https://..."
}
]
}
All Results
Lists all of your scrape results and their statuses.
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
Response
[
{ "id": 12345, "result_name": "parishilton", "scrape_method": "Followers", "status": "done" },
{ "id": 12346, "result_name": "Keywords: marketing", "scrape_method": "Keyword", "status": "in progress" }
]
Credits
Returns your remaining credit balance.
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
Response
{ "credits": 89641 }
Authenticate
Verifies your API key and returns the associated account email.
Parameters
| Name | Type | Description |
|---|---|---|
api_key required | string | Your API key. |
Response
{ "user_email": "you@example.com" }
Errors
Errors return a JSON body with an error message and an appropriate HTTP status:
| Status | Meaning |
|---|---|
400 | A required parameter is missing or invalid. |
401 | Invalid API key, or no active subscription. |
402 | No credits remaining. |
404 | Profile / sound / result not found. |
429 | Too many concurrent scrapes running. |
