Skip to content

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, max_items: int = 100):
params = {"handle": handle, "limit": 50}
while max_items > 0:
r = httpx.get(f"{BASE}/tiktok/channel-videos", params=params,
headers=H, timeout=120).json()
for v in r["data"][:max_items]:
yield v
max_items -= len(r["data"])
if not r["meta"]["has_more"]:
return
params["cursor"] = r["meta"]["cursor"]
transcripts = {}
for video in channel_videos("tiktok", max_items=50):
t = httpx.get(f"{BASE}/tiktok/transcript",
params={"url": video["url"]}, headers=H, timeout=120)
if t.status_code == 422: # image post / no speech
continue
t.raise_for_status()
transcripts[video["id"]] = t.json()["data"]["text"]

Credit math

50 videos listed (3 credits each) + 50 transcripts (8 credits each) = 550 credits — about $2.75 at the monthly rate, $2.48 on annual.

Notes

  • Transcripts are cached forever, so re-running the loop is fast for already-seen videos (same credits, millisecond responses).
  • Prefer format=text if you’re piping straight into a prompt.
  • For Instagram, swap tiktok/channel-videos for instagram/channel-reels and expect higher transcript pricing (audio pipeline).

Related: Pagination · Content repurposing use case