TikTok Hashtags API
curl --request POST \
--url https://api.socq.ai/v1/tiktok/hashtags \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"hashtags": [
"<string>"
],
"results_limit": 1000
}
'import requests
url = "https://api.socq.ai/v1/tiktok/hashtags"
payload = {
"hashtags": ["<string>"],
"results_limit": 1000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({hashtags: ['<string>'], results_limit: 1000})
};
fetch('https://api.socq.ai/v1/tiktok/hashtags', 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.socq.ai/v1/tiktok/hashtags",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'hashtags' => [
'<string>'
],
'results_limit' => 1000
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/tiktok/hashtags"
payload := strings.NewReader("{\n \"hashtags\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/tiktok/hashtags")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"hashtags\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/tiktok/hashtags")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"hashtags\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}TikTok Hashtags
Collect public TikTok videos matching one or more hashtags.
POST
/
v1
/
tiktok
/
hashtags
TikTok Hashtags API
curl --request POST \
--url https://api.socq.ai/v1/tiktok/hashtags \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"hashtags": [
"<string>"
],
"results_limit": 1000
}
'import requests
url = "https://api.socq.ai/v1/tiktok/hashtags"
payload = {
"hashtags": ["<string>"],
"results_limit": 1000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({hashtags: ['<string>'], results_limit: 1000})
};
fetch('https://api.socq.ai/v1/tiktok/hashtags', 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.socq.ai/v1/tiktok/hashtags",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'hashtags' => [
'<string>'
],
'results_limit' => 1000
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/tiktok/hashtags"
payload := strings.NewReader("{\n \"hashtags\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/tiktok/hashtags")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"hashtags\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/tiktok/hashtags")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"hashtags\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}TikTok Hashtags
Collect public videos for one or more hashtags. A leading# is optional.
{
"hashtags": ["tutorial", "#python"],
"results_limit": 50
}
Use with MCP
| Interface | Value |
|---|---|
| REST | POST /v1/tiktok/hashtags |
| Compact MCP | socq_execute with endpoint: "tiktok/hashtags" |
| Typed MCP | socq_tiktok_hashtags |
| Exact-tool URL | https://api.socq.ai/mcp?tools=tiktok_hashtags |
| CLI | socq tiktok hashtags |
input object for socq_execute, or pass the same fields directly to the typed tool. Typed tools also accept _wait_seconds, _result_limit, and _idempotency_key.
A successful collection returns a
task_id. Continue with socq_get_task until the task succeeds, then read normalized records from results.items.results_limit defaults to 100 and applies to each hashtag.
Results use the normalized structure documented in TikTok Videos, with resource set to hashtags. The matched hashtag and its available metrics are returned under extra.
Result Fields
Task results use the stable SocQ fields below. Source-specific field names and formats are normalized without inferring or enriching values that the source did not provide. To request a smaller field set, usefields for MCP queries, _result_fields for typed tools, or --result-fields in the CLI. Declared fields remain present when their value is null.
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this result item. |
platform | string | No | Platform the result belongs to, such as instagram or linkedin. |
resource | string | No | SocQ resource represented by the result, such as videos or comments. |
type | string | No | Category of the result item, such as video, post, or comment. |
url | string | Yes | Public URL of the result item when available. |
published_at | string | Yes | Time the source item was published, in ISO 8601 format when available. |
collected_at | string | No | Time SocQ collected or processed this result, in ISO 8601 format. |
name | string | Yes | Hashtag or trend name. |
rank | integer | Yes | Position of the trend in the source ranking. |
region | string | Yes | Region, state, or province name. |
metrics | object | Yes | Counters and measurements available for the result item. |
metrics.posts_count | integer | Yes | Number of posts or posts associated with the trend. |
metrics.views_count | integer | Yes | Number of views reported by the platform. |
Completed Task Response
{
"code": 200,
"data": {
"task_id": "XN7I2RAYRFVR1S6P",
"status": "succeeded",
"public_id": "tiktok/hashtags",
"result_count": 5,
"credits_amount": 3.5,
"results": {
"limit": 1,
"next_cursor": "NjY2NA",
"has_more": true,
"schema_id": "hashtag-trend",
"schema_version": "1.0",
"items": [
{
"id": "7606390788867575071",
"platform": "tiktok",
"resource": "hashtags",
"type": "video",
"url": "https://www.tiktok.com/@destinationinspiration/video/7606390788867575071",
"published_at": "2026-02-13T16:41:15Z",
"collected_at": "2026-07-31T02:26:38.115834Z",
"name": null,
"rank": null,
"region": null,
"metrics": {
"posts_count": null,
"views_count": 3200000
}
}
]
}
}
}
Authorizations
bearerAuthapiKeyAuth
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json

