Skip to main content

Modern Python SDK for the TikHub social-media data API.

Project description

TikHub API Python SDK

GitHub Stars GitHub Forks GitHub Issues GitHub Pull Requests License

English | 中文 | Français | Español | 日本語

TikHub Banner

The official Python SDK for the TikHub social media data API — a unified REST API that provides real-time access to 16+ social media platforms including TikTok, Douyin, Instagram, YouTube, Twitter/X, Xiaohongshu (Red Note), Bilibili, Weibo, Threads, LinkedIn, Reddit, Kuaishou, WeChat, Lemon8, Zhihu, and more.

Built for developers, data scientists, and AI engineers who need structured social media data at scale — for AI training, influencer analytics, trend monitoring, sentiment analysis, market research, and competitive intelligence.

Why TikHub?

  • 1000+ endpoints across 16 platforms through a single API key
  • Real-time data — video details, user profiles, comments, search results, live streams, trending content, and e-commerce analytics
  • RESTful & OpenAPI-native — every endpoint is documented in the OpenAPI spec and testable via Swagger UI
  • MCP integration — connect AI agents (Claude, LangChain, Coze, n8n) directly to social media data via Model Context Protocol
  • Datasets available — 1B+ pre-collected, structured records for training and research

Why This SDK?

  • 100% endpoint coverage — 1106 / 1106 endpoints from OpenAPI spec V5.3.2, mechanically generated and verified
  • Sync + asyncTikHub and AsyncTikHub clients with identical APIs
  • Production-ready — automatic retries with exponential backoff, rate-limit handling, structured error hierarchy with full debugging context
  • Type-safemypy --strict clean, built on httpx + pydantic v2
  • Zero config — flat kwargs, no config objects; set one env var and go

Version: 2.1.1 — Requires Python 3.9+

Supported Platforms

Platform Resource Endpoints
TikTok tiktok_web, tiktok_app_v3, tiktok_creator, tiktok_analytics, tiktok_ads, tiktok_shop_web 200+
Douyin douyin_web, douyin_app_v3, douyin_search, douyin_billboard, douyin_creator, douyin_xingtu, douyin_index 400+
Instagram instagram_v1, instagram_v2, instagram_v3 80+
YouTube youtube_web, youtube_web_v2 50+
Twitter / X twitter_web 13+
Xiaohongshu (Red Note) xiaohongshu_web, xiaohongshu_app (+ v2/v3 variants) 80+
Bilibili bilibili_web, bilibili_app 40+
Weibo weibo_web, weibo_web_v2, weibo_app 30+
Threads threads_web 10+
LinkedIn linkedin_web, linkedin_web_v2 10+
Reddit reddit_app 10+
Kuaishou kuaishou_web, kuaishou_app 20+
WeChat wechat_channels, wechat_media_platform_web 20+
Lemon8 lemon8_app 10+
Zhihu zhihu_web 30+
Others toutiao_web, toutiao_app, xigua_app_v2, pipixia_app, sora2 30+

Install

pip install tikhub

Requires Python 3.9+.

From source

git clone https://github.com/TikHub/TikHub-API-Python-SDK.git
cd TikHub-API-Python-SDK
pip install -e ".[dev]"
pytest -q

Get your API Key

  1. Go to https://user.tikhub.io/login and sign up / log in.
  2. Copy your API key from the dashboard.
  3. Set it as an environment variable or pass it directly:
export TIKHUB_API_KEY="YOUR_API_KEY"

Quickstart

from tikhub import TikHub

client = TikHub(api_key="YOUR_API_KEY")

# 1:1 with the OpenAPI spec — resource = tag, method = path basename
video = client.douyin_web.fetch_one_video(aweme_id="7251234567890123456")
print(video.aweme_detail.desc)

client.close()

Or with the recommended context manager:

with TikHub(api_key="YOUR_API_KEY") as client:
    health = client.health_check.check()
    print(health.status)

Async

import asyncio
from tikhub import AsyncTikHub

async def main():
    async with AsyncTikHub(api_key="YOUR_API_KEY") as client:
        video = await client.douyin_web.fetch_one_video(aweme_id="...")
        print(video.aweme_detail.desc)

asyncio.run(main())

Configuration

The constructor takes one required argument and a small handful of optional kwargs:

