jsonscraper

TikTok Python Guide

How to scrape TikTok using Python

Updated March 5, 2026 3 min read 10 views

This guide shows how to build a robust TikTok data pipeline with user/profile endpoints, search routes, and no-watermark extraction use cases.

The TikTok API map includes user, video, hashtag, location, music, trending, effect, and search classes. This allows one backend to support analytics, moderation, and enrichment workflows at the same time.

What you will build

Fast start in Postman

Open the official TikTok collection, set license_key, and validate the first routes before coding.

Step 1

Fork

Use IG or TikTok Postman collection as your workspace baseline.

Step 2

Set key

Configure license_key once in an environment variable.

Step 3

Automate

Export snippets or run AI-agent workflows on top of ready requests.

All API requests

Full endpoint map from the collection. Expand each class and click any route to inspect parameters and sample responses.

Video Search User Hashtag Location Music Trending Effects Stories Playlists Live
Video (8 endpoints)
Search (9 endpoints)
User (15 endpoints)
Hashtag (3 endpoints)
Location (2 endpoints)
Music (3 endpoints)
Trending (2 endpoints)
Effects (3 endpoints)
Stories (2 endpoints)
Playlists (3 endpoints)
Live (4 endpoints)
View full endpoint list in Postman

Python examples from the collection

These examples use the same auth pattern as Postman: license_key in query params.

Example 1: search video by keyword (GET /searchVideo)

import requests

BASE_URL = "https://tiktok.evelode.com/tiktok-api"
LICENSE_KEY = "YOUR_LICENSE_KEY"

params = {
    "license_key": LICENSE_KEY,
    "keyword": "appletv",
    "cache_timeout": 0,
}

r = requests.get(f"{BASE_URL}/searchVideo", params=params, timeout=30)
r.raise_for_status()
data = r.json()

print(data["status"], data.get("tiktok", {}).get("cursor"))
{
  "status": "ok",
  "tiktok": {
    "cursor": 12,
    "aweme_list": []
  }
}

Example 2: get no-watermark URL by video ID (GET /getNoWatermarkUrlByID)

import requests

BASE_URL = "https://tiktok.evelode.com/tiktok-api"
LICENSE_KEY = "YOUR_LICENSE_KEY"

params = {
    "license_key": LICENSE_KEY,
    "video_id": "7106855913906081070",
    "cache_timeout": 0,
}

r = requests.get(f"{BASE_URL}/getNoWatermarkUrlByID", params=params, timeout=30)
r.raise_for_status()
data = r.json()

print(data["status"], data["tiktok"]["id"])
print(data["tiktok"]["url"])

Python request pattern (auth + pagination)

Centralize request signing and cursor handling to keep high-volume jobs predictable.

import requests

BASE_URL = "https://tiktok.evelode.com/tiktok-api"
LICENSE_KEY = "YOUR_LICENSE_KEY"

def call(endpoint: str, **params):
    q = {"license_key": LICENSE_KEY, "cache_timeout": 0, **params}
    r = requests.get(f"{BASE_URL}{endpoint}", params=q, timeout=30)
    r.raise_for_status()
    return r.json()

page1 = call("/getFollowers", query="therock", count=20)
next_cursor = page1.get("tiktok", {}).get("next_cursor")
if next_cursor:
    page2 = call("/getFollowers", query="therock", count=20, cursor=next_cursor)

Implementation notes

  • Always include license_key in every request.
  • Use cache_timeout intentionally for recurring checks.
  • Persist cursor fields with query context.
  • Scale route coverage class-by-class after baseline validation.

Ready to launch your API workflow?

Pick an API, test endpoints in Postman, and launch your workflow in minutes.