Find videos matching your research topics.
YouTube Scraper
Collect YouTube video and channel data from search terms or URLs, including titles, views and publication dates.
What you can do
Compare video metadata and public engagement.
Build a structured catalogue for reporting.
Set your sources
Open the scraper and enter your own URLs, search terms and limits.
Review & run
Check the cost estimate and confirm the task. Follow its progress in your account.
Use your data
Explore saved results and export CSV, JSON or XLSX. Downloads of saved results are free.
Sample data & output fields
These example values demonstrate the data shape; they are not a live scraper result. Available fields depend on the source, selected options and upstream data.
[
{
"title": "Example title",
"id": "example-001",
"url": "https://example.com/result",
"viewCount": 100,
"date": "2026-01-15T12:00:00Z"
}
]| Field | Type | Description |
|---|---|---|
title | string | The title of the YouTube video |
id | string | The unique YouTube video ID |
url | string | The full URL of the video |
viewCount | number | The number of views on the video |
date | string | The publish date of the video |
Example input
This is the configured parser input. Replace the example sources with your own and review all limits before running.
{
"searchQueries": [
"web scraping tutorials"
],
"maxResults": 10,
"maxResultsShorts": 5,
"maxResultStreams": 0,
"startUrls": [
{
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
],
"transcriptionAndSubtitle": "NONE",
"subtitlesLanguage": "en",
"subtitlesFormat": "srt",
"sortingOrder": "relevance",
"dateFilter": "month",
"videoType": "video",
"lengthFilter": "between420",
"oldestPostDate": "2024-01-01",
"sortVideosBy": "NEWEST",
"aiVideoDescription": false,
"aiVideoSummary": false
}Explore input fields
| Field | Type | Notes |
|---|---|---|
searchQueries | array | Enter search terms just like you would enter it in YouTube's search bar. |
maxResults | integer | Limit the number of videos you want to crawl. If you scrape a channel, acts as a limit for regular videos. |
maxResultsShorts | integer | Limit the number of Shorts videos you want to crawl. |
maxResultStreams | integer | Limit the number of Stream videos you want to crawl. |
startUrls | array | Enter a link to a YouTube video , channel , playlist , hashtag or search results page . You can also import a CSV file or Google Sheet with a list of URLs. Note: Input from Search term will be ignored when using this option. If you only want to scrape… |
transcriptionAndSubtitle | string | Choose whether to download subtitles, transcribe the video using speech-to-text AI, or both. Leave empty to skip subtitles and transcription. Subtitles are added to the dataset items, while transcripts are stored in the key-value store |
subtitlesLanguage | string | Language to download subtitles in. Note: a subtitle-downloading option must be selected in Transcription & subtitles for this to work. |
subtitlesFormat | string | Select in what format you want to download subtitles |
sortingOrder | string | Select Youtube sorting parameter for search |
dateFilter | string | Select Youtube upload date filter for search |
videoType | string | Select Youtube video type filter for search |
lengthFilter | string | Select Youtube video length filter for search |
oldestPostDate | string | Only posts uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 day will get you only today's posts, 2 days - yesterday's and today's, and so on. Note, that if you select this,… |
sortVideosBy | string | Maps to the sorting buttons on the top of the channel's 'Videos', 'Shorts' and 'Live' pages. |
aiVideoDescription | boolean | If enabled, uses AI to generate a time-segmented description of the video, covering both visual and audio content for each segment. |
aiVideoSummary | boolean | If enabled, uses AI to generate a concise conceptual summary of the video covering both visual and audio content. |
Run through the API
Create an API key in your account, send the input to the queued endpoint and use the returned task ID to retrieve results. Sending a live request uses credits.
curl --request POST 'https://extracto.cloud/api/v1/parsers/youtube-scraper/queue' \
--header 'X-API-KEY: ext_your_api_key' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-binary @- <<'JSON'
{
"input": {
"searchQueries": [
"web scraping tutorials"
],
"maxResults": 10,
"maxResultsShorts": 5,
"maxResultStreams": 0,
"startUrls": [
{
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
],
"transcriptionAndSubtitle": "NONE",
"subtitlesLanguage": "en",
"subtitlesFormat": "srt",
"sortingOrder": "relevance",
"dateFilter": "month",
"videoType": "video",
"lengthFilter": "between420",
"oldestPostDate": "2024-01-01",
"sortVideosBy": "NEWEST",
"aiVideoDescription": false,
"aiVideoSummary": false
}
}
JSONYour next dataset starts here.
Choose your sources, review the price and run YouTube Scraper.