Browsable Browsable Docs

TikTok video

Fetch public metadata, stats, media, music, hashtags, and author data for a TikTok video.

POST /v1/tiktok/video

Request Parameters

Name In Type Required Description
url body string No Full public TikTok video URL.
username body string No TikTok username, with or without the leading @.
video_id body string No TikTok numeric video id. Use with username when url is not provided.

Response Structure

Async kickoff response

Polled run result response

Sync response

Declared output schema

Code Examples

Async + polling

RUN=$(curl -s -X POST "https://api.browsable.app/v1/tiktok/video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.tiktok.com/@tiktok/video/7641647587056962846","username":"tiktok","video_id":"7641647587056962846"}')
RUN_ID=$(echo "$RUN" | jq -r '.run_id')
POLL_DELAY=3
while true; do
RESULT=$(curl -s -H "Authorization: Bearer YOUR_API_KEY" "https://api.browsable.app/v1/runs/$RUN_ID")
STATUS=$(echo "$RESULT" | jq -r '.run_status')
if [[ "$STATUS" =~ ^(succeeded|failed|errored|cancelled|canceled|expired)$ ]]; then
echo "$RESULT"
break
fi
sleep "$(awk "BEGIN { print $POLL_DELAY * (0.9 + ($RANDOM % 21) / 100) }")"
POLL_DELAY=$((POLL_DELAY < 30 ? POLL_DELAY * 2 : 30))
[ "$POLL_DELAY" -gt 30 ] && POLL_DELAY=30
done

Sync

curl -X POST "https://api.browsable.app/v1/tiktok/video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.tiktok.com/@tiktok/video/7641647587056962846","username":"tiktok","video_id":"7641647587056962846","_run":{"async":false}}'