curl --request GET \
--url https://api.scraperize.com/v1/tiktok/search/suggestions \
--header 'x-api-key: <api-key>'import requests
url = "https://api.scraperize.com/v1/tiktok/search/suggestions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.scraperize.com/v1/tiktok/search/suggestions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scraperize.com/v1/tiktok/search/suggestions",
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: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scraperize.com/v1/tiktok/search/suggestions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.scraperize.com/v1/tiktok/search/suggestions")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scraperize.com/v1/tiktok/search/suggestions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"query": "paul",
"region": "NG",
"regionName": "Nigeria",
"servedRegion": "NG",
"suggestions": [
{
"text": "Paul McCartney",
"position": 0,
"matches": [
{
"start": 0,
"end": 4
}
],
"language": "en",
"tokens": [
"Paul",
"McCartney"
],
"groupId": "8725309374589977462"
},
{
"text": "Paul Wesley",
"position": 1,
"matches": [
{
"start": 0,
"end": 4
}
],
"language": "en",
"tokens": [
"Paul",
"Wesley"
],
"groupId": "8255082880382300015"
},
{
"text": "Paul walker",
"position": 2,
"matches": [
{
"start": 0,
"end": 4
}
],
"language": "en",
"tokens": [
"Paul",
"walker"
],
"groupId": "6145155812352459478"
}
],
"count": 8,
"fetchedAt": "2026-10-05T14:45:28.574Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required — pass it in the `x-api-key` header.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 1 credit, but your balance is 0. Top up to continue.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"details": [
{
"path": "url",
"message": "Required"
}
]
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — max 100 requests per 60s. Retry in ~30s.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UPSTREAM_BLOCKED",
"message": "The source is temporarily unavailable. Please try again shortly.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}Search suggestions
Returns TikTok’s autocomplete suggestions for a query — what the search box suggests as you type — in a region (default NG). Suggestions differ by region: the same query gives different suggestions in, say, the UK and the US. Each suggestion comes with its rank, the characters that match the query, its language and its tokens. Suggestions are not personalised. servedRegion is the region the results are for.
curl --request GET \
--url https://api.scraperize.com/v1/tiktok/search/suggestions \
--header 'x-api-key: <api-key>'import requests
url = "https://api.scraperize.com/v1/tiktok/search/suggestions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.scraperize.com/v1/tiktok/search/suggestions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scraperize.com/v1/tiktok/search/suggestions",
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: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scraperize.com/v1/tiktok/search/suggestions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.scraperize.com/v1/tiktok/search/suggestions")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scraperize.com/v1/tiktok/search/suggestions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"query": "paul",
"region": "NG",
"regionName": "Nigeria",
"servedRegion": "NG",
"suggestions": [
{
"text": "Paul McCartney",
"position": 0,
"matches": [
{
"start": 0,
"end": 4
}
],
"language": "en",
"tokens": [
"Paul",
"McCartney"
],
"groupId": "8725309374589977462"
},
{
"text": "Paul Wesley",
"position": 1,
"matches": [
{
"start": 0,
"end": 4
}
],
"language": "en",
"tokens": [
"Paul",
"Wesley"
],
"groupId": "8255082880382300015"
},
{
"text": "Paul walker",
"position": 2,
"matches": [
{
"start": 0,
"end": 4
}
],
"language": "en",
"tokens": [
"Paul",
"walker"
],
"groupId": "6145155812352459478"
}
],
"count": 8,
"fetchedAt": "2026-10-05T14:45:28.574Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required — pass it in the `x-api-key` header.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 1 credit, but your balance is 0. Top up to continue.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"details": [
{
"path": "url",
"message": "Required"
}
]
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — max 100 requests per 60s. Retry in ~30s.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UPSTREAM_BLOCKED",
"message": "The source is temporarily unavailable. Please try again shortly.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}cache_max_age) are free.Copy for AI assistant
Copy for AI assistant
I want to make an API call to /v1/tiktok/search/suggestions. Here are the details:
Endpoint: GET https://api.scraperize.com/v1/tiktok/search/suggestions
Description: Returns TikTok’s autocomplete suggestions for a `query` — what the search box suggests as you type — in a `region` (default NG). Suggestions differ by region: the same query gives different suggestions in, say, the UK and the US. Each suggestion comes with its rank, the characters that match the query, its language and its tokens. Suggestions are not personalised. `servedRegion` is the region the results are for.
Required Headers:
- x-api-key: Your API key
Parameters:
- query (string) [required]: The text typed so far (1–100 characters).
- region (select): The region (country) to get results for, as a two-letter code (ISO 3166-1). Defaults to NG (Nigeria).
- cache_max_age (select): Optional. Return a cached result if one this age or newer exists — served for **0 credits** with `meta.cached=true` and `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and refreshes the cache. Omit to always scrape fresh.
Example Response:
{
"data": {
"query": "paul",
"region": "NG",
"regionName": "Nigeria",
"servedRegion": "NG",
"suggestions": [
{
"text": "Paul McCartney",
"position": 0,
"matches": [
{
"start": 0,
"end": 4
}
],
"language": "en",
"tokens": [
"Paul"
],
"groupId": "8725309374589977462"
}
],
"count": 8,
"fetchedAt": "2026-10-05T14:45:28.574Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}
Please help me write code in my preferred programming language to make this API call and handle the response appropriately. Include error handling and best practices.
Authorizations
Your API key. Send it in the x-api-key header (or Authorization: Bearer <key>). Create and manage keys from your dashboard.
Query Parameters
The text typed so far (1–100 characters).
1 - 100The region (country) to get results for, as a two-letter code (ISO 3166-1). Defaults to NG (Nigeria).
AL, DZ, AR, AU, AT, AZ, BY, BE, BO, BR, KH, CM, CA, CL, CO, CR, CZ, EG, FR, DE, GH, GR, HK, IS, IE, IL, IT, JM, JP, KZ, KE, KW, LI, LT, LU, MX, MA, MZ, NA, NL, NG, MK, NO, PA, PE, PH, PT, PR, RO, SA, SG, ZA, KR, ES, SE, CH, TW, TH, TT, TN, TR, UG, UA, AE, GB, US, UY, UZ, VE Optional. Return a cached result if one this age or newer exists — served for 0 credits with meta.cached=true and meta.cachedAt. Otherwise a fresh scrape runs (1 credit) and refreshes the cache. Omit to always scrape fresh.
1d, 3d, 7d, 14d, 30d