Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', 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.lobstr.io/v1/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$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.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"hashtag": "<string>",
"hashtag_rank": 123,
"video_id": "<string>",
"description": "<string>",
"text_language": "<string>",
"hashtags": "<any>",
"mentions": "<any>",
"created_at": {},
"play_count": 123,
"like_count": 123,
"comment_count": 123,
"share_count": 123,
"collect_count": 123,
"repost_count": 123,
"duration": 123,
"width": 123,
"height": 123,
"definition": "<string>",
"video_format": "<string>",
"bitrate": 123,
"file_size": 123,
"is_ad": true,
"duet_enabled": true,
"stitch_enabled": true,
"location_created": "<string>",
"video_url": "<string>",
"play_url": "<string>",
"download_url": "<string>",
"cover_url": "<string>",
"dynamic_cover": "<string>",
"music_id": "<string>",
"music_title": "<string>",
"music_author": "<string>",
"music_play_url": "<string>",
"music_cover_url": "<string>",
"music_duration": 123,
"music_original": true,
"music_is_copyrighted": true,
"author_id": "<string>",
"author_sec_uid": "<string>",
"author_username": "<string>",
"author_nickname": "<string>",
"author_verified": true,
"author_private_account": true,
"author_bio": "<string>",
"author_follower_count": 123,
"author_following_count": 123,
"author_total_likes": 123,
"author_video_count": 123,
"author_digg_count": 123,
"author_friend_count": 123,
"author_avatar": "<string>",
"effect_stickers": "<any>",
"scraping_time": {}
}TikTok Hashtag Scraper
Get Results
Retrieve scraped data from TikTok Hashtag Scraper
GET
/
v1
/
results
Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', 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.lobstr.io/v1/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$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.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"hashtag": "<string>",
"hashtag_rank": 123,
"video_id": "<string>",
"description": "<string>",
"text_language": "<string>",
"hashtags": "<any>",
"mentions": "<any>",
"created_at": {},
"play_count": 123,
"like_count": 123,
"comment_count": 123,
"share_count": 123,
"collect_count": 123,
"repost_count": 123,
"duration": 123,
"width": 123,
"height": 123,
"definition": "<string>",
"video_format": "<string>",
"bitrate": 123,
"file_size": 123,
"is_ad": true,
"duet_enabled": true,
"stitch_enabled": true,
"location_created": "<string>",
"video_url": "<string>",
"play_url": "<string>",
"download_url": "<string>",
"cover_url": "<string>",
"dynamic_cover": "<string>",
"music_id": "<string>",
"music_title": "<string>",
"music_author": "<string>",
"music_play_url": "<string>",
"music_cover_url": "<string>",
"music_duration": 123,
"music_original": true,
"music_is_copyrighted": true,
"author_id": "<string>",
"author_sec_uid": "<string>",
"author_username": "<string>",
"author_nickname": "<string>",
"author_verified": true,
"author_private_account": true,
"author_bio": "<string>",
"author_follower_count": 123,
"author_following_count": 123,
"author_total_likes": 123,
"author_video_count": 123,
"author_digg_count": 123,
"author_friend_count": 123,
"author_avatar": "<string>",
"effect_stickers": "<any>",
"scraping_time": {}
}Retrieve scraped data from your TikTok Hashtag Scraper runs.
Headers
Query Parameters
Result Fields
Caption or description of the TikTok video. Example:
GoPro POV: I found a party inside the lobster den #lobster #underwater #pov #party #higgsfield List of hashtags used in the video’s own caption. Example:
["lobster", "underwater", "pov", "party", "higgsfield"]Canonical TikTok video page URL. Unlike play_url/download_url (signed CDN links tied to the proxy IP that fetched them, and unusable elsewhere), this always works. Example:
https://www.tiktok.com/@kennyslowbird/video/7680941891700935944Direct streaming URL for the video. Signed and tied to the proxy IP that fetched it — confirmed to 403 from any other network, even with full browser TLS impersonation. Use video_url for a link guaranteed to keep working. Example:
https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-pve-0037c001/osPMAPFpquB5whsYB2iigfBnEmARMIREIyfDUC/?a=1988&bti=ODszNWYuMDE6&&bt=626&ft=-Csk_m.MPD12NpP3Jn-Uxl7FSY3W3wv25ycAp&mime_type=video_mp4&rc=NmQ6Mzk5ODNkZDs7ZGk7N0BpajRqNnA5cm01ZDMzODczNEBiLjIxX19eNl4xLl40YmIwYSNoNHFtMmRzc2BhLS1kMTFzcw%3D%3D&expire=1788988144&l=202609072108521145CE1BA5A6675D4565&ply_type=2&policy=2&signature=3a1dd0cf1932bd6dffda58177499342f&tk=tt_chain_token&btag=e000b0000Direct download URL for the video. Same IP-binding limitation as play_url — use video_url for a link guaranteed to keep working.
URL of the video thumbnail (cover image). Example:
https://p19-common-sign.tiktokcdn-eu.com/tos-alisg-p-0037/ocGMEGfYAbdQDHfqSLQLI8HYQFfesTwwcAGXRI~tplv-tiktokx-origin.image?dr=10395&x-expires=1788987600&x-signature=o7cWRDAV2XzbPvIXQ%2FcYS24BwIc%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=no1aURL of the animated dynamic cover (GIF-like preview). Example:
https://p16-common-sign.tiktokcdn-eu.com/tos-alisg-p-0037/o4QwQEGJGXYYAyGqILEReDTfS8bRfIjAQHLfF2~tplv-tiktokx-origin.image?dr=10395&x-expires=1788987600&x-signature=mzIZiNAQrJvIOm40dm1XaHHQpvU%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=no1aDirect URL to stream the audio track. Example:
https://sf16-music.tiktokcdn-eu.com/obj/tos-alisg-ve-2774/owYPQBSopi5XcEAa58MUvAixnPAWIp93tiLnrURL of the music track’s cover art. Example:
https://p77-sg.tiktokcdn.com/aweme/200x200/tos-alisg-v-2774/oYmBAs9EvpUPMEAiAHxSsYrqAWiBAmAQCawAV.jpegSecondary unique identifier of the author (used in API calls). Example:
MS4wLjABAAAAzeLkt1OZZGvXNE4urbCiOvdjecJhZuPMjTzCM_RZYVnW9gG0AiIOEQiv7u75lmX0Biography or description on the author’s TikTok profile Example:
⬆️ 2.7 million across all platforms 🔥Music Release & Collabs & partnerships🔥 📩 kennyslowbird@gmail.com 📩 🔥 Higgsfield Partner 🔥 ⬇️ buy my secret ⬇️URL of the author’s profile picture. Example:
https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/a0d2d60a3d45a05ea7d2220c875cba22~tplv-tiktokx-cropcenter:100:100.jpeg?dr=10399&refresh_token=3b6951e9&x-expires=1788987600&x-signature=MP2LVGgC8j02XYhQROa%2BKDQ00HE%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=no1aList of visual effects/stickers applied to the video. Example:
[{"id": "1911622141", "name": "IPHONE EVENING CAPTURE", "use_count": 0}, {"id": "127702155", "name": "comfy", "use_count": 0}]Code Examples
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
Response
200
{"total_results": 1, "data": [{"hashtag": "lobstr", "hashtag_rank": 1, "video_id": "7680941891700935944", "description": "GoPro POV: I found a party inside the lobster den #lobster #underwater #pov #party #higgsfield ", "text_language": "en", "hashtags": ["lobster", "underwater", "pov", "party", "higgsfield"], "mentions": [], "created_at": "2026-09-02T12:17:29Z", "play_count": 1500000, "like_count": 60900}]}