# TikTokAPI.io — Complete LLM & AI Agent Technical Reference (llms-full.txt) > High-speed, no-watermark TikTok Data & Creative Center Commercial Ads REST API. > Base URL: `https://api.tiktokapi.io` | Main Website: `https://tiktokapi.io` > OpenAPI 3.0 Spec: `https://tiktokapi.io/openapi.json` | Compact Summary: `https://tiktokapi.io/llms.txt` ## 1. Authentication & Core Architecture - **Base URL**: `https://api.tiktokapi.io` - **Authentication Header**: Pass either `x-api-key: tk_your_api_key` OR `Authorization: Bearer tk_your_api_key` on every request. - **No OAuth / No Cookies / No Proxies**: Works directly from AWS, GCP, Azure, Hetzner, Vercel, and Cloudflare Workers without TikTok developer review or user login. - **Free Trial**: Every new account receives **2,000 Free Credits** immediately upon sign-up at `https://tiktokapi.io/signup`. - **Zero Charge on Errors**: Any failed lookup, 404 resource, or non-zero `code` costs **0 Credits**. ## 2. Pricing & Unified Credit System ($1 = 10,000 Credits) | Data Type / Endpoint | Credits | Base Cost | Effective Cost with Bonus | Page Size | | :--- | :--- | :--- | :--- | :--- | | Video Search, User Videos, Hashtag/Music Feeds | 2 Credits / video | $0.20 / 1,000 videos | $0.08–$0.115 / 1,000 videos | Up to 30 videos/call | | Video Comments & Replies | 1 Credit / comment | $0.10 / 1,000 comments | $0.06 / 1,000 comments | Up to 50 comments/call | | Followers, Following & User Search | 1 Credit / user | $0.10 / 1,000 users | $0.06 / 1,000 users | Up to 200 users/call | | Single 1080p Video Parser, Profile, Hashtag/Sound Info | 10 Credits / call | $1.00 / 1,000 calls | $0.60 / 1,000 calls | 1 object + 1080p MP4 | | TikTok Creative Center Commercial Ads (/v1/ads/*) | 10 Credits / ad | $1.00 / 1,000 ads | $0.60 / 1,000 ads | Up to 20 ads/call | ## 3. Standardized /v1/ Route Mapping Table Both modern plural routes and legacy compatible routes are supported on `https://api.tiktokapi.io`: - `GET /v1/videos/detail?url={url}&hd=1` (alias: `GET /v1/video/detail`) — 1080p no-watermark MP4 (`hdplay`) & full metadata - `GET /v1/videos/search?query={kw}&limit=30&cursor=0®ion=US&publish_time=0&sort_by=0` (alias: `GET /v1/video/search`) - `GET /v1/users/profile?username={handle}` (alias: `GET /v1/user/info`) — resolves `@username` to numeric `user_id` and `secUid` - `GET /v1/users/videos?username={handle}&limit=33&cursor=0` (alias: `GET /v1/user/posts`) - `GET /v1/users/followers?user_id={uid}&limit=200&cursor=0` (alias: `GET /v1/user/followers`) - `GET /v1/users/following?user_id={uid}&limit=200&cursor=0` (alias: `GET /v1/user/following`) - `GET /v1/users/search?query={kw}&limit=30&cursor=0` (alias: `GET /v1/user/search`) - `GET /v1/videos/comments?url={url}&limit=50&cursor=0` (alias: `GET /v1/comment/list`) - `GET /v1/videos/comments/replies?video_id={vid}&comment_id={cid}&limit=50&cursor=0` (alias: `GET /v1/comment/reply`) - `GET /v1/hashtags/info?hashtag={name}` (alias: `GET /v1/challenge/info`) - `GET /v1/hashtags/videos?hashtag_id={cid}&limit=30&cursor=0` (alias: `GET /v1/challenge/posts`) - `GET /v1/sounds/info?sound={id_or_url}` (alias: `GET /v1/music/info`) - `GET /v1/sounds/videos?sound_id={mid}&limit=30&cursor=0` (alias: `GET /v1/music/posts`) - `GET /v1/videos/trending?region=US&limit=20` (alias: `GET /v1/trending/feed`) - `GET /v1/ads/search?keyword={kw}&country_code=US&period=7&sort_by=impression&page=1&limit=20` (alias: `GET /v1/ads/top/ads`) - `GET /v1/ads/detail?ad_id={id}` (alias: `GET /v1/ads/top/ads/detail`) - `GET /v1/ads/keywords?country_code=US&period=7&page=1&limit=20` (alias: `GET /v1/ads/top/keywords`) ## 4. Complete Endpoint Reference & Code Samples ### Get video or photo carousel detail & 1080p no-watermark URL (`GET /v1/video/detail`) - **Documentation URL**: https://tiktokapi.io/docs/video-detail - **Cost**: 10 Credits / request ($1.00 / 1K requests) - **Description**: Fetch full metadata, engagement metrics, creator profile, music track, image carousel slides, and direct 1080p HD no-watermark download links (`data.play`, `data.hdplay`) for any public TikTok video. - **Parameters**: - `url` (query, required): TikTok video URL, short link (`vm.tiktok.com`), or numeric video ID. [example: `https://www.tiktok.com/@tiktok/video/7106594312292453675`] - `hd` (query, optional): Set to `1` to include the 1080p HD no-watermark stream URL in `data.hdplay`. [example: `1`] ```bash curl "https://api.tiktokapi.io/v1/video/detail?url=https%3A%2F%2Fwww.tiktok.com%2F%40tiktok%2Fvideo%2F7106594312292453675" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/video/detail?url=https%3A%2F%2Fwww.tiktok.com%2F%40tiktok%2Fvideo%2F7106594312292453675", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Search videos by keyword (`GET /v1/video/search`) - **Documentation URL**: https://tiktokapi.io/docs/video-search - **Cost**: 2 Credits / video (min 10 Credits) ($0.20 / 1K videos) - **Description**: Search public TikTok videos by keyword with filters for region, sort order, and publish time window. Every video item includes direct no-watermark playback links and full engagement statistics. Paginated via `cursor` and `hasMore`. - **Parameters**: - `keywords` (query, required): Search keywords, e.g. `ai tools` or `skincare routine`. [example: `ai tools`] - `count` (query, optional): Number of videos to return per page (max 30). [example: `20`] - `cursor` (query, optional): Pagination offset cursor (`0` for first page, then pass `data.cursor` from the previous response). [example: `0`] - `region` (query, optional): Two-letter ISO country code (`US`, `GB`, `JP`, `DE`, `BR`, etc.). [example: `US`] - `sort_type` (query, optional): Sort order: `0` = Relevance, `1` = Most Liked, `3` = Newest. [example: `0`] - `publish_time` (query, optional): Publish window filter: `0` = All time, `1` = Yesterday, `7` = Past 7 days, `30` = Past 30 days, `90` = Past 3 months, `180` = Past 6 months. [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/video/search?keywords=ai+tools" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/video/search?keywords=ai+tools", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get creator profile & account statistics (`GET /v1/user/info`) - **Documentation URL**: https://tiktokapi.io/docs/user-info - **Cost**: 10 Credits / request ($1.00 / 1K requests) - **Description**: Fetch a TikTok creator's public profile (`data.user`: `id`, `uniqueId`, `nickname`, `secUid`, `verified`, `signature`, avatars) and real-time counters (`data.stats`: `followerCount`, `followingCount`, `heartCount`, `videoCount`). - **Parameters**: - `unique_id` (query, required): Creator handle without `@`, e.g. `tiktok` or `khaby.lame`. [example: `tiktok`] ```bash curl "https://api.tiktokapi.io/v1/user/info?unique_id=tiktok" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/user/info?unique_id=tiktok", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get creator's public video posts (`GET /v1/user/posts`) - **Documentation URL**: https://tiktokapi.io/docs/user-posts - **Cost**: 2 Credits / video (min 10 Credits) ($0.20 / 1K videos) - **Description**: Paginated list of public videos posted by a creator (`data.videos`), newest first, including no-watermark video streams and engagement statistics. Pass `unique_id`, `user_id`, or `sec_uid`. - **Parameters**: - `unique_id` (query, required): Creator handle without `@`, e.g. `tiktok`. [example: `tiktok`] - `count` (query, optional): Number of videos per page (max 35). [example: `20`] - `cursor` (query, optional): Pagination cursor (`0` for the first page, then pass `data.cursor`). [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/user/posts?unique_id=tiktok" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/user/posts?unique_id=tiktok", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Search creator accounts (`GET /v1/user/search`) - **Documentation URL**: https://tiktokapi.io/docs/user-search - **Cost**: 1 Credit / user (min 10 Credits) ($0.10 / 1K users) - **Description**: Discover TikTok creators by keyword with optional filters for follower tier and verification status. Paginated via `cursor` and `has_more`. - **Parameters**: - `keywords` (query, required): Search keywords or username query. [example: `ai`] - `cursor` (query, optional): Pagination cursor (`0` for first page, then pass `data.cursor`). [example: `0`] - `follower_count` (query, optional): Follower count tier: `0` = Any, `1` = 0–1K, `2` = 1K–10K, `3` = 10K–100K, `4` = 100K+. [example: `0`] - `profile_type` (query, optional): Verification filter: `0` = Any, `1` = Verified accounts only. [example: `0`] - `search_emphasis` (query, optional): Search scope: `0` = General, `1` = Username match only. [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/user/search?keywords=ai" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/user/search?keywords=ai", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get user followers list (`GET /v1/user/followers`) - **Documentation URL**: https://tiktokapi.io/docs/user-followers - **Cost**: 1 Credit / user (min 10 Credits) ($0.10 / 1K followers) - **Description**: Paginated list of accounts following a creator (`data.followers`), up to 200 per request. First retrieve `user_id` and `sec_uid` from `/v1/user/info`, then pass `data.min_time` as `time` for subsequent pages. - **Parameters**: - `user_id` (query, required): Numeric TikTok user ID (`data.user.id` from `/v1/user/info`). [example: `107955`] - `sec_uid` (query, optional): SecUID (`data.user.secUid` from `/v1/user/info`). Recommended for reliability. [example: `MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM`] - `count` (query, optional): Number of followers per request (max 200). [example: `50`] - `time` (query, optional): Pagination timestamp cursor (`0` for first page, then pass `data.min_time`). [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/user/followers?user_id=107955" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/user/followers?user_id=107955", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get user following list (`GET /v1/user/following`) - **Documentation URL**: https://tiktokapi.io/docs/user-following - **Cost**: 1 Credit / user (min 10 Credits) ($0.10 / 1K followings) - **Description**: Paginated list of accounts that a creator follows (`data.followings`), up to 200 per request. Pass `data.min_time` as `time` for subsequent pages. - **Parameters**: - `user_id` (query, required): Numeric TikTok user ID (`data.user.id` from `/v1/user/info`). [example: `107955`] - `sec_uid` (query, optional): SecUID (`data.user.secUid` from `/v1/user/info`). [example: `MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM`] - `count` (query, optional): Number of accounts per request (max 200). [example: `50`] - `time` (query, optional): Pagination timestamp cursor (`0` for first page, then pass `data.min_time`). [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/user/following?user_id=107955" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/user/following?user_id=107955", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get top-level video comments (`GET /v1/comment/list`) - **Documentation URL**: https://tiktokapi.io/docs/comment-list - **Cost**: 1 Credit / comment (min 10 Credits) ($0.10 / 1K comments) - **Description**: Paginated top-level comments on a TikTok video (`data.comments`), up to 50 per page, including commenter profile, like count, and reply count. - **Parameters**: - `url` (query, required): TikTok video URL or numeric video ID. [example: `https://www.tiktok.com/@tiktok/video/7106594312292453675`] - `count` (query, optional): Number of comments per page (max 50). [example: `20`] - `cursor` (query, optional): Pagination cursor (`0` for first page, then pass `data.cursor`). [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/comment/list?url=https%3A%2F%2Fwww.tiktok.com%2F%40tiktok%2Fvideo%2F7106594312292453675" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/comment/list?url=https%3A%2F%2Fwww.tiktok.com%2F%40tiktok%2Fvideo%2F7106594312292453675", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get second-level comment replies (`GET /v1/comment/reply`) - **Documentation URL**: https://tiktokapi.io/docs/comment-reply - **Cost**: 1 Credit / comment (min 10 Credits) ($0.10 / 1K comments) - **Description**: Paginated nested replies (`data.comments`) under a top-level comment (`comment_id`). Accepts either `url` or `video_id` to identify the video. - **Parameters**: - `url` (query, required): TikTok video URL or numeric video ID (`video_id` is also accepted). [example: `7106594312292453675`] - `comment_id` (query, required): Top-level comment ID (`id` from `/v1/comment/list`). [example: `7106598090963878662`] - `count` (query, optional): Number of replies per page (max 50). [example: `20`] - `cursor` (query, optional): Pagination cursor (`0` for first page, then pass `data.cursor`). [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/comment/reply?url=7106594312292453675&comment_id=7106598090963878662" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/comment/reply?url=7106594312292453675&comment_id=7106598090963878662", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get hashtag (challenge) detail & total views (`GET /v1/challenge/info`) - **Documentation URL**: https://tiktokapi.io/docs/challenge-info - **Cost**: 10 Credits / request ($1.00 / 1K requests) - **Description**: Look up a hashtag by name to retrieve its numeric `cid` (`data.id`), description, video count (`data.userCount`), and total view count (`data.viewCount`). - **Parameters**: - `challenge_name` (query, required): Hashtag name without `#`, e.g. `fyp` or `tiktokmademebuyit`. [example: `fyp`] ```bash curl "https://api.tiktokapi.io/v1/challenge/info?challenge_name=fyp" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/challenge/info?challenge_name=fyp", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get videos under a hashtag (`GET /v1/challenge/posts`) - **Documentation URL**: https://tiktokapi.io/docs/challenge-posts - **Cost**: 2 Credits / video (min 10 Credits) ($0.20 / 1K videos) - **Description**: Paginated list of videos tagged with a hashtag (`data.videos`), including no-watermark video URLs and engagement stats. Pass `cid` (or `challenge_id`) obtained from `/v1/challenge/info`. - **Parameters**: - `cid` (query, required): Numeric hashtag ID (`data.id` from `/v1/challenge/info`; `challenge_id` is also accepted). [example: `42164`] - `count` (query, optional): Number of videos per page (max 30). [example: `20`] - `cursor` (query, optional): Pagination cursor (`0` for first page, then pass `data.cursor`). [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/challenge/posts?cid=42164" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/challenge/posts?cid=42164", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get sound / music track detail (`GET /v1/music/info`) - **Documentation URL**: https://tiktokapi.io/docs/music-info - **Cost**: 10 Credits / request ($1.00 / 1K requests) - **Description**: Retrieve metadata for a TikTok sound or original audio track (`data.id`, `data.title`, `data.author`, `data.play` MP3 URL, `data.video_count`). - **Parameters**: - `url` (query, required): TikTok music URL or numeric music ID. [example: `7231338505431288622`] ```bash curl "https://api.tiktokapi.io/v1/music/info?url=7231338505431288622" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/music/info?url=7231338505431288622", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get videos using a sound / music track (`GET /v1/music/posts`) - **Documentation URL**: https://tiktokapi.io/docs/music-posts - **Cost**: 2 Credits / video (min 10 Credits) ($0.20 / 1K videos) - **Description**: Paginated list of videos that use a specific sound (`data.videos`), including no-watermark playback streams and stats. - **Parameters**: - `music_id` (query, required): Numeric music ID (`data.id` from `/v1/music/info`). [example: `7231338505431288622`] - `count` (query, optional): Number of videos per page (max 30). [example: `20`] - `cursor` (query, optional): Pagination cursor (`0` for first page, then pass `data.cursor`). [example: `0`] ```bash curl "https://api.tiktokapi.io/v1/music/posts?music_id=7231338505431288622" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/music/posts?music_id=7231338505431288622", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get regional trending video feed (`GET /v1/feed/list`) - **Documentation URL**: https://tiktokapi.io/docs/feed-list - **Cost**: 2 Credits / video (min 10 Credits) ($0.20 / 1K videos) - **Description**: Fetch currently trending TikTok videos for a specific country/region (`data`: array of video objects with direct no-watermark URLs and full engagement statistics). - **Parameters**: - `region` (query, required): Two-letter ISO country code (`US`, `GB`, `DE`, `BR`, `JP`, `KR`, etc.). [example: `US`] - `count` (query, optional): Number of trending videos to return. [example: `20`] ```bash curl "https://api.tiktokapi.io/v1/feed/list?region=US" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/feed/list?region=US", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Search top-performing TikTok Creative Center ads (`GET /v1/ads/top/ads`) - **Documentation URL**: https://tiktokapi.io/docs/ads-top-ads - **Cost**: 10 Credits / ad (min 10 Credits) ($1.00 / 1K ads) - **Description**: Query top-performing commercial ads from TikTok Creative Center (`data.materials`), filtered by country, time window, and ranking metric (`impression`, `ctr`, `like`). - **Parameters**: - `country_code` (query, optional): Two-letter country code (`US`, `GB`, `CA`, `DE`, `JP`, etc.). [example: `US`] - `period` (query, optional): Time range in days (`7`, `30`, or `180`). [example: `7`] - `order_by` (query, optional): Ranking metric: `impression`, `ctr`, or `like`. [example: `impression`] - `page` (query, optional): Page number (starts at `1`). [example: `1`] - `limit` (query, optional): Ads per page (max 20). [example: `20`] ```bash curl "https://api.tiktokapi.io/v1/ads/top/ads" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/ads/top/ads", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` --- ### Get commercial ad detail & 1080p video source (`GET /v1/ads/top/ads/detail`) - **Documentation URL**: https://tiktokapi.io/docs/ads-top-ads-detail - **Cost**: 10 Credits / request ($1.00 / 1K requests) - **Description**: Fetch full creative performance metrics, ad objective, landing page link, brand name, and direct 720p/1080p video source (`data.video_info.video_url`) for a Creative Center ad (`ads_id` or `material_id`). - **Parameters**: - `ads_id` (query, required): Creative Center ad material ID (`id` from `/v1/ads/top/ads`; `material_id` is also accepted). [example: `7206035139393372162`] ```bash curl "https://api.tiktokapi.io/v1/ads/top/ads/detail?ads_id=7206035139393372162" \ -H "x-api-key: tk_your_api_key" ``` ```python import requests res = requests.get( "https://api.tiktokapi.io/v1/ads/top/ads/detail?ads_id=7206035139393372162", headers={"x-api-key": "tk_your_api_key"}, timeout=30, ) print(res.json()) ``` ## 5. Engineering Guides & Tutorials ### Unofficial TikTok API vs Official TikTok API: Complete 2026 Developer Guide - **URL**: https://tiktokapi.io/guides/unofficial-tiktok-api - **Summary**: Technical comparison of the Official TikTok Display/Research API vs Unofficial TikTok Data APIs. Learn how to fetch public profiles, 1080p no-watermark videos, comments, followers, and Creative Center ads without OAuth user login. - **Key Takeaways**: - The Official TikTok Display API requires per-user OAuth 2.0 login and only returns videos owned by the authenticated user — you cannot look up arbitrary public creators, hashtags, or competitors. - The Official TikTok Research API is restricted to vetted non-profit academic institutions and prohibits commercial SaaS, brand monitoring, or AI training use cases. - An independent gateway like TikTokAPI.io provides instant REST access to 17+ public data endpoints (profiles, video search, 1080p unwatermarked streams, comments, followers, and Creative Center ads) with a single API key. - TikTokAPI.io charges only for successful responses (code === 0) starting at $0.20 per 1,000 videos or $0.10 per 1,000 comments/followers, with 2,000 free credits on signup. ### How to Get TikTok Video Metadata & 1080p No-Watermark MP4 via API - **URL**: https://tiktokapi.io/guides/tiktok-api-get-video - **Summary**: Step-by-step developer guide to fetching TikTok video details, engagement statistics, audio tracks, photo carousel slides, and direct 1080p HD no-watermark MP4 URLs via REST API in Python, Node.js, and cURL. - **Key Takeaways**: - Pass any TikTok full URL (tiktok.com/@user/video/123), short share link (vm.tiktok.com / vt.tiktok.com), or raw numeric video ID to GET /v1/videos/detail (or /v1/video/detail). - Set hd=1 (enabled by default) to receive both the fast standard unwatermarked stream (data.play) and the 1080p original HD stream (data.hdplay). - For TikTok Photo Mode (carousel posts), the endpoint automatically populates data.images[] with full-resolution unwatermarked image URLs alongside the background audio track. - Each successful video lookup costs a flat 10 Credits ($0.001 base, or $0.0004 on Business Monthly). Invalid URLs or deleted videos return code != 0 and cost 0 Credits. ### TikTok Search API Guide: Search Videos, Creators & Commercial Ads by Keyword - **URL**: https://tiktokapi.io/guides/tiktok-api-search - **Summary**: Learn how to search TikTok videos, creator accounts, and Creative Center commercial ads by keyword, country region, publish window, and engagement sort order using the TikTokAPI.io REST API. - **Key Takeaways**: - Use GET /v1/videos/search (or /v1/video/search) to search public videos by keyword with filters for region (US, GB, JP, DE, etc.), publish_time (yesterday, 7d, 30d, 90d, 180d), and sort_by (Relevance, Most Liked, Newest). - Every video item returned in search results already includes direct no-watermark MP4 playback links (play) and full engagement counters — no second N+1 lookup required. - Use GET /v1/users/search to discover creators filtered by follower count tier (follower_tier) and verification badge (verified_only). - Use GET /v1/ads/search to query TikTok Creative Center top-performing commercial ads by keyword, country, time period, and ranking metric (impression, ctr, like). ### TikAPI Pricing Breakdown (2026): Real Cost per 1,000 Videos & Pay-As-You-Go Comparison - **URL**: https://tiktokapi.io/guides/tikapi-pricing - **Summary**: Detailed 2026 breakdown of TikAPI (tikapi.io) pricing tiers, per-request costs, page-size multipliers, and monthly subscription lock-in compared with TikTokAPI.io's $0.20/1K videos and never-expiring PAYG credits. - **Key Takeaways**: - Legacy providers price by 'API request' while capping each page at 30 videos or 30 followers — meaning 1,000,000 followers requires ~33,334 requests. - TikTokAPI.io returns up to 200 followers per request and bills transparently by item ($0.20 / 1K videos, $0.10 / 1K comments or followers at base rate; down to $0.08 / 1K videos with Business bonus). - Unlike monthly-only subscriptions where unused quota expires every 30 days, TikTokAPI.io offers both discounted Monthly Subscriptions (+25% to +65% bonus credits) and Never-Expiring Pay-As-You-Go packs. - Migrating from tikapi.io or similar REST wrappers takes less than 5 minutes by pointing your base URL to https://api.tiktokapi.io/v1. ### How to Fix TikTok HTTP 403 Forbidden & Empty Response When Scraping (2026 Guide) - **URL**: https://tiktokapi.io/guides/tiktok-error-403 - **Summary**: Root-cause analysis and fixes for TikTok HTTP 403 Forbidden, status_code 10201, and 0-byte empty responses in Python requests, Playwright, and yt-dlp — including X-Bogus signing, ASN blocks, and expired CDN links. - **Key Takeaways**: - TikTok returns HTTP 403 Forbidden (or HTTP 200 with a 0-byte Content-Length body) when a request lacks valid X-Bogus / X-Argus / msToken signatures or originates from a flagged cloud datacenter ASN (AWS, GCP, Hetzner, DigitalOcean). - When downloading MP4 streams from tiktokcdn.com, HTTP 403 usually means the signed x-expires timestamp in the query string has expired or the Referer / cookie chain does not match the signing session. - Passing your API key in the URL query string (?api_key=...) or using an unverified/disabled account on API gateways also triggers 400/403 responses. - Using TikTokAPI.io (GET https://api.tiktokapi.io/v1/...) offloads signature generation, residential IP rotation, and fresh CDN link signing so your servers never hit TikTok 403 blocks. ### TikTok Ads Library & Creative Center API: Scrape Winning Ads, CTR & Keywords - **URL**: https://tiktokapi.io/guides/tiktok-ads-library-api - **Summary**: Programmatically search the TikTok Creative Center Commercial Ads Library via REST API. Fetch top-performing ad creatives, CTR/CVR tiers, landing page URLs, and trending ad keywords. - **Key Takeaways**: - Unlike TikAPI and most unofficial scrapers that only cover organic posts, TikTokAPI.io includes full access to the TikTok Creative Center Commercial Ads Library (/v1/ads/search, /v1/ads/detail, /v1/ads/keywords). - Search commercial ads by product keyword (e.g., 'bracelet', 'serum', 'ai app'), target country (US, GB, DE, JP, BR, etc.), time window (7, 30, or 180 days), and sort by impression, like, or ctr. - Every ad record includes the clean MP4 creative URL, advertiser brand name, CTA button text, external landing page URL, and performance metrics. - Use GET /v1/ads/keywords to discover breakout commercial search terms and average CTR benchmarks across 60+ countries. ## 6. Competitor Benchmarks ### TikTokAPI.io vs TikAPI.io (tikapi.io) - **URL**: https://tiktokapi.io/compare/tikapi - **Headline**: $0.20 vs $1.00+ per 1,000 videos. - **Summary**: Legacy TikTok API providers lock you into expiring monthly subscriptions and charge per small page. TikTokAPI.io returns up to 33 videos or 200 followers per request, includes 1080p no-watermark video streams out of the box, and cuts your data bill by up to 85%. ### TikTokAPI.io vs Apify TikTok Scrapers (apify.com) - **URL**: https://tiktokapi.io/compare/apify - **Headline**: $0.20 vs $2.50+ per 1,000 videos (zero cold start). - **Summary**: Apify Actors spin up headless Docker containers for every run — adding 15 to 45 seconds of cold-start latency, Compute Unit (CU) overhead, and monthly Actor rental fees. TikTokAPI.io is a synchronous, sub-second REST gateway designed for real-time apps and high-throughput pipelines. ### TikTokAPI.io vs EnsembleData (ensembledata.com) - **URL**: https://tiktokapi.io/compare/ensembledata - **Headline**: $0.20 vs $0.80–$1.50 per 1,000 videos (with 6.6x larger follower pages). - **Summary**: EnsembleData enforces daily resetting unit caps and charges extra units when paginating small 30-item follower lists. TikTokAPI.io delivers up to 200 followers per call, never charges for failed lookups, and offers both monthly plans and never-expiring Pay-As-You-Go credits. ### TikTokAPI.io vs Official TikTok API (developers.tiktok.com) - **URL**: https://tiktokapi.io/compare/official-api - **Headline**: Instant vs 2–8 Weeks to start fetching public TikTok data. - **Summary**: The Official TikTok Display API only lets you read videos of users who manually log in to your app via OAuth, while the Research API is restricted to accredited non-profit universities. TikTokAPI.io gives commercial developers instant key-based access to any public TikTok video, profile, comment thread, and Creative Center ad. ## 7. Frequently Asked Questions ### How does the Unified Credit System work? $1 equals 10,000 Credits (1 Credit = $0.0001). Every endpoint deducts credits based on the data returned, with a minimum floor of 10 Credits ($0.001) per successful request: 2 Credits per video ($0.20 / 1,000 videos), 1 Credit per comment ($0.10 / 1,000 comments), 1 Credit per follower/user ($0.10 / 1,000 users), and 10 Credits ($1.00 / 1,000 calls) for single video 1080p parses or profile lookups. ### Do video endpoints include direct 1080p no-watermark download links? Yes. Both /v1/video/detail (with hd=1) and list endpoints (/v1/video/search, /v1/user/posts, /v1/challenge/posts, /v1/music/posts, /v1/feed/list) return direct CDN links for clean no-watermark MP4 video playback (data.play and data.hdplay), original MP3 audio (data.music), and high-resolution photo carousel slides (data.images). ### Do I need to supply my own proxy IPs, browser fingerprints, or TikTok account cookies? No. TikTokAPI.io manages all residential proxy routing, device signing, and anti-bot token generation at the gateway layer. You simply make standard HTTPS GET requests with your x-api-key header. ### Am I charged when a request fails or is rate-limited? Never. Only HTTP 200 responses with code === 0 deduct credits. Upstream errors, invalid URLs, rate-limited requests (HTTP 429), and gateway timeouts (HTTP 5xx) cost 0 Credits. ### Should I choose a Monthly Plan or Pay-As-You-Go (One-Time Top-Up)? Both credit your account with the exact same bonus credit packages (Starter 250,000 Credits, Pro 1,200,000 Credits, Business 5,000,000 Credits). Pay-As-You-Go top-ups have no recurring billing and your purchased credit balance never expires. Monthly subscriptions save up to 24% more for steady production workloads. ### What are the concurrency and RPM rate limits? Free Trial accounts include 2,000 Credits and 30 RPM. Paid accounts scale from 120 RPM (Starter) and 300 RPM (Pro) up to 600 RPM (Business). Our gateway also runs an adaptive RPM watermark scheduler with multi-key pool failover to prevent HTTP 429 spikes under burst traffic. ### Can I use TikTokAPI.io inside Claude Desktop, Cursor, or No-Code workflows? Yes. Run npx -y @tiktokapi/mcp-server with your TIKTOKAPI_KEY to give Claude Desktop, Cursor, or Windsurf native TikTok search, creator analysis, and video parsing tools. For no-code spreadsheet exports, use our ready-made actors on Apify. ### Is TikTokAPI.io affiliated with TikTok or ByteDance? No. TikTokAPI.io is an independent developer infrastructure provider for publicly available data and is not affiliated with, endorsed by, or sponsored by TikTok or ByteDance Ltd. ### How much does it cost to scrape 100,000 TikTok videos or followers compared with tikapi.io? At 2 Credits per video ($0.20 / 1,000 videos, up to 30 videos per call), 100,000 videos cost $20 base (or $11.50 on the Pro plan). At 1 Credit per follower (up to 200 followers per call), 100,000 followers cost $10 base (or $5.75 on the Pro plan) — up to 80% less than tikapi.io and legacy scraping actors. ### What payment methods are accepted? You can top up instantly from the dashboard using USDT or USDC (Tron, BNB Smart Chain, Ethereum, Solana, Arbitrum, Polygon) as well as BTC, SOL, and BNB, or pay by card via Lemon Squeezy. ### What is your refund policy? Payments made within the last 30 days can be refunded up to the unused purchased balance on your account. Promotional signup credits have no cash value.