TikTok User Search API
TikTok user search API
Search TikTok accounts by keyword and return user data as JSON
This page is for developers looking for a TikTok user search API, TikTok profile search endpoint, TikTok creator search API, or TikTok username search API. Use it to discover public accounts by keyword, page through matching users, and feed those results into creator intelligence, audience research, enrichment, or social listening pipelines.
Use Scrappa's TikTok user search API to find public TikTok accounts by username, brand name, creator niche, product category, or keyword. The GET /api/tiktok/user/search endpoint returns matching user records as structured JSON with cursor-based pagination, so developer teams can build creator discovery, influencer research, social listening, and profile enrichment workflows without maintaining a TikTok search scraper.
TikTok user search API for creator discovery
Search keywords such as a creator niche, brand term, campaign phrase, location, product category, or username fragment to discover public TikTok accounts. This endpoint is useful when you need a TikTok username search API for influencer databases, creator marketplaces, social CRM enrichment, competitor account discovery, or brand safety review queues.
What the TikTok user search response returns
The response includes a users array with account identifiers and profile fields such as user_id, unique_id, nickname, avatar, follower_count, and verified when the upstream returns them. Use unique_id as the human-readable TikTok handle, user_id as the stable account identifier for follow-up API calls, follower_count for audience-size filtering, and verified to separate official or notable accounts from lookalikes.
How to call the TikTok User Search API
Send a GET request to /api/tiktok/user/search with the required keywords parameter and your Scrappa API key in the x-api-key header. Add count to control page size and pass the returned cursor into the next request when hasMore is true.
Common TikTok user search workflows
Start with this endpoint when you need a seed list of accounts, then enrich or analyze those users with adjacent TikTok endpoints. Discover creators by niche, fetch profile details with the TikTok User Profile API, review recent videos with the TikTok User Posts API, inspect follower or following graphs with TikTok Followers API, or compare account discovery against keyword video search through the TikTok Feed Search API.
Related TikTok API docs
For the full endpoint family, pricing context, and TikTok API use cases, see the TikTok API overview. For authentication details, use the API authentication guide. To test a request before writing code, open the API playground.
Implementation playbook
What teams build with this endpoint
Influencer and creator discovery
Search niche, product, or campaign keywords to collect candidate accounts, then enrich each match with profile, post, and follower endpoints before scoring creators.
Brand and competitor monitoring
Find public accounts using brand, competitor, or product terms so social teams can watch official profiles, fan accounts, parody accounts, and emerging campaign mentions.
Creator graph enrichment
Use search results as account seeds, then map followers, following, similar users, playlists, collections, and posts for creator intelligence or social graph products.
Run this endpoint
Endpoint
https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0
https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0
x-api-key
keywords
= skincare creator
{
"code": 0,
"msg": "success",
"processed_time": 0.74,
"data": {
"users": [
{
"user_id": "107955",
"unique_id": "tiktok",
"nickname": "TikTok",
"avatar": "https://example.com/avatar.jpeg",
"follower_count": 88900000,
"verified": true
},
...
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
1 required parameter needed before sending a request.
2 optional filters available.
string
Required
Search text for public TikTok users. Use a username fragment, brand name, creator niche, product category, or campaign keyword.
skincare creator
integer
Optional
Number of user matches to return for the page, up to 50.
10
string
Optional
Pagination cursor from the previous response. Pass this value with the same keywords query when hasMore is true.
0
Request Examples
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: YOUR_API_KEY_HERE"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
<?php
use Illuminate\Support\Facades\Http;
$response = Http::timeout(30)
->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
->get('https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0');
if ($response->successful()) {
echo $response->body();
} else {
echo "Error: " . $response->status();
}
const options = {
method: 'GET',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE'
}
};
fetch('https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0', options)
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const axios = require('axios');
const options = {
method: 'GET',
url: 'https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0',
headers: {
x-api-key: 'YOUR_API_KEY_HERE',
}
};
try {
const response = await axios(options);
console.log(response.data);
} catch (error) {
console.error('Error:', error.message);
}
require 'net/http'
require 'uri'
uri = URI.parse("https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'
begin
response = http.request(request)
puts response.body
rescue => e
puts "Error: #{e.message}"
end
import http.client
import json
conn = http.client.HTTPSConnection("scrappa.co")
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
conn.request("GET", "/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
except Exception as e:
print(f"Error: {e}")
finally:
conn.close()
import requests
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
response = requests.get('https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0', headers=headers)
response.raise_for_status()
print(response.text)
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class ApiExample {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0")
.addHeader("x-api-key", "YOUR_API_KEY_HERE")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
System.out.println(response.body().string());
} else {
System.out.println("Error: " + response.code());
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0", nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
#!/bin/bash
curl -X GET \
-H "x-api-key: YOUR_API_KEY_HERE" \
"https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0"
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");
try
{
var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0"));
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
import axios from 'axios';
async function run(): Promise<void> {
try {
const response = await axios({
method: 'GET',
url: 'https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE',
},
});
console.log(response.data);
} catch (error) {
console.error('Error:', error);
}
}
void run();
use reqwest::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let response = client
.get("https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0")
.header("x-api-key", "YOUR_API_KEY_HERE")
.send()
.await?;
println!("{}", response.text().await?);
Ok(())
}
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
code
msg
processed_time
data
{
"code": 0,
"msg": "success",
"processed_time": 0.74,
"data": {
"users": [
{
"user_id": "107955",
"unique_id": "tiktok",
"nickname": "TikTok",
"avatar": "https://example.com/avatar.jpeg",
"follower_count": 88900000,
"verified": true
},
{
"user_id": "6821796598806348805",
"unique_id": "example.creator",
"nickname": "Example Creator",
"avatar": "https://example.com/creator.jpeg",
"follower_count": 245000,
"verified": false
}
],
"hasMore": true,
"cursor": "10"
}
}
Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
TikTok API FAQ
Can I search TikTok users by keyword?
Yes. Send a keyword, username fragment, creator niche, brand term, or campaign phrase to /api/tiktok/user/search and Scrappa returns matching public TikTok accounts as structured JSON.
What fields does the TikTok User Search API return?
The response includes a users array with account identifiers and profile fields such as user_id, unique_id, nickname, avatar, follower_count, and verified when available, plus pagination fields such as hasMore and cursor.
How do I get more details after finding a TikTok user?
Use unique_id or user_id from the search result with adjacent Scrappa endpoints such as TikTok User Profile, TikTok User Posts, TikTok Followers, and TikTok Similar Users.