Video info and caption availability

Read a video's details without buying its transcript. This endpoint costs zero credits, including the optional dates lookup. It requires an API key and counts toward your request limit.

GET/api/v1/video/:videoId
NameTypeDescription
videoIdrequiredpath string11-character video ID, not a full URL.
includequery stringSet to dates for publish/upload timestamps, likes, and category. Omit for the base record. No other value is accepted.
bash
curl -H "Authorization: Bearer yvt_live_..." \
  "https://api.youtubevideotranscript.io/api/v1/video/dQw4w9WgXcQ?include=dates"

Base fields

NameTypeDescription
video_id, title, urlstringVideo identity, title, and watch URL.
channel, channel_idstringChannel display name and UC... identifier. channel is a string, not a nested object.
duration_secondsnumberVideo length in seconds.
viewsnumber | nullYouTube's unrounded view count as returned by this lookup. Record your lookup time if comparing readings.
is_livebooleanYouTube's live-content flag.
thumbnail, descriptionstringThumbnail URL and full video description.
keywordsstring[]Creator tags; can be empty.
has_captionsbooleanWhether this lookup found any caption tracks.
caption_tracksarrayEach row has language_code, language_name, and boolean auto_generated. Empty when no tracks were found.

Optional dates, likes, and category

include=dates adds a separate upstream lookup, so request it only when needed. On success the following fields are added at the top level, alongside the base fields:

NameTypeDescription
published_atstringISO publish timestamp supplied by YouTube. Preserve its timezone offset.
uploaded_atstringUpload date; falls back to published_at if no separate upload date is supplied. Equal values do not prove upload and publication happened together.
likesnumber | nullUnrounded like count when supplied. Not included in the base lookup.
categorystring | nullVideo category when supplied.

If this additional lookup fails or cannot supply dates, the base record still succeeds with dates: null; the four fields above are absent. If you do not request dates, neither those fields nor the dates key appears. There is no nested dates object on success.

ts
const res = await fetch(
  "https://api.youtubevideotranscript.io/api/v1/video/dQw4w9WgXcQ?include=dates",
  { headers: { Authorization: `Bearer ${process.env.YVT_API_KEY}` } },
);
if (!res.ok) throw new Error(await res.text());
const info = await res.json();
console.log(info.views, info.caption_tracks);
if ("published_at" in info) {
  console.log(info.published_at, info.likes);
} else {
  console.log("Dates unavailable; base metadata was returned.");
}

GET /transcript/:videoId returns title, author, thumbnail, and other basic metadata when available. It does not include views, likes, dates, or comments. Use this endpoint for details and GET /comments/:videoId for comments. The MCP equivalent is get_video_info with include_dates: true.

Errors

Invalid IDs or include values return 400 bad_request. Restricted or unavailable videos can return 403 forbidden. Missing captions alone do not make video info fail. See Errors for authentication, throttling, and upstream failures.

We use Google Analytics cookies and note which site referred you, so we know how people find us. Nothing personal, nothing sold. See our Privacy Policy.