# YouTube Search Scraper (`scraper-engine/youtube-search-scraper`) Actor

YouTube Search Scraper API extracts data from any YouTube channel, including video lists, titles, views, likes, upload dates, and metadata. Great for research, competitor analysis, or content tracking. Export structured results in JSON, CSV, or Excel for seamless analysis and reporting.

- **URL**: https://apify.com/scraper-engine/youtube-search-scraper.md
- **Developed by:** [Scraper Engine](https://apify.com/scraper-engine) (community)
- **Categories:** Videos, Lead generation, Social media
- **Stats:** 53 total users, 4 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$19.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

### 🔍 What does YouTube Search Scraper do?
The YouTube Search Scraper is a powerful youtube scraping tool that allows you to extract videos, channels, and playlists without manual browsing. As a reliable YouTube scraper, it simplifies youtube scraping by returning structured data like titles, views, likes, and publish dates in seconds.

Built for efficiency, it supports automated youtube scraping and bulk youtube scraping, making it ideal for large-scale data collection. Using direct youtube scraper tools, you can perform fast and consistent bulk data extraction from search queries.

Developers can integrate it using a YouTube Search Scraper API, enabling scalable workflows and easy data access. For testing or smaller projects, YouTube Search Scraper API free options provide quick setup without complexity.

### 🛠️ Support and Feedback

- 🐞 **Bug reports:** Open a ticket in the repository **Issues** section  
- ✨ **Custom solutions or feature requests:** Contact our team 📧 **Email:** dev.scraperengine@gmail.com


### 📊 What data can you extract with the YouTube Search ?

The YouTube Search Scraper API is a powerful youtube scraping tool that provides structured access to video data without manual effort. Using this YouTube scraper, you can perform efficient youtube scraping and retrieve clean results in JSON format. It supports automated YouTube scraping and scalable bulk youtube scraping, making it ideal for analytics, dashboards, and research tools.

#### 📁 Extractable Data Fields

| Field | Description |
| --- | --- |
| Video Title | The headline of the video |
| Description | Full or partial video description |
| Views | Total number of views |
| Likes | Like count (if available) |
| Comments | Number of comments or status |
| Channel Name | Publisher of the video |
| Published Date | Upload date |
| Thumbnail URL | Preview image link |
| JSON Output | Structured format for apps and databases |

Using direct youtube scraper tools, this enables reliable bulk data extraction for scalable workflows and automation.

### 🛠️ How to use YouTube Search Scraper Actor

Using the YouTube Search Scraper APIActor on Apify is straightforward. You don’t need advanced technical skills — just follow a few simple steps and you’ll have structured video data in minutes.

#### Step-by-Step Guide

Log in to Apify – Create a free account at Apify.com or sign in with Google, GitHub, or email.

Select the Actor – Search for “YouTube Search API” (or YouTube Search Scraper) in the Apify Store.

Enter Input Data – Type your search query (e.g., music, tech reviews) into the input field and adjust filters like maxResults or uploadDate.

Choose Options – Configure filters such as video duration, HD/live, or relevance sorting.

Run the Actor 🚀 – Hit Start, and the scraper will collect video data automatically.

Download Results – Export the dataset in JSON, CSV, or Excel format for analysis or integration into your tools.

#### Input
```json
{
    "debug": false,
    "queries": [
        "https://www.youtube.com/@SecretRevealedbd"
    ]
}
````

#### Output

```json
[
  {
    "title": "Our Respect For Jim Carrey After Hearing This 📈! #Shorts",
    "type": "video",
    "channelName": "The Graham Norton Show",
    "date": "2022-12-15T00:00:00Z",
    "text": "Remember this next time you watch #TheGrinch!🎄\n\n#GrahamNortonShow #GrahamNorton #TheGNShow #JimCarrey \n\nFollow us here:\nFacebook: https://www.facebook.com/thegrahamnor...\nInstagram: https://www.instagram.com/thegrahamno...\nTwitter: https://twitter.com/TheGNShow\nTikTok: https://www.tiktok.com/@thegnshow\nSnapchat: https://www.snapchat.com/discover/The......",
    "thumbnailUrl": "https://i.ytimg.com/vi/f5ksIepT2mE/hq720_2.jpg?sqp=-oaymwEoCIAKENAF8quKqQMcGADwAQH4AbYIgAKAD4oCDAgAEAEYfyAVKBMwDw==&rs=AOn4CLAzefjTwGhQKzblpgUCZyLDC7G9yw",
    "order": 0,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [
      "#TheGrinch",
      "#GrahamNortonShow",
      "#GrahamNorton",
      "#TheGNShow",
      "#JimCarrey"
    ],
    "channelId": "UC4PziMH5MvvsmqM0VCZTy-g",
    "channelUrl": "http://www.youtube.com/@OfficialGrahamNorton",
    "channelUsername": "@OfficialGrahamNorton",
    "numberOfSubscribers": 5470000,
    "channelViewCount": 4788755834,
    "channelVideoCount": 2451,
    "hiddenSubscriberCount": false,
    "id": "f5ksIepT2mE",
    "url": "https://www.youtube.com/watch?v=f5ksIepT2mE",
    "viewCount": 36334432,
    "likes": 2206496,
    "commentsCount": 10000,
    "commentsTurnedOff": false,
    "duration": "0:52",
    "keywords": [
      "Graham Norton",
      "Graham Norton Show",
      "The Graham Norton Show",
      "The Graham Norton Show official",
      "The Graham Norton Show new series"
    ],
    "isMembersOnly": false
  },
  {
    "title": "Secret Revealed",
    "type": "video",
    "channelName": "Senoirbj",
    "date": "2025-02-09T00:00:00Z",
    "text": "Planning to modify my existing shower with this little DIY aluminum water separator. Just waiting for all the needed parts I ordered online to be completed before starting this interesting DIY home project. Stay tuned......",
    "thumbnailUrl": "https://i.ytimg.com/vi/NYCYQmwiul4/maxresdefault.jpg",
    "order": 1,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [],
    "channelId": "UCJaJumVCLked9n-BUJhXUlA",
    "channelUrl": "http://www.youtube.com/@senoirbj232",
    "channelUsername": "@senoirbj232",
    "numberOfSubscribers": 2840,
    "channelViewCount": 652704,
    "channelVideoCount": 296,
    "hiddenSubscriberCount": false,
    "id": "NYCYQmwiul4",
    "url": "https://www.youtube.com/watch?v=NYCYQmwiul4",
    "viewCount": 903,
    "likes": 12,
    "commentsCount": 0,
    "commentsTurnedOff": false,
    "duration": "0:19",
    "keywords": [],
    "isMembersOnly": false
  },
  {
    "title": "Do you know what does the surah means???? @BaseeraMedia @SecretRevealedbd @ArifAzad",
    "type": "video",
    "channelName": "anxiety",
    "date": "2023-04-25T00:00:00Z",
    "text": "",
    "thumbnailUrl": "https://i.ytimg.com/vi/tHQsSvnIOc8/maxresdefault.jpg",
    "order": 2,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [],
    "channelId": "UCsOOeGAxqr2dhMmurZQAXoA",
    "channelUrl": "http://www.youtube.com/@peacefulislam476",
    "channelUsername": "@peacefulislam476",
    "numberOfSubscribers": 30,
    "channelViewCount": 21,
    "channelVideoCount": 1,
    "hiddenSubscriberCount": false,
    "id": "tHQsSvnIOc8",
    "url": "https://www.youtube.com/watch?v=tHQsSvnIOc8",
    "viewCount": 21,
    "likes": 5,
    "commentsCount": 0,
    "commentsTurnedOff": false,
    "duration": "1:00",
    "keywords": [],
    "isMembersOnly": false
  },
  {
    "title": "black rock agent # #campursari #coversong @MrBeast @SecretRevealedbd @JamunaTVbd",
    "type": "video",
    "channelName": "MD BABU",
    "date": "2025-05-18T00:00:00Z",
    "text": "",
    "thumbnailUrl": "https://i.ytimg.com/vi/5aqF_KZVQvo/hq720_2.jpg?sqp=-oaymwEoCIAKENAF8quKqQMcGADwAQH4Ac4FgAKACooCDAgAEAEYWiBdKGUwDw==&rs=AOn4CLC8BDzOT5vpSBG1AuZkfvivAelt7g",
    "order": 3,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [],
    "channelId": "UCbXSpcf_oauG0xiFCDSBw8w",
    "channelUrl": "http://www.youtube.com/@MDBABU-qh5jw",
    "channelUsername": "@MDBABU-qh5jw",
    "numberOfSubscribers": 2,
    "channelViewCount": 36,
    "channelVideoCount": 5,
    "hiddenSubscriberCount": false,
    "id": "5aqF_KZVQvo",
    "url": "https://www.youtube.com/watch?v=5aqF_KZVQvo",
    "viewCount": 3,
    "likes": 1,
    "commentsCount": 0,
    "commentsTurnedOff": false,
    "duration": "0:41",
    "keywords": [],
    "isMembersOnly": false
  },
  {
    "title": "Secret Fact",
    "type": "video",
    "channelName": "Quick Truths",
    "date": "2025-05-15T00:00:00Z",
    "text": "#secretfacts  #unknowntruths  #hiddenknowledge  #mindblowingfacts  #psychologysecrets  #lifemysteries  #deepfacts  #unspokentruths  #betterideas  @SecretRevealedbd  #mysteryfacts  #mindsetshift  #thingsyoudidntknow  #surprisingtruths  #darkfacts...",
    "thumbnailUrl": "https://i.ytimg.com/vi/bhWoNS6ZSHk/hq720_2.jpg?sqp=-oaymwEoCIAKENAF8quKqQMcGADwAQH4AbYIgAKAD4oCDAgAEAEYciBMKDowDw==&rs=AOn4CLDicicg0Wu-JloGMhAudhNk5QqOhQ",
    "order": 4,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [
      "#secretfacts",
      "#unknowntruths",
      "#hiddenknowledge",
      "#mindblowingfacts",
      "#psychologysecrets"
    ],
    "channelId": "UC2wyqnGuOJvqn7WWDyZHBVQ",
    "channelUrl": "http://www.youtube.com/@QuickTruthsss",
    "channelUsername": "@QuickTruthsss",
    "numberOfSubscribers": 0,
    "channelViewCount": 12,
    "channelVideoCount": 20,
    "hiddenSubscriberCount": false,
    "id": "bhWoNS6ZSHk",
    "url": "https://www.youtube.com/watch?v=bhWoNS6ZSHk",
    "viewCount": 0,
    "likes": 0,
    "commentsCount": 0,
    "commentsTurnedOff": false,
    "duration": "0:06",
    "keywords": [],
    "isMembersOnly": false
  },
  {
    "title": "it wasn't any Giant ||@SecretRevealedbd[ Andrew missing ] and Giant UPDATE!",
    "type": "video",
    "channelName": "GameVerseHub",
    "date": "2023-07-10T00:00:00Z",
    "text": "",
    "thumbnailUrl": "https://i.ytimg.com/vi/7NxqNmVe230/hq720_2.jpg?sqp=-oaymwEoCIAKENAF8quKqQMcGADwAQH4Ac4FgAKACooCDAgAEAEYOSBlKGEwDw==&rs=AOn4CLAs9RzmOBp_TkrlIxBg_UGIw8L5Vg",
    "order": 5,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [],
    "channelId": "UC11g2XlNzC2C4tYO4nUYV-w",
    "channelUrl": "https://www.youtube.com/channel/UC11g2XlNzC2C4tYO4nUYV-w",
    "channelUsername": "@GameVerseHub.",
    "numberOfSubscribers": 418,
    "channelViewCount": 0,
    "channelVideoCount": 0,
    "hiddenSubscriberCount": false,
    "id": "7NxqNmVe230",
    "url": "https://www.youtube.com/watch?v=7NxqNmVe230",
    "viewCount": 55,
    "likes": 2,
    "commentsCount": 0,
    "commentsTurnedOff": false,
    "duration": "0:42",
    "keywords": [],
    "isMembersOnly": false
  },
  {
    "title": "The real world is when you realise what is Islam #islam #graphicdesigner @SecretRevealedbd",
    "type": "video",
    "channelName": "Mr.stranger",
    "date": "2023-09-28T00:00:00Z",
    "text": "",
    "thumbnailUrl": "https://i.ytimg.com/vi/O8_h83jzcrE/hq720_2.jpg?sqp=-oaymwEoCIAKENAF8quKqQMcGADwAQH4Ac4FgAKACooCDAgAEAEYQSBlKDEwDw==&rs=AOn4CLC9b4Q7maX5axqNgoXHGWrMFOI47Q",
    "order": 6,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [],
    "channelId": "UCK4b38UhnwlSsiYCPNiq2MA",
    "channelUrl": "http://www.youtube.com/@shihabah174",
    "channelUsername": "@shihabah174",
    "numberOfSubscribers": 10,
    "channelViewCount": 4349,
    "channelVideoCount": 78,
    "hiddenSubscriberCount": false,
    "id": "O8_h83jzcrE",
    "url": "https://www.youtube.com/watch?v=O8_h83jzcrE",
    "viewCount": 8,
    "likes": 0,
    "commentsCount": 0,
    "commentsTurnedOff": false,
    "duration": "0:15",
    "keywords": [],
    "isMembersOnly": false
  },
  {
    "title": "Bangladesh's HIDDEN Underwater Canyon Secret Revealed",
    "type": "video",
    "channelName": "HistoBlend",
    "date": "2024-11-19T00:00:00Z",
    "text": "Bangladesh's HIDDEN Underwater Canyon Secret Revealed\n===========================================\n\n\"🌍 Uncover the secrets of the Swatch of No Ground, an incredible underwater canyon in the Bay of Bengal! From its 1,500-meter depths to its thriving marine life 🐟🐬, discover how this hidden treasure sustains thousands of families and challenges even the bravest navigators. Join us on this thrilling dive into history, nature, and mystery! ✨ #SwatchOfNoGround #Bangladesh #MarineLife\"...",
    "thumbnailUrl": "https://i.ytimg.com/vi/rv_QhRb6Cvk/maxresdefault.jpg",
    "order": 7,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [
      "#SwatchOfNoGround",
      "#Bangladesh",
      "#MarineLife"
    ],
    "channelId": "UCNZXmz7rTzCbW85E9xbT4Bg",
    "channelUrl": "http://www.youtube.com/@HistoBlend",
    "channelUsername": "@HistoBlend",
    "numberOfSubscribers": 66,
    "channelViewCount": 19928,
    "channelVideoCount": 22,
    "hiddenSubscriberCount": false,
    "id": "rv_QhRb6Cvk",
    "url": "https://www.youtube.com/watch?v=rv_QhRb6Cvk",
    "viewCount": 405,
    "likes": 12,
    "commentsCount": 2,
    "commentsTurnedOff": false,
    "duration": "0:56",
    "keywords": [
      "Swatch of No Ground",
      "Bangladesh marine life",
      "Irrawaddy dolphins",
      "Bay of Bengal mystery",
      "underwater ecosystems"
    ],
    "isMembersOnly": false
  },
  {
    "title": "credit:@SecretRevealedbd",
    "type": "video",
    "channelName": "CHOTO VAI",
    "date": "2025-01-10T00:00:00Z",
    "text": "",
    "thumbnailUrl": "https://i.ytimg.com/vi/pFs-N4bb1I4/maxresdefault.jpg",
    "order": 8,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [],
    "channelId": "UCjVPKmVq-Nour0gaLfN0KQQ",
    "channelUrl": "http://www.youtube.com/@nasirthechotovai87",
    "channelUsername": "@nasirthechotovai87",
    "numberOfSubscribers": 232,
    "channelViewCount": 64674,
    "channelVideoCount": 288,
    "hiddenSubscriberCount": false,
    "id": "pFs-N4bb1I4",
    "url": "https://www.youtube.com/watch?v=pFs-N4bb1I4",
    "viewCount": 0,
    "likes": 1,
    "commentsCount": 0,
    "commentsTurnedOff": false,
    "duration": "3:00",
    "keywords": [],
    "isMembersOnly": false
  },
  {
    "title": "🙂🙂",
    "type": "video",
    "channelName": "Sbh Kawsar",
    "date": "2022-06-23T00:00:00Z",
    "text": "",
    "thumbnailUrl": "https://i.ytimg.com/vi/6zHxQrD3kbg/hq720_2.jpg?sqp=-oaymwEoCIAKENAF8quKqQMcGADwAQH4AZQDgALQBYoCDAgAEAEYEyAuKH8wDw==&rs=AOn4CLAUfWp9wjzE_fjDPhVxD5_TgjqH9w",
    "order": 9,
    "input": "https://www.youtube.com/@SecretRevealedbd",
    "hashtags": [],
    "channelId": "UCj2WCYRDp1Wo4Jo7z-r_aaw",
    "channelUrl": "https://www.youtube.com/channel/UCj2WCYRDp1Wo4Jo7z-r_aaw",
    "channelUsername": "@sbhkawsar9454",
    "numberOfSubscribers": 4,
    "channelViewCount": 0,
    "channelVideoCount": 0,
    "hiddenSubscriberCount": false,
    "id": "6zHxQrD3kbg",
    "url": "https://www.youtube.com/watch?v=6zHxQrD3kbg",
    "viewCount": 16,
    "likes": 4,
    "commentsCount": 4,
    "commentsTurnedOff": false,
    "duration": "0:11",
    "keywords": [],
    "isMembersOnly": false
  }
]
```

### 🎯 Why scrape YouTube with the Search ?

Using a **YouTube Search Scraper** is one of the most efficient ways to unlock insights through a powerful **youtube scraping tool**. Instead of manual browsing, this **YouTube scraper** enables fast and accurate **youtube scraping** with structured outputs. It also supports **automated youtube scraping** and **bulk youtube scraping** for large-scale analysis.

📈 **Market Research and Trend Tracking**\
Track viral content and competitors using **bulk data extraction** from search results.

🎬 **Content Discovery**\
Identify trending topics and niches with **direct youtube scraper tools** for better content planning.

⚡ **Short-Form Insights**\
Analyze fast-growing video formats using scalable **youtube scraping** workflows.

💡 **Audience Intelligence**\
Understand real user intent with autocomplete and search-based **automated youtube scraping** data.

👉 Overall, this **youtube scraping tool** gives you a clear, data-driven edge for growth and strategy.

### 📌 How many results can you scrape with the YouTube Search ?

The **YouTube Search Scraper API** is designed for scalable **youtube scraping** using a reliable **youtube scraping tool**. With each request, this **YouTube scraper** can fetch up to 50 results, but by using pagination, you can extend this into **bulk youtube scraping** workflows.

📊 **Scalability Overview:**

🔹 Per request — Up to 50 results via **automated youtube scraping**\
🔹 With pagination — Collect hundreds or more results efficiently\
🔹 Large-scale runs — Enable structured **bulk data extraction** using **direct youtube scraper tools**

⚙️ **Quota Consideration:**\
Each request consumes quota units, so total results depend on your daily limits and configuration.

👉 By combining pagination and **automated youtube scraping**, you can scale data collection while maintaining performance and consistency.

### 💰 How much does the YouTube Search Scraper cost?

The cost of a **YouTube Search Scraper** depends on whether you use an official API or a third-party **youtube scraping tool**. A typical **YouTube scraper** setup can range from free to scalable paid plans based on usage.

🌐 **Google Official API**

- Offers limited free access for **youtube scraping**
- Supports basic **automated youtube scraping** with quota limits
- Costs increase as you scale requests and data needs

🔧 **Third-Party Tools**

- Provide advanced **bulk youtube scraping** and easier setup
- Enable seamless **bulk data extraction** with built-in automation
- Often include **direct youtube scraper tools** for faster workflows

⚖️ **Free vs Paid**

- Free tiers work for testing or small-scale **youtube scraping**
- Paid plans are better for high-volume **automated youtube scraping** and reliability

👉 Overall, pricing scales with how much data you need and how often you run scraping tasks.

### ⚖️ Is it legal to scrape with the YouTube Search API?

The legality of using a **YouTube Search Scraper** depends on how you perform **youtube scraping** and access the data. When you use the **YouTube Search Scraper API**, it is fully compliant because requests are authenticated and follow official platform rules. This approach makes it the safest **youtube scraping tool** for structured data access.

However, using unauthorized bots or aggressive **automated youtube scraping** methods outside approved systems can violate platform policies. This may lead to rate limits, IP blocking, or account restrictions when using unverified **YouTube scraper** setups.

📌 **Best Practices for Safe Usage:**\
✅ Use official APIs or trusted **direct youtube scraper tools**\
✅ Respect quota limits during **bulk youtube scraping**\
✅ Avoid private or restricted content\
✅ Ensure responsible **bulk data extraction** for valid use cases

👉 In short, compliant **youtube scraping** is possible when you follow official guidelines and use approved tools responsibly.

### 🔗 What are other YouTube scraping tools?

If you want to scrape specific YouTube data, you can use any of the dedicated scrapers below for faster and more targeted results.\
Just enter one or more YouTube URLs, channel names, video IDs, or keywords and start scraping instantly.

| [☎️ YouTube Channel Phone Number Scraper](https://apify.com/scraper-engine/youtube-channel-phone-number-scraper)  | [💬 YouTube Comments Scraper](https://apify.com/scraper-engine/youtube-comments-scraper) |
|---|---|
| [📝 YouTube Transcript Scraper](https://apify.com/scraper-engine/youtube-transcript-scraper) | [🎥 YouTube Video Details Scraper](https://apify.com/scraper-engine/youtube-video-details-scraper) |
| [📺 YouTube Channel Finder](https://apify.com/scraper-engine/youtube-channel-finder) | [🧠 YouTube Video Summarizer](https://apify.com/scraper-engine/youtube-video-summarizer) |
| [👥 YouTube Community Posts Scraper](https://apify.com/scraper-engine/youtube-community-posts-scraper) | [⏱️ YouTube Most Replayed Scraper](https://apify.com/scraper-engine/youtube-most-replayed-scraper) |
| [📊 YouTube Metadata Scraper](https://apify.com/scraper-engine/youtube-metadata-scraper) | [🌐 YouTube Video Subtitles Scraper](https://apify.com/scraper-engine/youtube-video-subtitles-scraper) |
| [🔥 YouTube Trending Scraper](https://apify.com/scraper-engine/youtube-trending-scraper) | [🏷️ YouTube Video Scraper by Hashtag](https://apify.com/scraper-engine/youtube-video-scraper-by-hashtag) |
| [🎬 YouTube Shorts Scraper](https://apify.com/scraper-engine/youtube-shorts-scraper) | [📂 YouTube Playlist Scraper](https://apify.com/scraper-engine/youtube-playlist-scraper) |
| [📡 YouTube Channel Scraper](https://apify.com/scraper-engine/youtube-channel-scraper) | [📞 YouTube Phone Number Scraper](https://apify.com/scraper-engine/youtube-phone-number-scraper) |
| [📧 YouTube Email Scraper](https://apify.com/scraper-engine/youtube-email-scraper) | [📨 YouTube Channel Email Scraper](https://apify.com/scraper-engine/youtube-channel-email-scraper) |

### ❓ FAQ: YouTube Search Scraper API

#### What is the YouTube Search Scraper API key used for?

 👉 It authenticates requests, tracks usage, and manages limits when using a YouTube Search Scraper API within a youtube scraping tool.

#### Is there a free YouTube Search API?

 ✅ Yes, free tiers exist for basic youtube scraping, and some tools support limited automated youtube scraping runs.

#### How do I use YouTube Search Scraper in Python?

 💻 Use libraries with your key to build a YouTube scraper and process structured JSON outputs.

#### What is the difference between YouTube API and Search API?

 📊 The Search API is a subset focused on discovery, often used in bulk youtube scraping workflows.

#### Where can I find a GitHub repo?

 🔗 Many repos exist for direct youtube scraper tools and integration examples.

#### What is API quota and how to increase it?

 ⚙️ Quota limits requests in youtube scraping. You can optimize or request increases.

#### Can I use it without a key?

 ❌ Official APIs require authentication, though some platforms simplify access via automated youtube scraping systems.

#### Is there a beginner tutorial?

 📘 Yes, many guides explain setup for youtube scraping tools in Python or Node.

#### Does it work for Shorts and Music?

 🎬 Yes, search-based bulk data extraction can include Shorts and Music content.

### 🏁 Final Note

A YouTube Search Scraper is a powerful youtube scraping tool that transforms raw search results into structured, actionable data. Whether you’re using automated youtube scraping for scaling or performing bulk youtube scraping for analytics, it simplifies complex workflows. As a reliable YouTube scraper, it enables efficient bulk data extraction for SEO, research, and marketing insights.

By leveraging trusted direct youtube scraper tools, you can unlock deeper trends, optimize strategies, and make faster, data-driven decisions with confidence.

# Actor input Schema

## `queries` (type: `array`):

📝 One search query or URL per line. Examples: « python programming », « best cooking channels », or a full URL like https://www.youtube.com/watch?v=... or https://www.youtube.com/@ChannelName. Mix keywords and URLs in the same run.

## `maxResults` (type: `integer`):

📈 Maximum number of results to fetch for each query (1–2000). Higher values mean more data but longer runs. Default 10 is good for quick tests.

## `sortBy` (type: `string`):

🔀 How YouTube results are ordered: by relevance, upload date, view count, or rating. Same options you’d see on YouTube’s sort dropdown.

## `uploadDate` (type: `string`):

📆 Restrict results to videos uploaded in this time window: last hour, today, this week, month, or year. Leave « None » for no date filter.

## `duration` (type: `string`):

⏱️ Only include videos in this length range: Short (<4 min), Medium (4–20 min), or Long (>20 min). Leave « None » to allow any duration.

## `type` (type: `string`):

🎬 Type of results to return: Video, Channel, Playlist, or Movie. Use « Video » for standard search results.

## `proxyConfiguration` (type: `object`):

🌐 No proxy by default. If YouTube blocks the run, the actor automatically switches to RESIDENTIAL proxy. You can also set a custom proxy here (e.g. Apify proxy) if you prefer.

## `debug` (type: `boolean`):

🐛 Turn on for extra log output (requests, retries, proxy switches). Useful for troubleshooting; leave off for normal runs.

## Actor input object example

```json
{
  "queries": [
    "python programming"
  ],
  "maxResults": 10,
  "sortBy": "relevance",
  "uploadDate": "",
  "duration": "",
  "type": "video",
  "debug": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "python programming"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraper-engine/youtube-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": ["python programming"] }

# Run the Actor and wait for it to finish
run = client.actor("scraper-engine/youtube-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "python programming"
  ]
}' |
apify call scraper-engine/youtube-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scraper-engine/youtube-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube Search Scraper",
        "description": "YouTube Search Scraper API extracts data from any YouTube channel, including video lists, titles, views, likes, upload dates, and metadata. Great for research, competitor analysis, or content tracking. Export structured results in JSON, CSV, or Excel for seamless analysis and reporting.",
        "version": "0.2",
        "x-build-id": "uLUMLhg9Y0wIy4A6H"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraper-engine~youtube-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraper-engine-youtube-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scraper-engine~youtube-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraper-engine-youtube-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scraper-engine~youtube-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraper-engine-youtube-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "queries": {
                        "title": "🔎 Search queries",
                        "type": "array",
                        "description": "📝 One search query or URL per line. Examples: « python programming », « best cooking channels », or a full URL like https://www.youtube.com/watch?v=... or https://www.youtube.com/@ChannelName. Mix keywords and URLs in the same run.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "python programming"
                        ]
                    },
                    "maxResults": {
                        "title": "📊 Max results per query",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "📈 Maximum number of results to fetch for each query (1–2000). Higher values mean more data but longer runs. Default 10 is good for quick tests.",
                        "default": 10
                    },
                    "sortBy": {
                        "title": "↕️ Sort by",
                        "enum": [
                            "relevance",
                            "date",
                            "viewCount",
                            "rating"
                        ],
                        "type": "string",
                        "description": "🔀 How YouTube results are ordered: by relevance, upload date, view count, or rating. Same options you’d see on YouTube’s sort dropdown.",
                        "default": "relevance"
                    },
                    "uploadDate": {
                        "title": "📅 Upload date filter",
                        "enum": [
                            "",
                            "lastHour",
                            "today",
                            "thisWeek",
                            "thisMonth",
                            "thisYear"
                        ],
                        "type": "string",
                        "description": "📆 Restrict results to videos uploaded in this time window: last hour, today, this week, month, or year. Leave « None » for no date filter.",
                        "default": ""
                    },
                    "duration": {
                        "title": "⏱️ Duration filter",
                        "enum": [
                            "",
                            "short",
                            "medium",
                            "long"
                        ],
                        "type": "string",
                        "description": "⏱️ Only include videos in this length range: Short (<4 min), Medium (4–20 min), or Long (>20 min). Leave « None » to allow any duration.",
                        "default": ""
                    },
                    "type": {
                        "title": "📺 Search type",
                        "enum": [
                            "video",
                            "channel",
                            "playlist",
                            "movie"
                        ],
                        "type": "string",
                        "description": "🎬 Type of results to return: Video, Channel, Playlist, or Movie. Use « Video » for standard search results.",
                        "default": "video"
                    },
                    "proxyConfiguration": {
                        "title": "🌐 Proxy (optional)",
                        "type": "object",
                        "description": "🌐 No proxy by default. If YouTube blocks the run, the actor automatically switches to RESIDENTIAL proxy. You can also set a custom proxy here (e.g. Apify proxy) if you prefer."
                    },
                    "debug": {
                        "title": "🐛 Verbose logging",
                        "type": "boolean",
                        "description": "🐛 Turn on for extra log output (requests, retries, proxy switches). Useful for troubleshooting; leave off for normal runs.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
