Recipe: transcribe a channel
Goal: the full transcript set of a creator’s recent videos, ready for search or an
LLM. Two endpoints: channel-videos to enumerate, transcript per video.
The loop
import httpx
BASE = "https://api.scrapersocial.com/v1"H = {"Authorization": "Bearer sk_live_..."}
def channel_videos(handle: str, limit: int = 50): # One call returns the latest videos, up to 50. There is no cursor. r = httpx.get(f"{BASE}/tiktok/channel-videos", params={"handle": handle, "limit": limit}, headers=H, timeout=120) r.raise_for_status() return r.json()["data"]
transcripts = {}for video in channel_videos("tiktok"): t = httpx.get(f"{BASE}/tiktok/transcript", params={"url": video["url"]}, headers=H, timeout=120) if t.status_code == 404: # no caption track; not charged continue t.raise_for_status() transcripts[video["id"]] = t.json()["data"]["text"]Credit math
50 videos listed (1 credit each) + 50 transcripts (2 credits each) = 150 credits — about $0.75 at the monthly rate. Videos without captions return 404 and cost nothing, so the real total is usually lower.
Notes
channel-videosreturns one batch of up to 50 videos, newest first, with no cursor. Pinned videos can appear out of order, so sort onposted_atif order matters.- Transcripts are cached forever, so re-running the loop is fast for already-seen videos (same credits, millisecond responses).
- Prefer
format=textif you’re piping straight into a prompt. - For Instagram, swap in
instagram/channel-reelsandinstagram/transcript. Instagram transcripts are priced per started minute (1 credit + 20 per minute), so a 50-reel run costs far more than TikTok’s. Facebook and X transcript calls currently return 404.
Related: Pagination · Content repurposing use case