{"id":"5c69552e-441f-412d-89c0-0b329a28fef1","entityType":"agent","slug":"clawhub-fetcher-sh-tiktok-api","name":"TikTok API","canonicalUrl":"https://www.xpersona.co/agent/clawhub-fetcher-sh-tiktok-api","canonicalPath":"/agent/clawhub-fetcher-sh-tiktok-api","generatedAt":"2026-10-11T04:34:48.290Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:34:23.008Z","emptyReason":null},"description":"A TikTok API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no login and no app review. Use when the user wants to search TikTok posts by keyword and sort by most-liked or most recent within a date range, look up a post by its share URL or ID, scrape a TikTok profile by @username, pull a user's posts, followers, or followings, fetch a hashtag's posts, pull posts using a specific sound/music track, get posts from a location, or read a post's comments and comment replies. Also covers TikTok trend tracking, hashtag monitoring, influencer discovery, competitor content analysis, and TikTok data pipelines without official TikTok API access or a scraping browser.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17dcnrbn2f5qhk65dscfdycw98cw0kk:tiktok-api","sourceUrl":"https://clawhub.ai/fetcher-sh/tiktok-api","homepage":"https://clawhub.ai/fetcher-sh/skills/tiktok-api","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/fetcher-sh/tiktok-api","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/fetcher-sh/skills/tiktok-api","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"TikTok API technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:34:23.008Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:34:23.008Z","emptyReason":null},"stars":null,"forks":null,"downloads":1187,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:34:22.997Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T02:34:23.008Z","lastCrawledAt":"2026-10-11T02:34:22.997Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T02:34:22.997Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-08-21T09:42:29.169Z","changelog":"Initial release of the TikTok API alternative for fetcher.sh. - Provides 13 GET endpoints for TikTok data, including keyword search, profile and post lookup, hashtags, sounds, locations, and comment threads. - Flexible pay-per-call pricing ($0.004/call) via x402 (USDC) or prepaid Bearer keys; no TikTok login or app review required. - Supports use cases such as trend tracking, hashtag monitoring, competitor analysis, influencer discovery, and TikTok data pipelines without browser automation. - Includes example curl commands, detailed endpoint explanations, error handling guidance, and links to additional documentation.","fileCount":7,"zipByteSize":12017}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dcnrbn2f5qhk65dscfdycw98cw0kk:tiktok-api","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17dcnrbn2f5qhk65dscfdycw98cw0kk:tiktok-api` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/fetcher-sh/tiktok-api before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T04:34:48.289Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fetcher-sh-tiktok-api/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:34:23.008Z","emptyReason":null},"readme":"Skill: TikTok API\n\nOwner: fetcher-sh\n\nSummary: A TikTok API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no login and no app review. Use when the user wants to search TikTok posts by keyword and sort by most-liked or most recent within a date range, look up a post by its share URL or ID, scrape a TikTok profile by @username, pull a user's posts, followers, or followings, fetch a hashtag's posts, pull posts using a specific sound/music track, get posts from a location, or read a post's comments and comment replies. Also covers TikTok trend tracking, hashtag monitoring, influencer discovery, competitor content analysis, and TikTok data pipelines without official TikTok API access or a scraping browser.\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-08-21T09:42:29.169Z | auto\n\nInitial release of the TikTok API alternative for fetcher.sh.\n\n- Provides 13 GET endpoints for TikTok data, including keyword search, profile and post lookup, hashtags, sounds, locations, and comment threads.\n- Flexible pay-per-call pricing ($0.004/call) via x402 (USDC) or prepaid Bearer keys; no TikTok login or app review required.\n- Supports use cases such as trend tracking, hashtag monitoring, competitor analysis, influencer discovery, and TikTok data pipelines without browser automation.\n- Includes example curl commands, detailed endpoint explanations, error handling guidance, and links to additional documentation.\n\nArchive index:\n\nArchive v0.1.0: 7 files, 12017 bytes\n\nFiles: references/comparison.md (4950b), references/endpoints.md (3168b), references/faq.md (3980b), references/scenarios.md (3778b), skill-card.md (2626b), SKILL.md (8161b), _meta.json (129b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: tiktok-api\ndescription: >-\n  A TikTok API alternative on fetcher.sh — pay-per-call in USDC via x402, or\n  prepaid credits with a Bearer key, no login and no app review. Use when the\n  user wants to search TikTok posts by keyword and sort by most-liked or most\n  recent within a date range, look up a post by its share URL or ID, scrape a\n  TikTok profile by @username, pull a user's posts, followers, or followings,\n  fetch a hashtag's posts, pull posts using a specific sound/music track, get\n  posts from a location, or read a post's comments and comment replies. Also\n  covers TikTok trend tracking, hashtag monitoring, influencer discovery,\n  competitor content analysis, and TikTok data pipelines without official\n  TikTok API access or a scraping browser.\nkeywords:\n  - tiktok\n  - tiktok-api\n  - tiktok-api-alternative\n  - tiktok-data\n  - social-media\n  - social-listening\n  - hashtag-tracking\n  - x402\n  - ai-agent\n---\n\n# TikTok API\n\nTikTok data on demand: keyword post search with sort/date filters, profile\nlookup by handle, followers and followings, hashtag and music/sound feeds,\nlocation-based posts, and comment threads — one plain HTTP GET per call, paid\nas you go. No login, no session cookies, no browser automation, no TikTok\ndeveloper app review.\n\nBase URL: `https://tiktok.fetcher.sh`\n\n## Quick reference\n\n| | |\n| --- | --- |\n| Base URL | `https://tiktok.fetcher.sh` |\n| Auth | `Authorization: Bearer bby_live_...` or x402 (USDC) |\n| Price | $0.004/call (flat) |\n| Endpoints | 13, all `GET` |\n| MCP | `https://tiktok.fetcher.sh/mcp` |\n| Machine-readable | `/openapi.json` · `/llms.txt` · `/skill.md` |\n\n## Which endpoint do I need?\n\n| I want to... | Call |\n| --- | --- |\n| Search posts by keyword (optionally most-liked/recent) | `GET /api/post/search` |\n| Look up a post by its share URL | `GET /api/post?url=...` |\n| Look up a profile by @username | `GET /api/user/handle/{username}` |\n| Get a user's posts, followers, or followings | `GET /api/user/{id}/posts` / `/followers` / `/followings` |\n| Get a post's comments | `GET /api/post/{id}/comments` |\n| Find posts under a hashtag | `GET /api/hashtag/{id}/posts` |\n| Find posts using a specific sound | `GET /api/music/{id}/posts` |\n\nFull param details for every row: [`references/endpoints.md`](references/endpoints.md).\n\n## Authentication\n\nTwo ways to pay, same data — full mechanics in the [`fetcher`\nskill](../fetcher/SKILL.md):\n\n```bash\n# 1. Prepaid credits (recommended — get a key at https://fetcher.sh/topup\n#    or via POST /api/credits/topup, see the fetcher skill)\nexport FETCHER_API_KEY=\"bby_live_xxxxxxxxxxxx\"\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/search?keyword=hello\"\n\n# 2. x402 pay-per-call — omit the header; a GET with no payment returns 402\n#    with machine-readable payment requirements (USDC on Base, Polygon,\n#    Arbitrum, Monad, or Solana). @x402/fetch signs and retries automatically.\n```\n\nEvery response is `{ \"status\": number, \"message\": string, \"data\": ... }`; the\nHTTP status mirrors `status`.\n\n## Endpoints (13 — all GET, $0.004/call)\n\n| Endpoint | What it returns |\n| --- | --- |\n| `/api/post/search` | Posts matching a keyword; sort and date-range filters |\n| `/api/post` | A single post resolved from its share URL |\n| `/api/post/{id}` | A single post by ID |\n| `/api/post/{id}/comments` | A post's comments |\n| `/api/post/{id}/comments/{commentId}/replies` | Replies to a comment |\n| `/api/user/handle/{username}` | Profile by @username |\n| `/api/user/{id}/posts` | A user's posts |\n| `/api/user/{id}/followers` | A user's followers |\n| `/api/user/{id}/followings` | Accounts a user follows |\n| `/api/hashtag/handle/{name}` | Hashtag metadata by name |\n| `/api/hashtag/{id}/posts` | Posts under a hashtag |\n| `/api/music/{id}/posts` | Posts using a sound/music track |\n| `/api/location/{locationId}/posts` | Posts tagged at a location |\n\n`{id}` / `{username}` / `{name}` are path parameters. Optional query params\n(`cursor`, `region`) paginate or geo-scope results; `keyword` (search) and\n`url` (post lookup) are required where they appear.\n\n## Scenarios\n\n**Most liked posts this month:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=ai agent\" -G \\\n  --data-urlencode \"sortType=MOST_LIKED\" \\\n  --data-urlencode \"dateRange=THIS_MONTH\" \\\n  \"https://tiktok.fetcher.sh/api/post/search\"\n```\n\n**Posted yesterday, most recent first:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=crypto payments\" -G \\\n  --data-urlencode \"sortType=DATE_POSTED\" \\\n  --data-urlencode \"dateRange=YESTERDAY\" \\\n  \"https://tiktok.fetcher.sh/api/post/search\"\n```\n\nOther `sortType` values: `RELEVANCE`. Other `dateRange` values: `ALL_TIME`,\n`THIS_WEEK`, `LAST_THREE_MONTHS`, `LAST_SIX_MONTHS`.\n\n**Look up a post by its share URL, or directly by ID:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" -G \\\n  --data-urlencode \"url=https://www.tiktok.com/@username/video/1234567890123456789\" \\\n  \"https://tiktok.fetcher.sh/api/post\"\n\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/1234567890123456789\"\n```\n\n**A post's comments and comment replies:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/1234567890123456789/comments\"\n\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/1234567890123456789/comments/9876543210/replies\"\n```\n\n**A profile by @handle, then its posts, followers, and followings:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/user/handle/khaby.lame\"\n\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/user/6935741396776976390/posts\"\n\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/user/6935741396776976390/followers\"\n```\n\n**A hashtag's metadata, then its posts:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/hashtag/handle/fyp\"\n\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/hashtag/1234567890/posts\"\n```\n\n**Posts using a specific sound, and posts from a location:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/music/1234567890123456789/posts\"\n\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/location/1234567890123456789/posts\"\n```\n\n## MCP\n\n```json\n{\n  \"mcpServers\": {\n    \"tiktok\": {\n      \"url\": \"https://tiktok.fetcher.sh/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer bby_live_...\" }\n    }\n  }\n}\n```\n\nFree: `search_endpoints`, `describe_endpoint`, `check_balance`. Paid:\n`fetch_data` (any endpoint above), `topup_credits`, plus the named shortcut\n`tiktok_post_search`. Drop the `headers` block to pay per call with x402\ninstead — see the [`fetcher` skill](../fetcher/SKILL.md) for the full flow.\n\n## Errors\n\n- `400` — missing/invalid parameter (message names it)\n- `401` — unknown or rotated key\n- `402` — payment required (x402 challenge) or `topup_required` (credits\n  exhausted)\n- `404` — not a priced path\n- No rate limits; no refunds on upstream failures (settlement precedes\n  delivery)\n\n## Reference\n\n- Deep dives: [`references/endpoints.md`](references/endpoints.md) (every\n  param) · [`references/scenarios.md`](references/scenarios.md) (one `curl`\n  per endpoint) · [`references/faq.md`](references/faq.md) ·\n  [`references/comparison.md`](references/comparison.md) (vs. the official\n  TikTok API and a browser scraper)\n- Task guides: [viral post search](../../task-guides/tiktok-viral-post-search.md) ·\n  [profile and followers](../../task-guides/tiktok-profile-and-followers.md)\n- Slash command: [`/tiktok-search`](../../commands/tiktok-search.md)\n- Full agent setup: <https://tiktok.fetcher.sh/skill.md>\n- OpenAPI 3.1 contract: <https://tiktok.fetcher.sh/openapi.json>\n- Condensed catalog: <https://tiktok.fetcher.sh/llms.txt>\n- Payment, credits, and MCP deep dive: [`fetcher` skill](../fetcher/SKILL.md)\n- Site: <https://tiktok.fetcher.sh>\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn72ajfa5w5c1jsrtjnz66f6nx8cwz9b\",\n  \"slug\": \"tiktok-api\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1787305349169\n}\n\nFile v0.1.0:references/comparison.md\n\n---\nname: tiktok-api-comparison\ndescription: How fetcher.sh's TikTok endpoints compare to the official TikTok/Research API and a self-hosted headless-browser scraper, qualitative and scoped to what each actually does.\n---\n\n# TikTok data access — comparing your options\n\nThree ways to get TikTok data programmatically. This is a qualitative\ncomparison of access models, not a pricing sheet — treat any specific\ncompetitor price you see elsewhere as something to verify yourself, not\nsomething repeated here.\n\n## Official TikTok APIs (Display API / Research API)\n\n- Requires a developer account and app review; the Research API additionally\n  requires proof of academic or nonprofit research status for most endpoints.\n- Access is scoped and permissioned per use case — general commercial scraping\n  (arbitrary keyword search, arbitrary profile lookup) isn't the primary\n  target audience the way it is for ad-hoc data pulls.\n- Best fit when you're an approved research institution or a product with an\n  official partnership needing guaranteed, ToS-sanctioned access.\n\n## Headless-browser scraper (self-hosted)\n\n- No API key at all — you drive a real browser (Playwright/Puppeteer) against\n  tiktok.com and parse the DOM or intercepted XHR responses yourself.\n- You own and pay for the infrastructure (proxies, browser fleet, CAPTCHA/\n  device-fingerprint handling) and the maintenance burden when TikTok changes\n  its frontend or signing scheme.\n- No fixed per-call price — cost is your compute + proxy bill, which scales\n  with volume and gets more expensive as anti-bot defenses tighten.\n- Best fit when you need something the same subdomain-per-service model\n  doesn't expose yet, or you're already running scraping infra for other\n  sites and want one more target.\n\n## fetcher.sh (`tiktok.fetcher.sh`)\n\n- No developer account, no OAuth, no app review — authenticate to\n  `tiktok.fetcher.sh` itself with a Bearer key or an x402 payment.\n- Flat $0.004/call across all 13 endpoints (see\n  [`endpoints.md`](endpoints.md)), no monthly minimum, no tier to outgrow.\n- Fixed endpoint set (search, profiles, posts, followers, hashtags, sounds,\n  locations) mirrored across 11 services with the same JSON envelope and the\n  same MCP tool names — one integration pattern reused everywhere.\n- Read-only, on-demand: no webhooks, no streaming, no writes/posting. If you\n  need \"notify me when X happens,\" you poll on a schedule yourself.\n- Best fit when you want ad-hoc or moderate-volume reads without upfront\n  account setup or research-status paperwork, and you're fine treating TikTok\n  as one of several data sources behind the same MCP/REST pattern.\n\n## Named providers to benchmark against\n\nDon't take any provider's framing (including this one) at face value — pull\nthe same data from each and compare the actual response. A few concrete\nstarting points, current as of this writing (verify pricing and limits\nyourself before deciding, since all three change their terms independently\nof this repo):\n\n| Provider | Docs | What to check |\n| --- | --- | --- |\n| TikTok for Developers (Display/Research API) | [developers.tiktok.com](https://developers.tiktok.com/) | Do you actually qualify for the access tier your use case needs? |\n| Apify TikTok Scraper | [apify.com/clockworks/tiktok-scraper](https://apify.com/clockworks/tiktok-scraper) | Does an Actor-based, dataset/export-oriented workflow fit your pipeline better than direct REST? |\n| Bright Data TikTok Scraper API | [docs.brightdata.com/datasets/scrapers/tiktok/introduction](https://docs.brightdata.com/datasets/scrapers/tiktok/introduction) | Do you need bulk async collection (1000s of URLs) more than single-call reads? |\n\n## Build your own comparison\n\nPick one fixed test — the same profile, the same search keyword, the same\nvideo ID — and run it against fetcher.sh and whichever provider above is a\ncandidate. Record, per provider:\n\n- Which required fields actually came back (not just which fields the docs\n  promise)\n- Cost for the exact rows you kept, after discarding anything you didn't need\n- Time from request to usable JSON\n- What happens on the second and third call — does pagination stay stable,\n  does a cached/rate-limited path kick in, does the price change\n\nA five-minute test like this is worth more than any comparison table,\nincluding this one.\n\n## Quick decision guide\n\n| Need | Pick |\n| --- | --- |\n| Approved academic/nonprofit research with official data access | Official Research API |\n| One-off script, no account setup, pay only for what you call | fetcher.sh |\n| Already running scraping infra, need something fetcher.sh doesn't expose | Headless browser |\n| Same integration pattern across TikTok, X, Instagram, Reddit, etc. | fetcher.sh |\n\n## See also\n\n- [`endpoints.md`](endpoints.md) — full parameter reference\n- [`scenarios.md`](scenarios.md) — worked `curl` examples\n- [`faq.md`](faq.md) — task-oriented \"how do I...\" answers\n\nFile v0.1.0:references/endpoints.md\n\n---\nname: tiktok-api-endpoints\ndescription: Full parameter reference for every TikTok endpoint on tiktok.fetcher.sh — path params, query params, required flags, and enum values, straight from the live OpenAPI contract.\n---\n\n# TikTok — full endpoint reference\n\nBase URL: `https://tiktok.fetcher.sh`. All 13 endpoints are `GET`,\nauthenticated with either `Authorization: Bearer bby_live_...` (credits) or\nan x402 payment — see [`SKILL.md`](../SKILL.md) for the payment flow. Path\nparameters are written as `{param}`; substitute the real value. `?` marks an\noptional query param. Every endpoint on this host is a flat $0.004/call.\n\nThis file lists every parameter that exists. It does not describe response\nfields — the response shape is generated at request time from the live\nhandlers, so the authoritative machine-readable version is always\n[`/openapi.json`](https://tiktok.fetcher.sh/openapi.json). Treat any field\nname you haven't seen in an actual response as unverified.\n\n## Search\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/post/search` | `keyword` (required) · `cursor`? · `region`? · `sortType`? (`RELEVANCE`, `MOST_LIKED`, `DATE_POSTED`) · `dateRange`? (`ALL_TIME`, `YESTERDAY`, `THIS_WEEK`, `THIS_MONTH`, `LAST_THREE_MONTHS`, `LAST_SIX_MONTHS`) |\n\nThis is the hero endpoint — `sortType=MOST_LIKED` plus a `dateRange` is the\ncombination for a \"what's viral\" query; leave both unset for TikTok's default\nrelevance ranking.\n\n## Profiles\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/user/handle/{username}` | none |\n\nReturns the numeric user ID needed by every `/api/user/{id}/...` endpoint\nbelow.\n\n## Users\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/user/{id}/posts` | `region`? · `cursor`? |\n| `/api/user/{id}/followers` | `cursor`? |\n| `/api/user/{id}/followings` | `cursor`? |\n\n`{id}` is the numeric ID from the handle lookup, not the `@username`.\n\n## Posts\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/post` | `url` (required) |\n| `/api/post/{id}` | `region`? |\n| `/api/post/{id}/comments` | `cursor`? |\n| `/api/post/{id}/comments/{commentId}/replies` | `cursor`? |\n\n`/api/post` takes a full TikTok video URL directly — useful when you have a\nlink but not the numeric video ID. `/api/post/{id}` needs just the ID (the\nnumber in the URL). `{commentId}` for replies comes from a comment object\nreturned by `/api/post/{id}/comments`.\n\n## Hashtags, sounds, and locations\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/hashtag/handle/{name}` | none |\n| `/api/hashtag/{id}/posts` | `region`? · `cursor`? |\n| `/api/music/{id}/posts` | `region`? · `cursor`? |\n| `/api/location/{locationId}/posts` | `cursor`? · `region`? |\n\n`/api/hashtag/handle/{name}` resolves a hashtag name (no `#`) to the numeric\nID needed by `/api/hashtag/{id}/posts`. `region` on any endpoint is a 2-letter\ncountry code (e.g. `US`) and filters/localizes results where TikTok supports\nit — it's optional everywhere it appears.\n\n## See also\n\n- [`scenarios.md`](scenarios.md) — one worked `curl` per endpoint\n- [`faq.md`](faq.md) — task-oriented \"how do I...\" answers\n- [`comparison.md`](comparison.md) — fetcher.sh vs. the official TikTok API vs. a browser scraper\n\nFile v0.1.0:references/faq.md\n\n---\nname: tiktok-api-faq\ndescription: Frequently asked questions about the TikTok API on fetcher.sh — viral search, followers, monitoring, and rate limits, answered with exact endpoints.\n---\n\n# TikTok API alternative — FAQ\n\n## Getting started\n\n### Do I need a TikTok developer account or app review?\n\nNo. `tiktok.fetcher.sh` is a separate read-only proxy — you authenticate to\n*it*, not to TikTok. No developer account, no app review.\n\n### What payment methods are supported?\n\nPrepaid credits (`Authorization: Bearer bby_live_...`) or x402 micropayments\nin USDC on Base, Polygon, Arbitrum, Monad, or Solana — see the [`fetcher`\nskill](../../fetcher/SKILL.md) for setup.\n\n### Is there a rate limit?\n\nNo fixed per-minute cap enforced by fetcher.sh itself — cost is the limiter:\neach call is billed individually (credits or x402), so throughput is bounded\nby your budget and by the upstream page latency, not by a quota.\n\n## Search and discovery\n\n### How do I find viral or trending posts for a keyword?\n\n`GET /api/post/search?keyword=...&sortType=MOST_LIKED&dateRange=THIS_WEEK`\n(or `THIS_MONTH`) on `tiktok.fetcher.sh`. See\n[`scenarios.md`](scenarios.md).\n\n### Can I filter search by video duration or resolution?\n\nNo — `/api/post/search` only exposes `sortType`, `dateRange`, and `region`.\nThere's no duration or resolution filter on this host; you'd have to filter\nclient-side using fields returned in the response.\n\n### How do I look up a post if I only have the TikTok link, not the ID?\n\n`GET /api/post?url=<the full tiktok.com URL>` — no need to parse the video ID\nout of the URL yourself.\n\n### How do I find all posts using a specific sound?\n\n`GET /api/music/{id}/posts`, where `{id}` is the sound's numeric ID (visible\nin the sound's TikTok URL).\n\n## Profiles and followers\n\n### How do I get a creator's follower list?\n\n`GET /api/user/{id}/followers`, where `{id}` is the numeric ID from\n`GET /api/user/handle/{username}`. Paginate with the returned `cursor` until\nthe response stops returning one.\n\n### Can I export followers to CSV directly?\n\nNot server-side. Fetcher.sh returns JSON; paginate through\n`/api/user/{id}/followers` and write the pages to a CSV yourself. There's no\nbuilt-in export job.\n\n### Can I get a user's liked posts?\n\nNo — there's no liked-posts endpoint on this host, only `/api/user/{id}/posts`\n(what they posted). TikTok itself also hides most accounts' likes tab by\ndefault, which is part of why it isn't exposed here.\n\n## Comments\n\n### How do I get comments on a video, including replies?\n\n`GET /api/post/{id}/comments` for top-level comments, then\n`GET /api/post/{id}/comments/{commentId}/replies` for the replies under a\nspecific comment.\n\n## Monitoring and regional scope\n\n### How do I monitor a hashtag for new posts?\n\nThere's no webhook or streaming endpoint. Poll `/api/hashtag/{id}/posts` (or\n`/api/post/search` with `sortType=DATE_POSTED`) on a schedule and diff\nagainst the post IDs you've already seen.\n\n### Does `region` filter results to one country?\n\nWhere it's accepted (search, hashtag/music/location posts, user posts),\n`region` is a 2-letter country code that scopes/localizes the underlying\nTikTok request — it's optional everywhere it appears, not required.\n\n## Discovery and reference\n\n### Can an agent discover these endpoints without reading this file?\n\nYes — `tiktok.fetcher.sh/mcp` exposes `search_endpoints`, `describe_endpoint`,\nand `fetch_data` as MCP tools, so an MCP-connected agent can explore the API\nlive instead of relying on this document.\n\n### Where's the authoritative schema if this doc goes stale?\n\n`https://tiktok.fetcher.sh/openapi.json` and `https://tiktok.fetcher.sh/llms.txt`\nare generated from the live route handlers and always match production.\n\n## See also\n\n- [`endpoints.md`](endpoints.md) — full parameter reference\n- [`scenarios.md`](scenarios.md) — worked `curl` examples\n- [`comparison.md`](comparison.md) — fetcher.sh vs. the official TikTok API vs. a browser scraper\n\nFile v0.1.0:references/scenarios.md\n\n---\nname: tiktok-api-scenarios\ndescription: Worked curl examples for every TikTok endpoint on tiktok.fetcher.sh, one per endpoint, including pagination.\n---\n\n# TikTok — full scenario cookbook\n\nEvery call below assumes:\n\n```bash\nexport FETCHER_API_KEY=\"bby_live_xxxxxxxxxxxx\"\n```\n\nSwap the `curl -H \"Authorization: Bearer $FETCHER_API_KEY\"` prefix for a bare\n`curl` if you're paying per call with x402 instead — see the [`fetcher`\nskill](../../fetcher/SKILL.md).\n\n## Search\n\n**Keyword search, default relevance ranking:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=matcha latte\" -G \\\n  \"https://tiktok.fetcher.sh/api/post/search\"\n```\n\n**Most-liked posts this month:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=ai agents\" -G \\\n  --data-urlencode \"sortType=MOST_LIKED\" \\\n  --data-urlencode \"dateRange=THIS_MONTH\" \\\n  \"https://tiktok.fetcher.sh/api/post/search\"\n```\n\n**Region-scoped search with pagination:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=streetwear\" -G \\\n  --data-urlencode \"region=US\" \\\n  --data-urlencode \"cursor=<cursor from previous response>\" \\\n  \"https://tiktok.fetcher.sh/api/post/search\"\n```\n\n## Profiles\n\n**Resolve a profile by handle:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/user/handle/khaby.lame\"\n```\n\n## Users\n\n**A user's posts:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/user/6820094808943265798/posts\"\n```\n\n**A user's followers, paginated:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/user/6820094808943265798/followers\"\n\n# next page\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"cursor=<cursor from previous response>\" -G \\\n  \"https://tiktok.fetcher.sh/api/user/6820094808943265798/followers\"\n```\n\n**Accounts a user follows:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/user/6820094808943265798/followings\"\n```\n\n## Posts\n\n**Look up a post by URL (no need to extract the ID yourself):**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"url=https://www.tiktok.com/@khaby.lame/video/7137423965982686469\" -G \\\n  \"https://tiktok.fetcher.sh/api/post\"\n```\n\n**Look up a post by numeric ID:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/7137423965982686469\"\n```\n\n**A post's comments:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/7137423965982686469/comments\"\n```\n\n**Replies to a specific comment:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/7137423965982686469/comments/<commentId>/replies\"\n```\n\n## Hashtags, sounds, and locations\n\n**Resolve a hashtag to its numeric ID:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/hashtag/handle/fyp\"\n```\n\n**Posts under a hashtag:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/hashtag/<hashtagId>/posts\"\n```\n\n**Posts using a specific sound:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/music/<musicId>/posts\"\n```\n\n**Posts tagged at a location:**\n\n```bash\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/location/<locationId>/posts\"\n```\n\n## See also\n\n- [`endpoints.md`](endpoints.md) — full parameter reference\n- [`faq.md`](faq.md) — task-oriented \"how do I...\" answers\n- [`comparison.md`](comparison.md) — fetcher.sh vs. the official TikTok API vs. a browser scraper\n\nFile v0.1.0:skill-card.md\n\n## Description:\n\nGuides agents through using fetcher.sh's paid, read-only TikTok data API for keyword search, profile and post lookup, followers, hashtags, sounds, locations, and comments.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fetcher-sh](https://clawhub.ai/user/fetcher-sh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and agent builders use this skill to select TikTok data endpoints, form authenticated GET requests, and collect JSON data for trend tracking, hashtag monitoring, profile analysis, and data pipelines.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Requests send TikTok search terms, profile or post IDs, and API or payment credentials to fetcher.sh.\n\nMitigation: Confirm the data-sharing posture before installation and keep Bearer keys or x402 payment credentials scoped and protected.\n\nRisk: Each paid API call can consume prepaid credits or trigger x402 payment.\n\nMitigation: Use budget controls, monitor balances, and test with low-volume calls before running automated collection.\n\nRisk: Collected TikTok followers, comments, and monitoring data may carry terms, privacy, or compliance obligations.\n\nMitigation: Review TikTok terms and applicable privacy requirements before collecting or storing social-media data.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/fetcher-sh/skills/tiktok-api)\n- [Server-Resolved GitHub Provenance](https://github.com/fetcher-sh/fetcher-skills/tree/main/skills/tiktok-api)\n- [TikTok API Endpoint Reference](references/endpoints.md)\n- [TikTok Scenario Cookbook](references/scenarios.md)\n- [TikTok API FAQ](references/faq.md)\n- [TikTok Data Access Comparison](references/comparison.md)\n- [OpenAPI 3.1 Contract](https://tiktok.fetcher.sh/openapi.json)\n- [Condensed Agent Catalog](https://tiktok.fetcher.sh/llms.txt)\n- [Full Agent Setup](https://tiktok.fetcher.sh/skill.md)\n- [Service Site](https://tiktok.fetcher.sh)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, code]\n\n**Output Format:** [Markdown with inline bash, JSON, and endpoint examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces read-only API usage guidance; API responses are JSON from fetcher.sh.]\n\n## Skill Version(s):\n\n0.1.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: TikTok API Owner: fetcher-sh Summary: A TikTok API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no login and no app review. Use when the user wants to search TikTok posts by keyword and sort by most-liked or most recent within a date range, look up a post by its share URL or ID, scrape a TikTok profile by @username, pull a user's posts, followers, or followin","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"curl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\"},{"language":"bash","snippet":"# 1. Prepaid credits (recommended — get a key at https://fetcher.sh/topup\n#    or via POST /api/credits/topup, see the fetcher skill)\nexport FETCHER_API_KEY=\"bby_live_xxxxxxxxxxxx\"\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/search?keyword=hello\"\n\n# 2. x402 pay-per-call — omit the header; a GET with no payment returns 402\n#    with machine-readable payment requirements (USDC on Base, Polygon,\n#    Arbitrum, Monad, or Solana). @x402/fetch signs and retries automatically."},{"language":"bash","snippet":"curl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=ai agent\" -G \\\n  --data-urlencode \"sortType=MOST_LIKED\" \\\n  --data-urlencode \"dateRange=THIS_MONTH\" \\"},{"language":"bash","snippet":"curl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=ai agent\" -G \\\n  --data-urlencode \"sortType=MOST_LIKED\" \\\n  --data-urlencode \"dateRange=THIS_MONTH\" \\\n  \"https://tiktok.fetcher.sh/api/post/search\""},{"language":"bash","snippet":"curl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=crypto payments\" -G \\\n  --data-urlencode \"sortType=DATE_POSTED\" \\\n  --data-urlencode \"dateRange=YESTERDAY\" \\"},{"language":"bash","snippet":"curl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  --data-urlencode \"keyword=crypto payments\" -G \\\n  --data-urlencode \"sortType=DATE_POSTED\" \\\n  --data-urlencode \"dateRange=YESTERDAY\" \\\n  \"https://tiktok.fetcher.sh/api/post/search\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: tiktok-api\ndescription: >-\n  A TikTok API alternative on fetcher.sh — pay-per-call in USDC via x402, or\n  prepaid credits with a Bearer key, no login and no app review. Use when the\n  user wants to search TikTok posts by keyword and sort by most-liked or most\n  recent within a date range, look up a post by its share URL or ID, scrape a\n  TikTok profile by @username, pull a user's posts, followers, or followings,\n  fetch a hashtag's posts, pull posts using a specific sound/music track, get\n  posts from a location, or read a post's comments and comment replies. Also\n  covers TikTok trend tracking, hashtag monitoring, influencer discovery,\n  competitor content analysis, and TikTok data pipelines without official\n  TikTok API access or a scraping browser.\nkeywords:\n  - tiktok\n  - tiktok-api\n  - tiktok-api-alternative\n  - tiktok-data\n  - social-media\n  - social-listening\n  - hashtag-tracking\n  - x402\n  - ai-agent\n---\n\n# TikTok API\n\nTikTok data on demand: keyword post search with sort/date filters, profile\nlookup by handle, followers and followings, hashtag and music/sound feeds,\nlocation-based posts, and comment threads — one plain HTTP GET per call, paid\nas you go. No login, no session cookies, no browser automation, no TikTok\ndeveloper app review.\n\nBase URL: `https://tiktok.fetcher.sh`\n\n## Quick reference\n\n| | |\n| --- | --- |\n| Base URL | `https://tiktok.fetcher.sh` |\n| Auth | `Authorization: Bearer bby_live_...` or x402 (USDC) |\n| Price | $0.004/call (flat) |\n| Endpoints | 13, all `GET` |\n| MCP | `https://tiktok.fetcher.sh/mcp` |\n| Machine-readable | `/openapi.json` · `/llms.txt` · `/skill.md` |\n\n## Which endpoint do I need?\n\n| I want to... | Call |\n| --- | --- |\n| Search posts by keyword (optionally most-liked/recent) | `GET /api/post/search` |\n| Look up a post by its share URL | `GET /api/post?url=...` |\n| Look up a profile by @username | `GET /api/user/handle/{username}` |\n| Get a user's posts, followers, or followings | `GET /api/user/{id}/posts` / `/followers` / `/followings` |\n| Get a post's comments | `GET /api/post/{id}/comments` |\n| Find posts under a hashtag | `GET /api/hashtag/{id}/posts` |\n| Find posts using a specific sound | `GET /api/music/{id}/posts` |\n\nFull param details for every row: [`references/endpoints.md`](references/endpoints.md).\n\n## Authentication\n\nTwo ways to pay, same data — full mechanics in the [`fetcher`\nskill](../fetcher/SKILL.md):\n\n```bash\n# 1. Prepaid credits (recommended — get a key at https://fetcher.sh/topup\n#    or via POST /api/credits/topup, see the fetcher skill)\nexport FETCHER_API_KEY=\"bby_live_xxxxxxxxxxxx\"\ncurl -H \"Authorization: Bearer $FETCHER_API_KEY\" \\\n  \"https://tiktok.fetcher.sh/api/post/search?keyword=hello\"\n\n# 2. x402 pay-per-call — omit the header; a GET with no payment returns 402\n#    with machine-readable payment requirements (USDC on Base, Polygon,\n#    Arbitrum, Monad, or Solana). @x402/fetch signs and retries automatically.\n```\n\nEvery response is `{ \"status\": number, \"message\": s"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn72ajfa5w5c1jsrtjnz66f6nx8cwz9b\",\n  \"slug\": \"tiktok-api\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1787305349169\n}"},{"path":"references/comparison.md","content":"---\nname: tiktok-api-comparison\ndescription: How fetcher.sh's TikTok endpoints compare to the official TikTok/Research API and a self-hosted headless-browser scraper, qualitative and scoped to what each actually does.\n---\n\n# TikTok data access — comparing your options\n\nThree ways to get TikTok data programmatically. This is a qualitative\ncomparison of access models, not a pricing sheet — treat any specific\ncompetitor price you see elsewhere as something to verify yourself, not\nsomething repeated here.\n\n## Official TikTok APIs (Display API / Research API)\n\n- Requires a developer account and app review; the Research API additionally\n  requires proof of academic or nonprofit research status for most endpoints.\n- Access is scoped and permissioned per use case — general commercial scraping\n  (arbitrary keyword search, arbitrary profile lookup) isn't the primary\n  target audience the way it is for ad-hoc data pulls.\n- Best fit when you're an approved research institution or a product with an\n  official partnership needing guaranteed, ToS-sanctioned access.\n\n## Headless-browser scraper (self-hosted)\n\n- No API key at all — you drive a real browser (Playwright/Puppeteer) against\n  tiktok.com and parse the DOM or intercepted XHR responses yourself.\n- You own and pay for the infrastructure (proxies, browser fleet, CAPTCHA/\n  device-fingerprint handling) and the maintenance burden when TikTok changes\n  its frontend or signing scheme.\n- No fixed per-call price — cost is your compute + proxy bill, which scales\n  with volume and gets more expensive as anti-bot defenses tighten.\n- Best fit when you need something the same subdomain-per-service model\n  doesn't expose yet, or you're already running scraping infra for other\n  sites and want one more target.\n\n## fetcher.sh (`tiktok.fetcher.sh`)\n\n- No developer account, no OAuth, no app review — authenticate to\n  `tiktok.fetcher.sh` itself with a Bearer key or an x402 payment.\n- Flat $0.004/call across all 13 endpoints (see\n  [`endpoints.md`](endpoints.md)), no monthly minimum, no tier to outgrow.\n- Fixed endpoint set (search, profiles, posts, followers, hashtags, sounds,\n  locations) mirrored across 11 services with the same JSON envelope and the\n  same MCP tool names — one integration pattern reused everywhere.\n- Read-only, on-demand: no webhooks, no streaming, no writes/posting. If you\n  need \"notify me when X happens,\" you poll on a schedule yourself.\n- Best fit when you want ad-hoc or moderate-volume reads without upfront\n  account setup or research-status paperwork, and you're fine treating TikTok\n  as one of several data sources behind the same MCP/REST pattern.\n\n## Named providers to benchmark against\n\nDon't take any provider's framing (including this one) at face value — pull\nthe same data from each and compare the actual response. A few concrete\nstarting points, current as of this writing (verify pricing and limits\nyourself before deciding, since all three change their terms independently\nof this repo):\n\n| "},{"path":"references/endpoints.md","content":"---\nname: tiktok-api-endpoints\ndescription: Full parameter reference for every TikTok endpoint on tiktok.fetcher.sh — path params, query params, required flags, and enum values, straight from the live OpenAPI contract.\n---\n\n# TikTok — full endpoint reference\n\nBase URL: `https://tiktok.fetcher.sh`. All 13 endpoints are `GET`,\nauthenticated with either `Authorization: Bearer bby_live_...` (credits) or\nan x402 payment — see [`SKILL.md`](../SKILL.md) for the payment flow. Path\nparameters are written as `{param}`; substitute the real value. `?` marks an\noptional query param. Every endpoint on this host is a flat $0.004/call.\n\nThis file lists every parameter that exists. It does not describe response\nfields — the response shape is generated at request time from the live\nhandlers, so the authoritative machine-readable version is always\n[`/openapi.json`](https://tiktok.fetcher.sh/openapi.json). Treat any field\nname you haven't seen in an actual response as unverified.\n\n## Search\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/post/search` | `keyword` (required) · `cursor`? · `region`? · `sortType`? (`RELEVANCE`, `MOST_LIKED`, `DATE_POSTED`) · `dateRange`? (`ALL_TIME`, `YESTERDAY`, `THIS_WEEK`, `THIS_MONTH`, `LAST_THREE_MONTHS`, `LAST_SIX_MONTHS`) |\n\nThis is the hero endpoint — `sortType=MOST_LIKED` plus a `dateRange` is the\ncombination for a \"what's viral\" query; leave both unset for TikTok's default\nrelevance ranking.\n\n## Profiles\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/user/handle/{username}` | none |\n\nReturns the numeric user ID needed by every `/api/user/{id}/...` endpoint\nbelow.\n\n## Users\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/user/{id}/posts` | `region`? · `cursor`? |\n| `/api/user/{id}/followers` | `cursor`? |\n| `/api/user/{id}/followings` | `cursor`? |\n\n`{id}` is the numeric ID from the handle lookup, not the `@username`.\n\n## Posts\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/post` | `url` (required) |\n| `/api/post/{id}` | `region`? |\n| `/api/post/{id}/comments` | `cursor`? |\n| `/api/post/{id}/comments/{commentId}/replies` | `cursor`? |\n\n`/api/post` takes a full TikTok video URL directly — useful when you have a\nlink but not the numeric video ID. `/api/post/{id}` needs just the ID (the\nnumber in the URL). `{commentId}` for replies comes from a comment object\nreturned by `/api/post/{id}/comments`.\n\n## Hashtags, sounds, and locations\n\n| Endpoint | Params |\n| --- | --- |\n| `/api/hashtag/handle/{name}` | none |\n| `/api/hashtag/{id}/posts` | `region`? · `cursor`? |\n| `/api/music/{id}/posts` | `region`? · `cursor`? |\n| `/api/location/{locationId}/posts` | `cursor`? · `region`? |\n\n`/api/hashtag/handle/{name}` resolves a hashtag name (no `#`) to the numeric\nID needed by `/api/hashtag/{id}/posts`. `region` on any endpoint is a 2-letter\ncountry code (e.g. `US`) and filters/localizes results where TikTok supports\nit — it's optional everywhere it appears.\n\n## See also\n\n- [`scenarios.md`](scenarios.md) — one worked `curl` per endpoint\n- [`faq.md`](faq."},{"path":"references/faq.md","content":"---\nname: tiktok-api-faq\ndescription: Frequently asked questions about the TikTok API on fetcher.sh — viral search, followers, monitoring, and rate limits, answered with exact endpoints.\n---\n\n# TikTok API alternative — FAQ\n\n## Getting started\n\n### Do I need a TikTok developer account or app review?\n\nNo. `tiktok.fetcher.sh` is a separate read-only proxy — you authenticate to\n*it*, not to TikTok. No developer account, no app review.\n\n### What payment methods are supported?\n\nPrepaid credits (`Authorization: Bearer bby_live_...`) or x402 micropayments\nin USDC on Base, Polygon, Arbitrum, Monad, or Solana — see the [`fetcher`\nskill](../../fetcher/SKILL.md) for setup.\n\n### Is there a rate limit?\n\nNo fixed per-minute cap enforced by fetcher.sh itself — cost is the limiter:\neach call is billed individually (credits or x402), so throughput is bounded\nby your budget and by the upstream page latency, not by a quota.\n\n## Search and discovery\n\n### How do I find viral or trending posts for a keyword?\n\n`GET /api/post/search?keyword=...&sortType=MOST_LIKED&dateRange=THIS_WEEK`\n(or `THIS_MONTH`) on `tiktok.fetcher.sh`. See\n[`scenarios.md`](scenarios.md).\n\n### Can I filter search by video duration or resolution?\n\nNo — `/api/post/search` only exposes `sortType`, `dateRange`, and `region`.\nThere's no duration or resolution filter on this host; you'd have to filter\nclient-side using fields returned in the response.\n\n### How do I look up a post if I only have the TikTok link, not the ID?\n\n`GET /api/post?url=<the full tiktok.com URL>` — no need to parse the video ID\nout of the URL yourself.\n\n### How do I find all posts using a specific sound?\n\n`GET /api/music/{id}/posts`, where `{id}` is the sound's numeric ID (visible\nin the sound's TikTok URL).\n\n## Profiles and followers\n\n### How do I get a creator's follower list?\n\n`GET /api/user/{id}/followers`, where `{id}` is the numeric ID from\n`GET /api/user/handle/{username}`. Paginate with the returned `cursor` until\nthe response stops returning one.\n\n### Can I export followers to CSV directly?\n\nNot server-side. Fetcher.sh returns JSON; paginate through\n`/api/user/{id}/followers` and write the pages to a CSV yourself. There's no\nbuilt-in export job.\n\n### Can I get a user's liked posts?\n\nNo — there's no liked-posts endpoint on this host, only `/api/user/{id}/posts`\n(what they posted). TikTok itself also hides most accounts' likes tab by\ndefault, which is part of why it isn't exposed here.\n\n## Comments\n\n### How do I get comments on a video, including replies?\n\n`GET /api/post/{id}/comments` for top-level comments, then\n`GET /api/post/{id}/comments/{commentId}/replies` for the replies under a\nspecific comment.\n\n## Monitoring and regional scope\n\n### How do I monitor a hashtag for new posts?\n\nThere's no webhook or streaming endpoint. Poll `/api/hashtag/{id}/posts` (or\n`/api/post/search` with `sortType=DATE_POSTED`) on a schedule and diff\nagainst the post IDs you've already seen.\n\n### Does `region` filter results to one country?\n\nWhe"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":2144,"uniquenessScore":36,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T02:34:23.008Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T02:34:23.008Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:34:48.290Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}