# YouTube Video & Channel Scraper (`scrapemint/youtube-video-scraper`) Actor

Get YouTube data as clean rows: search results for any keyword, all recent videos from any channel, and full details for any video. Views, upload dates, durations, thumbnails, channel names and subscriber counts. No API quota, no API key needed.

- **URL**: https://apify.com/scrapemint/youtube-video-scraper.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Videos, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 video rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## YouTube Video & Channel Scraper

Get YouTube data as clean rows, with **no API key and no quota limits**. Three things in one tool:

- **Search** any keyword and get the results as structured data
- **Channel videos**: pull the recent uploads from any channel
- **Video details**: full metadata for specific videos

For each video you get the title, view count, upload date, duration, channel, thumbnail and link — ready for a spreadsheet, a dashboard, a database or a bot.

### Why not the official API?

Google's YouTube Data API has a daily quota that runs out fast and needs a Google Cloud project and key. This tool reads YouTube's own public pages instead: no key, no quota, no project setup. You pay only for the rows you get.

### What you get for each video

- **title**, **url**, **videoId**
- **views** (as a number) and **viewsText**
- **published**, **durationSeconds** and **durationText**
- **channel** and **channelId**
- **thumbnail**: the largest available image

Video-details mode adds the description, category, keywords, exact upload date and like count.

### Example output

```json
{
  "source": "channel",
  "sourceInput": "@mkbhd",
  "videoId": "_oRgdlJUD18",
  "title": "iOS 27 Hands-On: Top 5 New Features!",
  "url": "https://www.youtube.com/watch?v=_oRgdlJUD18",
  "views": 2500000,
  "viewsText": "2.5M views",
  "published": "21 hours ago",
  "durationSeconds": 919,
  "thumbnail": "https://i.ytimg.com/vi/_oRgdlJUD18/hqdefault.jpg"
}
```

### Three modes

- **Search keywords**: each keyword returns the first page of results (about 20 videos).
- **Channels**: give handles (`@mkbhd`) or channel URLs; each returns the recent uploads (about 30 videos).
- **Video URLs or IDs**: watch links, youtu.be links or bare ids, for full details.

### Pricing

**$0.002 per video row.** Bad input, videos not found and pages that could not be fetched are **free**, and the first 2 rows of every run are free. A channel of 30 videos costs about $0.06; a keyword search about $0.04. Rental-priced YouTube actors charge far more per thousand.

### How to run it via API

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~youtube-video-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["web scraping tutorial"], "channels": ["@mkbhd"]}'
```

### Scope and limits

- **Search and channel modes** return the first page (about 20 to 30 videos), which is what most monitoring and research needs.
- **Video-details mode** is best effort: YouTube rate limits the watch page more than the listing pages, so a busy run may not fetch every single video. Those rows come back free and marked, never charged, so you can retry them.
- **Not included**: transcripts and comments. This tool covers video and channel metadata.

### Frequently asked questions

**Is this the official YouTube data?** Yes, it is the same data YouTube shows on its public pages, just structured into rows. This tool is not affiliated with YouTube.

**Can I get more than the first page?** This version returns the first page per search or channel, which covers the newest and most relevant videos. Deeper pagination may come later.

**Do view counts update?** Each run reads the current values, so schedule a daily run to track how views grow over time.

### More tools from Scrapemint

- [TV Schedule & Shows Scraper](https://apify.com/scrapemint/tv-schedule-scraper): what airs and streams, per country and date.
- [Google News Scraper](https://apify.com/scrapemint/google-news-scraper): news coverage for any topic.
- [Sports Scores & Fixtures](https://apify.com/scrapemint/sports-scores-scraper): scores and standings for world leagues.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on YouTube, one per line. Each returns the first page of results (about 20 videos).

## `channels` (type: `array`):

Channel handles or URLs, one per line: @mkbhd, https://www.youtube.com/@veritasium, or a channel URL. Each returns the channel's recent videos (about 30).

## `videoUrls` (type: `array`):

Specific videos to get full details for: watch URLs, youtu.be links or bare video ids.

## `maxRows` (type: `integer`):

Stop after this many rows in total.

## Actor input object example

```json
{
  "searchQueries": [
    "web scraping tutorial"
  ],
  "channels": [
    "@mkbhd"
  ],
  "maxRows": 1000
}
```

# 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 = {
    "searchQueries": [
        "web scraping tutorial"
    ],
    "channels": [
        "@mkbhd"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/youtube-video-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 = {
    "searchQueries": ["web scraping tutorial"],
    "channels": ["@mkbhd"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/youtube-video-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 '{
  "searchQueries": [
    "web scraping tutorial"
  ],
  "channels": [
    "@mkbhd"
  ]
}' |
apify call scrapemint/youtube-video-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/sBZVjeOeKj6bwrv9U/builds/44KAHTcYirYehu2W0/openapi.json
