Hashtag Videos by ID
curl --request GET \
--url https://api.sociavault.com/v1/scrape/tiktok/hashtag/videos \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.sociavault.com/v1/scrape/tiktok/hashtag/videos"
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.sociavault.com/v1/scrape/tiktok/hashtag/videos', 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.sociavault.com/v1/scrape/tiktok/hashtag/videos",
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.sociavault.com/v1/scrape/tiktok/hashtag/videos"
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.sociavault.com/v1/scrape/tiktok/hashtag/videos")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sociavault.com/v1/scrape/tiktok/hashtag/videos")
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{
"success": true,
"data": {
"status_code": 0,
"aweme_list": [
{
"aweme_id": "7696101681305488670",
"desc": "From Michael Jackson and Prince to Beyoncé, Rihanna, and Bad Bunny! 🎤🔥 The Super Bowl halftime show has given us some of the most iconic performances in music history. Which year had the BEST halftime show? 👀🏈 Don't follow the crowd — drop your favorite in the comments! 👇#SuperBowl #HalftimeShow #SuperBowlHalftime #IconicPerformances #NFL",
"desc_language": "en",
"region": "US",
"create_time": 1791888353,
"create_time_utc": "2026-10-13T10:45:53.000Z",
"url": "https://www.tiktok.com/@clipvisre_/video/7696101681305488670",
"statistics": {
"aweme_id": "7696101681305488670",
"collect_count": 3,
"comment_count": 1,
"digg_count": 66,
"download_count": 0,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"play_count": 2008,
"repost_count": 0,
"share_count": 1,
"whatsapp_share_count": 0
},
"author": {
"uid": "7670401639165592589",
"unique_id": "clipvisre_",
"nickname": "Lordwort",
"sec_uid": "MS4wLjABAAAAwe4K4FFylocBeS9weNynmZSUCFeP8b4HMNChP3cQ_zR1oNYZAYFzEQpEZH9CTg1v",
"follower_count": 0,
"signature": ""
},
"video": {
"duration": 206287,
"cover": {
"url_list": [
"https://p16-common-sign.tiktokcdn-eu.com/tos-useast8-p-0068-tx2/oEecjV33nWqIIFA4IAQPzfbeXLVA9LQGGuqCwB~tplv-tiktokx-origin.image?dr=1347&refresh_token=83f0a06d&x-expires=1791990000&x-signature=BrLAiTnfVMi2nHCGvQVMCIeWv7Y%3D&t=bacd0480&ps=933b5bde&shp=d05b14bd&shcp=c0f880ed&idc=no1a&biz_tag=tt_video&s=CHALLENGE_AWEME&sc=cover"
]
},
"play_addr": {
"url_list": [
"https://v45.tiktokcdn-eu.com/f32d30c450a990ec980e3a20fb8d782e/6acfa5a9/video/tos/alisg/tos-alisg-ve-37c799-sg/oARORqt7zz1EEDlqEAEbZftfrFRASFIDQ3VB4g/?a=1233&bti=Ojs2NGYpQHM6OjZALjU2OmQvcCMxNDNg&&bt=1804&ft=td_Ls8s6oA-O12NvCBRezIxRIQx0~3_45SY&mime_type=video_mp4&rc=aDRlZTZpNTc3ZTU7Ojk0NEBpM3Nxd3k5cnQzZTMzaTczNEA0MDE2MDFhNWAxMGNeXy5jYSNwYjVxMmRzajRhLS1kMTJzcw%3D%3D&vvpl=1&l=20261013155051B222E4100DF0F21FBE37&btag=e0009d000"
]
}
},
"music": {
"id_str": "7696101930128509726",
"title": "original sound - clipvisre_",
"author": "Lordwort"
},
"text_extra": [
{
"hashtag_id": "9484",
"hashtag_name": "superbowl"
},
{
"hashtag_id": "8968",
"hashtag_name": "halftimeshow"
},
{
"hashtag_id": "6297854",
"hashtag_name": "superbowlhalftime"
}
]
}
],
"cursor": 20,
"has_more": 1
},
"credits_used": 1,
"endpoint": "tiktok/hashtag_videos"
}{
"error": "Missing required parameter: handle",
"endpoint": "<string>",
"credits_required": 123
}{
"error": "Invalid API key",
"docs": "https://docs.sociavault.com/authentication"
}{
"error": "Insufficient credits",
"required": 1,
"available": 0
}{
"error": "No videos found for this hashtag_id. It should be the text_extra[].hashtag_id from a video that uses the hashtag.",
"endpoint": "hashtag_videos"
}{
"error": "Service configuration error"
}TikTok
Hashtag Videos by ID
Gets the videos for a TikTok hashtag by its numeric hashtag ID.
Use it when Search by Hashtag returns “TikTok did not return an exact match for this hashtag” for a hashtag that’s in use. Any video that uses the hashtag has its ID in text_extra[].hashtag_id, for example in Search by Keyword results.
The response has the same format as Search by Hashtag, without is_ad, is_paid_partnership, is_eligible_for_commission and shop_product_url.
GET
/
v1
/
scrape
/
tiktok
/
hashtag
/
videos
Hashtag Videos by ID
curl --request GET \
--url https://api.sociavault.com/v1/scrape/tiktok/hashtag/videos \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.sociavault.com/v1/scrape/tiktok/hashtag/videos"
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.sociavault.com/v1/scrape/tiktok/hashtag/videos', 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.sociavault.com/v1/scrape/tiktok/hashtag/videos",
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.sociavault.com/v1/scrape/tiktok/hashtag/videos"
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.sociavault.com/v1/scrape/tiktok/hashtag/videos")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sociavault.com/v1/scrape/tiktok/hashtag/videos")
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{
"success": true,
"data": {
"status_code": 0,
"aweme_list": [
{
"aweme_id": "7696101681305488670",
"desc": "From Michael Jackson and Prince to Beyoncé, Rihanna, and Bad Bunny! 🎤🔥 The Super Bowl halftime show has given us some of the most iconic performances in music history. Which year had the BEST halftime show? 👀🏈 Don't follow the crowd — drop your favorite in the comments! 👇#SuperBowl #HalftimeShow #SuperBowlHalftime #IconicPerformances #NFL",
"desc_language": "en",
"region": "US",
"create_time": 1791888353,
"create_time_utc": "2026-10-13T10:45:53.000Z",
"url": "https://www.tiktok.com/@clipvisre_/video/7696101681305488670",
"statistics": {
"aweme_id": "7696101681305488670",
"collect_count": 3,
"comment_count": 1,
"digg_count": 66,
"download_count": 0,
"forward_count": 0,
"lose_comment_count": 0,
"lose_count": 0,
"play_count": 2008,
"repost_count": 0,
"share_count": 1,
"whatsapp_share_count": 0
},
"author": {
"uid": "7670401639165592589",
"unique_id": "clipvisre_",
"nickname": "Lordwort",
"sec_uid": "MS4wLjABAAAAwe4K4FFylocBeS9weNynmZSUCFeP8b4HMNChP3cQ_zR1oNYZAYFzEQpEZH9CTg1v",
"follower_count": 0,
"signature": ""
},
"video": {
"duration": 206287,
"cover": {
"url_list": [
"https://p16-common-sign.tiktokcdn-eu.com/tos-useast8-p-0068-tx2/oEecjV33nWqIIFA4IAQPzfbeXLVA9LQGGuqCwB~tplv-tiktokx-origin.image?dr=1347&refresh_token=83f0a06d&x-expires=1791990000&x-signature=BrLAiTnfVMi2nHCGvQVMCIeWv7Y%3D&t=bacd0480&ps=933b5bde&shp=d05b14bd&shcp=c0f880ed&idc=no1a&biz_tag=tt_video&s=CHALLENGE_AWEME&sc=cover"
]
},
"play_addr": {
"url_list": [
"https://v45.tiktokcdn-eu.com/f32d30c450a990ec980e3a20fb8d782e/6acfa5a9/video/tos/alisg/tos-alisg-ve-37c799-sg/oARORqt7zz1EEDlqEAEbZftfrFRASFIDQ3VB4g/?a=1233&bti=Ojs2NGYpQHM6OjZALjU2OmQvcCMxNDNg&&bt=1804&ft=td_Ls8s6oA-O12NvCBRezIxRIQx0~3_45SY&mime_type=video_mp4&rc=aDRlZTZpNTc3ZTU7Ojk0NEBpM3Nxd3k5cnQzZTMzaTczNEA0MDE2MDFhNWAxMGNeXy5jYSNwYjVxMmRzajRhLS1kMTJzcw%3D%3D&vvpl=1&l=20261013155051B222E4100DF0F21FBE37&btag=e0009d000"
]
}
},
"music": {
"id_str": "7696101930128509726",
"title": "original sound - clipvisre_",
"author": "Lordwort"
},
"text_extra": [
{
"hashtag_id": "9484",
"hashtag_name": "superbowl"
},
{
"hashtag_id": "8968",
"hashtag_name": "halftimeshow"
},
{
"hashtag_id": "6297854",
"hashtag_name": "superbowlhalftime"
}
]
}
],
"cursor": 20,
"has_more": 1
},
"credits_used": 1,
"endpoint": "tiktok/hashtag_videos"
}{
"error": "Missing required parameter: handle",
"endpoint": "<string>",
"credits_required": 123
}{
"error": "Invalid API key",
"docs": "https://docs.sociavault.com/authentication"
}{
"error": "Insufficient credits",
"required": 1,
"available": 0
}{
"error": "No videos found for this hashtag_id. It should be the text_extra[].hashtag_id from a video that uses the hashtag.",
"endpoint": "hashtag_videos"
}{
"error": "Service configuration error"
}💳 1 credit per request. Pages with no videos are free.
Authorizations
Query Parameters
The hashtag's numeric ID. Any video that uses the hashtag has it in text_extra[].hashtag_id.
Example:
"6297854"
Cursor to get more videos. Get 'cursor' from previous response.
Example:
20
Response
Successful response Key Response Fields:
data.aweme_list[].aweme_id: Video IDdata.aweme_list[].url: Link to the video on TikTokdata.aweme_list[].desc: Caption text (includes hashtags)data.aweme_list[].create_time: Unix timestamp of when the video was posteddata.aweme_list[].create_time_utc: The same time as an ISO datedata.aweme_list[].statistics.play_count: Total viewsdata.aweme_list[].statistics.digg_count: Likesdata.aweme_list[].statistics.comment_count: Commentsdata.aweme_list[].statistics.share_count: Sharesdata.aweme_list[].statistics.collect_count: Bookmarks/savesdata.aweme_list[].video.play_addr.url_list[0]: Video playback URLdata.aweme_list[].video.cover.url_list[0]: Thumbnail image URLdata.aweme_list[].video.duration: Video duration in millisecondsdata.aweme_list[].author.unique_id: Author's TikTok usernamedata.aweme_list[].author.nickname: Author's display namedata.aweme_list[].music.title: Sound titledata.aweme_list[].text_extra[].hashtag_id: IDs of the hashtags in the captiondata.cursor: Pagination cursor. Pass it ascursorto get the next pagedata.has_more:1while the page returned videos. Keep paging until a page comes back empty; empty pages are free