# YouTube Channel & Video Scraper (No API Key) (`ninhothedev/youtube-channel-scraper`) Actor

$0.5/1K 🔥 Fast YouTube channel & video scraper! Titles, views, likes, descriptions, thumbnails & dates — no API key, no quota. JSON, CSV, Excel or API in seconds. Drop channel IDs or video URLs & pull thousands for content & competitor intel ⚡

- **URL**: https://apify.com/ninhothedev/youtube-channel-scraper.md
- **Developed by:** [ninhothedev](https://apify.com/ninhothedev) (community)
- **Categories:** Videos, Social media, Developer tools
- **Stats:** 1 total users, 1 monthly users, 88.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

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 Channel & Video Scraper (No API Key) 🎬

Scrape **YouTube channels and videos without an API key** — no quota, no OAuth, no Google Cloud project. Pull the latest videos from any channel or playlist with **views, likes, descriptions, thumbnails and publish dates**, or fetch clean metadata for any list of video URLs. Fast, cheap and **datacenter-proxy friendly** (works great on the free tier).

> Built on YouTube's public RSS feeds + oEmbed endpoint. Stable, lightweight, and no key to leak or rate-limit.

***

### ✨ What you get

- **Channel / playlist mode** — give any channel id (`UC...`) or playlist id (`PL...`), get its latest ~15 videos with **view counts and like counts** straight from YouTube's feed.
- **Videos mode** — give a list of video ids or watch/`youtu.be`/`shorts` URLs, get title, channel, author URL and thumbnail via oEmbed.
- Clean, flat JSON — ready for Google Sheets, Excel, a database, or a training dataset.
- No API key, no login, **datacenter-friendly** so it runs cheaply.

### 💸 Pricing

Roughly **$0.50 per 1,000 videos** — deliberately priced to **undercut** the expensive key-based YouTube scrapers. Datacenter proxies are fine, so your compute stays cheap.

### 🚀 Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | select | `channel` (latest videos per channel/playlist) or `videos` (metadata per video). |
| `channelIds` | array | Channel ids (`UC...`) or playlist ids (`PL...`). Used in `channel` mode. |
| `videoUrls` | array | Video ids or full URLs. Used in `videos` mode. |
| `maxItems` | integer | Cap on total records (default 100, max 1000). |

#### Example — channel mode

```json
{
  "mode": "channel",
  "channelIds": ["UC_x5XG1OV2P6uZZ5FSM9Ttw"],
  "maxItems": 100
}
```

#### Example — videos mode

```json
{
  "mode": "videos",
  "videoUrls": ["dQw4w9WgXcQ", "https://youtu.be/9bZkp7q19f0"]
}
```

### 📤 Output

Each item is one video:

```json
{
  "type": "video",
  "video_id": "iOK1-b_9Dlg",
  "title": "Get started with the Interactions API",
  "channel": "Google for Developers",
  "channel_id": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
  "author_url": "https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw",
  "published": "2026-07-17T23:00:34+00:00",
  "updated": "2026-07-17T23:23:38+00:00",
  "views": 3042,
  "likes": 146,
  "description": "The Interactions API has reached general availability...",
  "thumbnail": "https://i2.ytimg.com/vi/iOK1-b_9Dlg/hqdefault.jpg",
  "url": "https://www.youtube.com/watch?v=iOK1-b_9Dlg",
  "scraped_at": "2026-07-19T20:00:00+00:00"
}
```

> In `videos` mode, `views`/`likes`/`description` come back as `null` (oEmbed does not expose them) while `title`, `channel`, `author_url` and `thumbnail` are populated.

### 🎯 Use cases

- **Influencer research** — pull a creator's latest uploads and view counts to size their reach.
- **Content monitoring** — track new videos from channels you care about on a schedule.
- **Competitor intelligence** — benchmark rival channels' upload cadence and engagement.
- **Datasets** — build training/analytics datasets of titles, descriptions and stats.

### 🆚 Why this actor?

| | This actor | Key-based YouTube scrapers |
|---|---|---|
| API key / OAuth | ❌ Not needed | ✅ Required |
| Daily quota | ❌ None | ⚠️ 10k units/day |
| Datacenter proxy | ✅ Works | ⚠️ Often blocked |
| Price | 💲 ~$0.50 / 1k | 💲💲 Higher |
| Views & likes | ✅ (channel mode) | ✅ |

### 🔗 Related actors by the same author

- [TikTok Scraper](https://apify.com/ninhothedev/tiktok-scraper)
- [Instagram Scraper](https://apify.com/ninhothedev/instagram-scraper)
- [Twitch Channel Scraper](https://apify.com/ninhothedev/twitch-channel-scraper)
- [Reddit Scraper](https://apify.com/ninhothedev/reddit-scraper)

**Keywords:** youtube scraper, youtube channel scraper, youtube video scraper, youtube views scraper, youtube without api key, youtube rss, youtube oembed, video metadata, influencer research, content monitoring.

### ⚖️ Legal

Only public data is collected via YouTube's own public RSS and oEmbed endpoints. Respect YouTube's Terms of Service and applicable laws when using the output.

# Actor input Schema

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

Choose 'channel' to fetch the latest ~15 videos from each channel/playlist id via RSS, or 'videos' to fetch metadata for individual video ids / watch URLs via oEmbed.

## `channelIds` (type: `array`):

Used in 'channel' mode. YouTube channel ids (start with 'UC...') or playlist ids (start with 'PL...'). Each returns its latest ~15 videos with views and likes.

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

Used in 'videos' mode. YouTube video ids (e.g. 'dQw4w9WgXcQ') or full watch/shorts/youtu.be URLs. Each returns title, channel and thumbnail via oEmbed.

## `maxItems` (type: `integer`):

Maximum number of video records to scrape across all inputs. Prevents runaway usage and cost.

## Actor input object example

```json
{
  "mode": "channel",
  "channelIds": [
    "UC_x5XG1OV2P6uZZ5FSM9Ttw"
  ],
  "videoUrls": [
    "dQw4w9WgXcQ"
  ],
  "maxItems": 100
}
```

# 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 = {
    "channelIds": [
        "UC_x5XG1OV2P6uZZ5FSM9Ttw"
    ],
    "videoUrls": [
        "dQw4w9WgXcQ"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ninhothedev/youtube-channel-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 = {
    "channelIds": ["UC_x5XG1OV2P6uZZ5FSM9Ttw"],
    "videoUrls": ["dQw4w9WgXcQ"],
}

# Run the Actor and wait for it to finish
run = client.actor("ninhothedev/youtube-channel-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 '{
  "channelIds": [
    "UC_x5XG1OV2P6uZZ5FSM9Ttw"
  ],
  "videoUrls": [
    "dQw4w9WgXcQ"
  ]
}' |
apify call ninhothedev/youtube-channel-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bZaJh0rfhitYHWOYv/builds/6kYCfs1uPlMW8kFPk/openapi.json