TikHub(
    api_key=None,        # str | None — defaults to $TIKHUB_API_KEY
    timeout=30,          # float | None — total request timeout in seconds
    base_url=None,       # str | None — only override for a private mirror

    # Advanced (rare):
    max_retries=3,
    proxy=None,
    user_agent=None,
    parse_response=True,
    http_client=None,    # bring your own httpx.Client
)

That's the entire configuration surface. There is no ClientConfig object — knobs are flat kwargs.

Naming rules

The SDK is mechanically derived from the TikHub OpenAPI spec. Two rules:

  1. Resource attribute = OpenAPI tag, lowercased, dashes → underscores, -API stripped. Douyin-Web-APIclient.douyin_web. TikTok-App-V3-APIclient.tiktok_app_v3.
  2. Method name = the last segment of the API path, verbatim. /api/v1/douyin/web/fetch_one_videoclient.douyin_web.fetch_one_video(...).

Parameter names match the OpenAPI spec verbatim. If you can read the TikHub API docs, you already know how to use the SDK.

Status

100% endpoint coverage against TikHub OpenAPI spec V5.3.2.

Resources 54 (one per OpenAPI tag)
Endpoints 1106 / 1106
Tests 110 passing
Type-check mypy --strict clean across 71 source files
Lint ruff clean
Phase Scope State
0 Foundation: client, transport, errors, retries, pagination ✅ done
1 Codegen pipeline (scripts/refresh_spec.py, generate_resources.py, verify_coverage.py) ✅ done
2 Douyin + TikTok core (412 endpoints) ✅ done
3 Other Chinese platforms (302 endpoints) ✅ done
4 International platforms (234 endpoints) ✅ done
5 TikTok specialty + utilities (94 endpoints) ✅ done
6 Docs site, CLI, migration guide, release workflow ✅ done

The resource layer is mechanically generated from spec/openapi.json. To refresh after a TikHub spec update:

python scripts/refresh_spec.py        # pulls latest openapi.json, prints diff
python scripts/generate_resources.py  # regenerates all 54 resource files + clients
python scripts/generate_docs.py       # regenerates docs/reference.md
python scripts/verify_coverage.py     # asserts 100% coverage
pytest -q                             # 110 tests

CLI

A small console wrapper ships in the cli extra:

pip install "tikhub[cli]"
export TIKHUB_API_KEY="YOUR_API_KEY"

tikhub health                                 # ping the API
tikhub fetch https://v.douyin.com/abc/        # universal video URL parser
tikhub user info                              # plan + quota
tikhub user usage                             # today's request count

Every command prints JSON to stdout — pipe to jq or any other formatter.

Documentation

Full docs (mkdocs-material): authentication, async, errors, pagination, retries, logging, CLI, migration guide, naming rules, and the auto-generated reference for all 1106 endpoints.

pip install -e ".[docs]"
mkdocs serve            # http://127.0.0.1:8000

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tikhub-2.1.2.tar.gz (123.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tikhub-2.1.2-py3-none-any.whl (157.9 kB view details)

Uploaded Python 3

File details

Details for the file tikhub-2.1.2.tar.gz.

File metadata

  • Download URL: tikhub-2.1.2.tar.gz
  • Upload date:
  • Size: 123.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tikhub-2.1.2.tar.gz
Algorithm Hash digest
SHA256 7d6be6728a4a4441e3dc3a441777414e12be072024bd73bd408cc23675f7fbbf
MD5 b397734da4ce5c0c2d24af934f04345e
BLAKE2b-256 710b49605fc47a73fa127df1b3c9086885ee908f76f2d506be351a7ee28a5e9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tikhub-2.1.2.tar.gz:

Publisher: release.yml on TikHub/TikHub-API-Python-SDK

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tikhub-2.1.2-py3-none-any.whl.

File metadata

  • Download URL: tikhub-2.1.2-py3-none-any.whl
  • Upload date:
  • Size: 157.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tikhub-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9de5b6828ab2e04a97efed6054af6015ac3546cc42cf8ecaaa1e26d48faee710
MD5 d36812969f8dde4b6a8ccbb6f70492b3
BLAKE2b-256 f1a4d24522f6f444ef29fc3d6fd34fea5caa9ce0bb217c03fd1f714dc6afbecb

See more details on using hashes here.

Provenance

The following attestation bundles were made for tikhub-2.1.2-py3-none-any.whl:

Publisher: release.yml on TikHub/TikHub-API-Python-SDK

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page