HonestHook

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

Home · Docs · Endpoints · youtube/video

youtube/video — one video, with the exact counters

A single YouTube video by id, with view, like and comment counts that are exact rather than rounded. The reference route for anything that needs a real number.

The call

PathGET /api/v1/youtube/video
Catalogue idyoutube/video
Cost1 credit per call. A call that finds nothing costs nothing.
KeyRequired — Authorization: Bearer hk_live_...

Parameters (1)

NameInRequired
idqueryyes

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

⚠️ THE COUNTERS HERE ARE EXACT, AND THAT IS WHY THIS ROUTE MATTERS MORE THAN ITS SIZE SUGGESTS. A real call on 4 October 2026 returned 19,471,718 likes — not 19.4M, not 19,000,000. It comes from the official Data API v3, which publishes the integer. Compare that with `tiktok/post`, where the same field arrives already rounded to 2,000,000 by the platform's own page. Both fields are called `likes` and sit in the same place in the envelope, and only one of them can be subtracted from yesterday's reading to get growth. If you are building a cross-platform metric, this is the asymmetry to design around — not a detail to discover later.

`id` is the video id, the eleven characters from the watch URL — not the URL itself. `tiktok/post` takes a full `url` instead, because that platform's public page is what we read; here we talk to an API that addresses videos by id. The parameter name is the honest signal of which upstream is behind each route.

When counters are exact, the per-field contract starts doing real work: an absent `likes` on this route means the uploader disabled the public like count, and we return absence rather than zero. On a route whose numbers are rounded that distinction is almost cosmetic; here it is the difference between 'hidden' and 'none'.

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 (4)

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/search_suggestions · tiktok/video_screen_text · tiktok/post_transcript · 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