No-code YouTube API and scraper. Extract video title, channel name and username, channel URL/ID, visibility, upload/publish dates, duration, views, likes, category, description, thumbnail, subtitles/transcript (when available), end screen recommendations, and age-restriction flag—no quotas or limits.
Learn how this template works and how to run it
High-fidelity extractor for a YouTube watch page. It collects rich metadata and the transcript (when available) directly from ytInitialPlayerResponse and YouTubei, then returns a human-readable Markdown plus a structured JSON result and LLM-ready Markdowb.
This template focuses on single-video detail extraction (not channel or search scraping). It’s conceptually similar to tools like Apify’s YouTube Scraper but tailored to our runtime and limited to the watch page scope only.
url (required): YouTube watch URL (e.g., https://www.youtube.com/watch?v=VIDEO_ID or https://youtu.be/VIDEO_ID).variables.waitFor (optional, default 1500): Additional wait in ms before extraction.variables.timeoutMs (optional, default 30000): HTTP/page timeout in ms.🚫 Note: Comments are not fetched by this template.
{
"url": "https://www.youtube.com/watch?v=VIDEO_ID",
"variables": {
"waitFor": 1500,
"timeoutMs": 30000
}
}
{
"title": "Install Claude Code to GitHub (= INSTANT background agent)",
"url": "https://www.youtube.com/watch?v=0kJh4KuJ1nY",
"thumbnail": "https://i.ytimg.com/vi/0kJh4KuJ1nY/maxresdefault.jpg",
"visibility": "Public",
"uploadedBy": "Ian Nuttall",
"uploadedAt": "2025-07-15T08:04:17-07:00",
"publishedAt": "2025-07-15T08:04:17-07:00",
"length": "08:14",
"views": 12213,
"likes": 266,
"category": "People & Blogs",
"description": "If you use GitHub...,
"transcript": "If you're using ...",
"channelName": "Ian Nuttall",
"channelUrl": "http://www.youtube.com/@inuttall",
"channelId": "UC0z38FxOnJjJIN83E7OHZjQ",
"channelUsername": "inuttall",
"isAgeRestricted": false
}
The run produces:
jsonResult tab with the following fields (only present when derivable):
title, url, thumbnail, visibilityuploadedBy, uploadedAt, publishedAt, lengthviews (number), likes (number), category, descriptiontranscript (plain text when captions exist)endscreen (array of { title, url })channelName, channelUrl, channelId, channelUsernameinputChannelUrl (if the input looked like a channel URL)isAgeRestricted (boolean){
"title": "Sample Video",
"url": "https://www.youtube.com/watch?v=...",
"thumbnail": "https://i.ytimg.com/.../maxresdefault.jpg",
"visibility": "Public",
"uploadedBy": "Sample Channel",
"uploadedAt": "2025-01-23",
"publishedAt": "2025-01-23",
"length": "00:12:34",
"views": 12345,
"likes": 678,
"category": "Science & Technology",
"description": "...",
"transcript": "... plain text ...",
"endscreen": [{ "title": "Next video", "url": "https://www.youtube.com/watch?v=..." }],
"channelName": "Sample Channel",
"channelUrl": "https://www.youtube.com/channel/UC...",
"channelId": "UC...",
"channelUsername": "sample",
"isAgeRestricted": false
}
window.ytInitialPlayerResponse (with fallback to HTML parsing for the same object).player with the ANDROID client context to obtain caption tracks without poToken, then fetch the caption XML and convert it to readable text.1 credits per call (see template.json).Ensure your use of scraped data complies with YouTube’s Terms of Service and applicable laws (e.g., GDPR). If unsure, consult legal counsel. See also guidance similar to that discussed on the Apify page linked above.
Get the latest news and updates delivered to your inbox.
© 2026 AnyCrawl. All rights reserved.