HonestHook

Free API key (1,000/mo)Sign in

Home · Docs · Endpoints · tiktok/search_suggestions

tiktok/search_suggestions — what TikTok proposes for a keyword

The suggestions TikTok's own search box offers for a term. The one route in this family that returns no author and no counters, because the upstream answer has neither.

The call

PathGET /api/v1/tiktok/search/suggestions
Catalogue idtiktok/search_suggestions
Cost1 credit per call. A call that finds nothing costs nothing.
KeyRequired — Authorization: Bearer hk_live_...

Parameters (1)

NameInRequired
keywordqueryyes

That list is the whole list, and anything else is ignored in silence. An undeclared parameter is not rejected — it produces no error, no warning and no filtering. Check a parameter against this table before assuming a narrower result came back.

What the parameter list does not tell you

THIS IS A KEYWORD ROUTE, NOT A CONTENT ROUTE. `keyword` goes in and what comes back is what the platform's search box would propose to a person typing it — a read of TikTok's own demand signal, not of any video. It is the cheapest way to find out what a niche is called on that platform before you spend calls looking for it.

⚠️ `author`, `metrics` AND `has_more` ALL COME BACK NULL, on every item, and that is the upstream answer rather than a gap in our parsing. A real call on 4 October 2026 returned 11 suggestions: eleven items, zero author objects, zero counters, and a null `has_more` because there is no second page of a suggestion list. A suggestion is a string the platform offers; it has no publisher and nothing has happened to it yet.

WE RETURN NULL RATHER THAN OMITTING THE FIELDS, and that is deliberate. The envelope keeps its shape across all twelve platforms, so a client that reads `items[].author?.handle` does not crash here and does not need a special case — it reads null and knows the answer is 'this route has no author', which is information. A missing key would have forced every caller to ask which route it was talking to.

Eleven is not a cap we set. The route returns what the platform offered for that term; another keyword returns another count, and `limit` is not declared because the route does not read one.

Measured caveats (1)

An empty `metrics` is a deliberate absence, not a zero

Four of these routes return `metrics: {}` on every item: `tiktok/video_screen_text`, `youtube/channel/shorts`, `youtube/channel/lives` and — on the item level — several others. That empty object means the upstream listing did not carry counters, so we have nothing to report. It does NOT mean the counts are zero. The distinction is the whole point: a `0` would be a measurement we did not take, and reading `metrics.likes` as absent rather than as none is the difference between 'unknown' and 'nobody liked it'. When you need the counters for a video, ask `youtube/video` for it by id — there they are exact.

Source: Real production calls on 4 October 2026: 20 items from `tiktok/video/screen-text`, 48 from `youtube/channel/shorts` and 1 from `youtube/channel/lives`, every one with `metrics: {}`.

Why there is no success body on this page

The 200 body for this endpoint is not transcribed here. Reading it needs a client key, and there is no client key on the machine these pages were built from — internal keys exist only as hashes, by design. An example we never received would look exactly like one we did, so instead of composing one, the response shape is documented field by field on the schema pages below. Those are generated from the contract and tested against it in both directions; an invented example would be tested by nothing.

Response shapes (2)

Error codes (8)

Every one of them carries the same body shape: ApiError. The error value is a stable string you can branch on — branch on that, never on the message text.

400 · 401 · 402 · 404 · 405 · 451 · 503 · 502

Machine-readable

This endpoint is in /openapi.json (OpenAPI 3.1), with its cost on the operation itself. If you are generating a client, use the spec rather than this page — and note that the spec is filtered by what is switched on right now, so it is the better answer to "can I call this today".

The other 18 endpoint pages

archive/trends · archive/movers · archive/coverage · profile/history · youtube/channel · pinterest/boards · bluesky/post · tiktok/post · tiktok/video_screen_text · tiktok/post_transcript · youtube/video · youtube/channel/videos · youtube/playlist · youtube/channel/shorts · youtube/channel/lives · youtube/channel/playlists · youtube/video/comments · youtube/video/comment/replies

← All endpoint pages · Recipes · Schemas · Full docs