TikTok for developers usually comes down to two bad options: an official API that only reads your own account, or a scraper you have to keep alive. You want the data for something else you are building, an agent that answers research questions, an internal dashboard, a pipeline that feeds a model, and you do not want a headless browser and a proxy pool in the middle of it. TokConnect is one HTTP endpoint with 26 tools behind a bearer key, and it returns something no scraper can reach: TikTok's own search-volume numbers.
What you'd ask on day one
Three things people do in the first hour. Every number below came out of these exact calls on 19 September 2026.
Size a niche from Claude Code
Claude CodeUsing tokconnect, search TikTok topics for "ai agents". Show each topic's 7-day search volume, popularity score and video count, and flag the ones with zero videos. Then give me TikTok's autocomplete for "ai agent".
| Topic | 7-day searches | Videos |
|---|---|---|
| AI agent agencies and services | 4,115,441 | 599 |
| AI agents and automation tools | 2,604,097 | 639 |
| ai agents going rogue | 529,934 | 0 |
| ai agents for businesses | 256,376 | 0 |
| building ai agents | 223,867 | 0 |
| What is an ai agent | 72,821 | 0 |
Autocomplete came back with ai agent automation, ai agents for beginners, ai agent builder, ai agent tutorial and ai agent coding. Two calls, two credits.
Data: TikTok Creator Search Insights and TikTok autocomplete via TokConnect, pulled 19 September 2026. Open the snapshot.
List the tools, then call one from Python
Python,mcp package
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
URL = "https://mcp.tokconnect.com/mcp"
HEADERS = {"Authorization": "Bearer ttk_YOUR_KEY"}
async def main():
async with streamablehttp_client(URL, headers=HEADERS) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
print(len(tools.tools), "tools")
r = await session.call_tool(
"search_topics",
{"keyword": "raspberry pi projects", "limit": 10},
)
print(r.content[0].text)
asyncio.run(main())
Prints 26 tools, then the topics as JSON. Trimmed to the first result:
{"queryId": "7668816613126193173",
"queryText": "command line and Raspberry Pi projects",
"popularity": 87,
"searchVolume": 4657670,
"videoCount": 0,
"trend7d": [9495, 105547, 288955, 439580,
1084257, 1601498, 4657670],
"categoryL1": "Science and Technology",
"categoryL2": "Digital"}
searchVolume is searches in the last 7 days, global. videoCount is how many videos TikTok has matched to the topic, and 0 is the content-gap signal. Two more in that response: raspberry pi alternative at 252,125 and insane raspberry pi projects at 58,194, both also at zero videos.
That import path is the Python SDK's 1.x line, which is what most people have. In mcp 2.0 the helper was renamed to streamable_http_client and headers moved onto the httpx client you pass as http_client. Both forms return the same 26 tools.
Data: TokConnect, pulled 19 September 2026. Open the snapshot.
Page through video search
Python, paginationimport json
async def walk(session, keyword, max_pages=2, count=10):
offset, search_id = 0, None
for _ in range(max_pages):
args = {"keyword": keyword, "count": count,
"sort": "relevance", "date": "any", "offset": offset}
if search_id:
args["search_id"] = search_id
page = json.loads(
(await session.call_tool("search_videos", args)).content[0].text
)
yield page["videos"]
if not page["hasMore"]:
return
offset, search_id = page["nextOffset"], page["searchId"]
Run over raspberry pi projects:
- Page 1 asked for 10, returned 7,
hasMore: true,nextOffset: 10,searchId: 20260919043026B455DFDDF5E2C51C2281. First result: 1,154,751 views. - Page 2 with that offset and search id returned 7 more,
nextOffset: 20, and a freshsearchId. First result: 1,727,162 views. No video id appeared on both pages.
Two rules the schema enforces: search_id is required once offset is above 0, and you pass back the searchId from the response you just read. TikTok filters results after ranking them, so a page can be short while hasMore stays true. Count pages, not items. Two calls, two credits.
Data: TikTok search via TokConnect, pulled 19 September 2026. Open the snapshot.
What it replaces
| What you do today | Tool | What it shows | What TokConnect adds |
|---|---|---|---|
| Keep a headless browser alive and refresh a token from cookies | davidteather/TikTok-Api, free, MIT | Trending, user and video feeds over public endpoints. Needs an ms_token and usually proxies | A hosted endpoint with nothing to babysit, and topics with search volume, which the library has no route for |
| Schedule an actor run and download the dataset | Apify TikTok Scraper, from $1.70 per 1,000 results | Profiles, posts, hashtags, comments, delivered as a job | Calls an agent can make mid-conversation, one credit each, no run to wait on |
| Buy records in bulk | Bright Data TikTok Scraper API, 5,000 records a month free, then $1.50 per 1,000 | Thirteen-plus scrapers: posts by keyword or hashtag, comments, Shop | Demand rather than content: what people type before they watch anything |
| Pay for a daily unit allowance | EnsembleData, 50 units a day free, $100 a month for 1,500 a day | Documented endpoints for posts, users, hashtags, search and music | A monthly balance you can spend in one afternoon when you are building |
| Apply for research access and wait | TikTok Research API, free | Keyword video search and comments, 1,000 requests and 100,000 records a day, for approved researchers at qualifying institutions | A key from a sign-in, no institution, no application, and commercial use is not excluded |
| Read your own account through official scopes | TikTok Display API and Business API, free | Only the authenticated account's own videos, or ad campaign data | Everyone else's public data, plus the search numbers TikTok publishes nowhere else |
The pattern across that table: every one of them returns content. None returns demand. Creator Search Insights lives in the TikTok app and at tiktok.com/csi, and neither surface has an export, a history view or an API. That is the gap.
How it fits your week
- Connect once. In Claude Code it is
claude mcp add --transport http tokconnect https://mcp.tokconnect.com/mcp --header "Authorization: Bearer ttk_…". In Cursor, Codex or Gemini CLI it is a four-line block in the config file. Every client is on the connect page, and the Claude Code guide has the full command. - Ask in chat while you design. This is where the exploration happens: which keywords have volume, what the field names are, what an empty result looks like.
- Move the calls you keep into code. Same endpoint, same tools, same key. The
mcpPython package speaks Streamable HTTP, so a cron job is fifteen lines. There is no separate REST surface to learn and no second set of credentials.
Where the numbers come from: topic tools read TikTok's Creator Search Insights, and the video, creator, hashtag, sound and comment tools read ordinary TikTok search. Both are pulled live when you call them, not from a cache we refreshed last week. The 26 tools and what each returns are listed in the TikTok MCP guide.
What it does not do: no posting, no scheduling, no ads, no transcripts, no private or logged-in data. TokConnect is an independent product and is not affiliated with or endorsed by TikTok. If you need to publish to TikTok, that is the Content Posting API and a different problem, covered in the TikTok API map.
Straight answers
Budget against your credit balance: one tool call spends one credit, whatever that call returns, and calls fail once the balance is empty until the monthly refill. A burst can still be throttled upstream, which comes back as a suppressed error; wait about twenty seconds and retry once. Build that retry in and you will not think about it again.
Probably, at some point. It is unofficial data and TikTok changes things. What is different is where the breakage lands. There is no ms_token in your environment, no browser to run headed when the anonymous path stops working, no proxy bill. We do not publish an uptime figure, so do not promise your users one on top of it.
The server reads public, logged-out TikTok data. It does not bypass a login, and it does not touch private data. Courts in the US have repeatedly declined to treat public-web collection as computer fraud, including the Meta v. Bright Data judgment in 2024. That is not the same as TikTok granting permission, and contract claims are their own question. Read TikTok's terms and decide for your own use.
For video listings, go ahead. The parsing is annoying but the data is there, and the scraper guide covers what breaks. The part you cannot scrape is the search-volume number, because it is not in a public page. It is behind a logged-in surface with no export and no API, which is the reason this product exists.
The plan that fits
Starter, $49 a month for 1,000 credits. Count your week in calls, because one call is one credit. A nightly job that runs search_topics across a dozen keywords is about 360 calls a month. Paging five pages of search_videos for four keywords every week adds 80. Comment pulls at 50 per page are two credits per hundred. That leaves most of the allowance for the questions you ask in chat while you are still deciding what to build. Start on Free, which is 100 credits and every tool unlocked, and move up only when the scheduled job outgrows it. Growth at $99 for 3,000 is the next step; the maths for both is on the pricing page.
Guides for developers and agent builders
- TikTok MCP: all 26 tools with their arguments and what each returns, plus how the community servers differ.
- TikTok API: the full map of official and unofficial access paths, so you can rule the wrong ones out fast.
- TikTok search API: search endpoints compared, with the quotas and a runnable example.
- TikTok scraper: what actually breaks in a self-hosted scraper, and what it costs to keep one running.
- Connect Claude Code: the one-line
claude mcp addcommand and how to check the server is healthy. - TikTok automation: which automated actions are allowed and which get an account banned.
Questions developers and agent builders ask
Is there an official TikTok API that returns search volume?
No. TikTok's Research API returns videos and comments to approved academic and non-profit researchers, the Display API returns only the authenticated user's own account, and the Business API returns ad campaign data. None of them expose Creator Search Insights. Neither does the tool itself: there is no export and no history in the app or at tiktok.com/csi. See the API guide for the whole picture.
What are the rate limits?
Your credit balance is the limit you plan against: one tool call spends one credit, whatever it returns. Upstream can still throttle a burst, in which case a call comes back as a suppressed error; wait about twenty seconds and retry. Paging 100 videos at count=20 costs five credits.
Will this break like every other TikTok wrapper?
It can. This is unofficial data and TikTok changes things. The difference is where the breakage lands: there is no ms_token to refresh, no proxy pool and no headless browser in your stack, and a fix ships on our side. We do not publish an uptime number, so do not build a customer-facing SLA on top of one.
Do I need a TikTok account or a login?
No. You need a TokConnect key from app.tokconnect.com and nothing else. The server reads public TikTok data and Creator Search Insights topics; it never touches your account, and TokConnect is not affiliated with TikTok.