# YouTube Scraper API – Videos, Channels & Search, No Login (`k-data-lab/youtube-scraper`) Actor

Get YouTube video stats and metadata by link, search, channel or playlist, with no login or API key: exact views and likes, comment count, length, publish date, description, subscribers. Videos and Shorts. From $1 per 1,000 full videos, $0.40 for lists. 500 results free monthly.

- **URL**: https://apify.com/k-data-lab/youtube-scraper.md
- **Developed by:** [K-Data Lab](https://apify.com/k-data-lab) (community)
- **Categories:** Videos, Social media, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## YouTube Scraper API: Video Stats, Metadata, Channels, No Login

**Get YouTube video stats and metadata from a link, a search, a channel or a playlist, with no login, no cookies and no API key.** Paste video links or IDs, or search by keyword. You get one tidy row per video or Short with exact views and likes, comment count, length, publish date, full description, hashtags, chapters and channel subscribers. Export to JSON, CSV or Excel, or call it as an API from code, n8n, Make, Zapier or an AI agent.

**Your first run costs half a cent, which Apify's free monthly credit covers.** Click Start and the prefilled search of 10 videos is done in about 5 seconds. Every month the first **500 results, 200 video details and 50 channel summaries are free**. After that you pay **$0.40 per 1,000 results**, or **$1.00 per 1,000 videos with full details** on the Bronze plan ($1.20 on the Free plan). Filters and date limits cost nothing extra. An unofficial tool, not affiliated with YouTube or Google.

Real rows from a search for `coffee review` on 5 November 2026:

| Title | Channel | Views | Likes | Comments | Published | Length (s) | Subscribers |
|---|---|---:|---:|---:|---|---:|---:|
| Top 50 Coffee Reviews (2020-2026) | Coffee Reviews | 6,288 | 138 | 50 | 2026-08-29 | 985 | 5,240 |
| YouTuber Coffee Brands: How And Why They're A Thing | James Hoffmann | 530,116 | 17,403 | 1,400 | 2020-08-15 | 643 | 2,570,000 |
| A Beginner's Guide To Buying Great Coffee | James Hoffmann | 5,314,122 | 113,078 | 4,100 | 2021-05-20 | 1,569 | 2,570,000 |

#### 🚀 Pick your starting point

| You want | Paste this input |
|---|---|
| Stats for a list of videos | `{ "startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ", "https://www.youtube.com/shorts/aqz-KE-bpKQ"] }` |
| YouTube search results | `{ "searchQueries": ["coffee review"], "maxResults": 100 }` |
| Every video of a channel | `{ "startUrls": ["@veritasium"], "maxResults": 5000 }` |
| A channel's most popular videos | `{ "startUrls": ["@veritasium"], "channelSort": "popular", "maxResults": 50 }` |
| Shorts of a channel | `{ "startUrls": ["@NASA"], "channelContent": ["shorts"] }` |
| All videos in a playlist | `{ "startUrls": ["https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU"] }` |
| Find channels on a topic | `{ "searchQueries": ["home barista"], "searchType": "channels" }` |
| New videos on a schedule | `{ "startUrls": ["@competitor"], "monitorName": "competitors" }` |
| A fast, cheap list | `{ "searchQueries": ["ai agents"], "videoDetails": false, "maxResults": 500 }` |

#### 🔍 What does it do?

- **YouTube search.** Search videos, Shorts, channels, playlists or everything, with YouTube's own filters: upload date, length, live, 4K, HD, subtitles, Creative Commons and more.
- **Channels.** Read the Videos, Shorts and Live tabs in Latest, Popular or Oldest order, plus one summary row with subscribers, total views, video count, country, join date and external links.
- **Playlists.** Every video in a public playlist, with one summary row.
- **Video stats by link.** Paste watch, `youtu.be`, Shorts or live links, or bare video IDs, and get views, likes, comments, length and the rest for each one.
- **Monitoring.** Give a schedule a `monitorName`. Each run returns and charges only videos that name hasn't returned yet.
- **Date limits.** Use `publishedAfter` with a date or an age such as `7 days`.

#### 💡 Why choose this actor?

| | This actor | Other popular YouTube scrapers on the Store |
|---|---|---|
| Video with full details | **$1.00 / 1,000** | From about $2.40 to $4 / 1,000 on the best-known actor |
| List only | **$0.40 / 1,000** | From about $0.50 / 1,000 |
| Filters and date limits | ✅ Free | Some charge about $1 / 1,000 extra for channel date ranges |
| Free every month | ✅ 500 results + 200 details + 50 channels | Usually none |
| Only new videos | ✅ One field, memory kept for you | Usually you keep track yourself |
| Duplicates | ✅ One charge per video in a run | Varies |
| Login or API key | ❌ None, ever | Varies |
| Transcripts and subtitles | ❌ Not available here | Offered by several others |

Our test runs: 874 rows with details from 6 searches and channels, 0 videos without details, 0 duplicates, in about 4.5 minutes. A 158-video playlist returned 158 rows in 9 seconds.

#### 💰 Pricing

You pay per event, and only for rows you receive.

| Event | What you get | Free plan | Bronze | Silver | Gold and up |
|---|---|---:|---:|---:|---:|
| `result` | One row: a video, Short, stream, channel or playlist | $0.50 / 1K | $0.40 / 1K | $0.35 / 1K | $0.30 / 1K |
| `video-details` | Exact likes and views, date, description, chapters and more | $0.70 / 1K | $0.60 / 1K | $0.55 / 1K | $0.50 / 1K |
| `channel` | One channel or playlist summary row | $1.00 / 1K | $0.80 / 1K | $0.70 / 1K | $0.60 / 1K |
| `apify-actor-start` | Charged once per run | $0.005 | $0.005 | $0.005 | $0.005 |

**Free every month, per user:** 500 `result`, 200 `video-details`, 50 `channel`. Set a maximum cost per run and the actor stops cleanly at that limit. If a video's page can't be read, its details aren't charged.

#### 📥 Input

| Field | What it does |
|---|---|
| `searchQueries` | Search terms, one per line |
| `startUrls` | Video, Shorts, channel, @handle, playlist or search links, or video IDs |
| `maxResults` | Limit per search, channel tab or playlist. Default 50 |
| `videoDetails` | Add exact stats and the full description. Default on |
| `channelDetails` | Add a summary row per channel or playlist link. Default on |
| `searchType` | `videos`, `shorts`, `channels`, `playlists` or `all` |
| `sortBy` | `relevance` or `popular` |
| `uploadDate`, `duration`, `features` | YouTube's search filters |
| `country` | Two-letter code, such as US, KR or DE |
| `channelContent` | `videos`, `shorts`, `streams` |
| `channelSort` | `latest`, `popular` or `oldest` |
| `publishedAfter` | `2026-10-01` or `7 days` |
| `monitorName` | Returns only videos not returned before under this name |
| `dedupe` | One row per video in a run. Default on |

#### 📤 Output

```json
{
  "type": "video",
  "id": "8tUot8CDIMU",
  "title": "Top 50 Coffee Reviews (2020-2026)",
  "url": "https://www.youtube.com/watch?v=8tUot8CDIMU",
  "channelName": "Coffee Reviews",
  "channelHandle": "@CoffeeReviews",
  "channelId": "UC9I6fzNMY1btXsGTuo7UmGQ",
  "subscriberCount": 5240,
  "viewCount": 6288,
  "likeCount": 138,
  "commentCount": 50,
  "publishedAt": "2026-08-29",
  "publishedAtIsExact": true,
  "duration": "16:25",
  "durationSeconds": 985,
  "description": "A list of our top 50 coffees we have reviewed on this channel…",
  "hashtags": [],
  "chapters": [],
  "thumbnailUrl": "https://i.ytimg.com/vi/8tUot8CDIMU/hqdefault.jpg",
  "detailsStatus": "OK",
  "inputType": "search",
  "input": "coffee review",
  "scrapedAt": "2026-11-05T18:48:45Z"
}
```

A `channel` row adds `totalViews`, `videoCount`, `country`, `joinedAt` and `links`. `RUN_SUMMARY` in the key-value store lists what happened to each search or link.

#### ❓ FAQ

**Do I need a YouTube account or API key?** No. You get what a logged-out visitor sees, without the YouTube Data API's daily quota.

**Are the numbers exact?** Views and likes are exact with `videoDetails` on, as YouTube reports them. YouTube rounds subscribers and comment counts (`2.57M`, `4.1K`), so those fields are rounded too. Without details, channel and playlist lists show rounded views.

**Why is `likeCount` empty?** The creator has hidden likes. A video without any likes shows `0`. `commentCount` is empty when comments are off.

**Can I get comments?** Yes, with our sibling [YouTube Comments Scraper API](https://apify.com/k-data-lab/youtube-comments-scraper): comments and replies by video, channel or search, $0.25 per 1,000.

**Can I get transcripts, subtitles or video files?** No. YouTube doesn't give these to automated logged-out visitors, and we don't work around that.

**Do pasted links and Shorts get a length?** Yes. `durationSeconds` was filled on 35 of 36 videos and Shorts in our test. It can stay empty for a new Short with few views.

**Are tags and the category included?** Rarely. `tags`, `category` and the exact time in `publishedAtTime` are filled only when YouTube puts them in the page it sends, which was 1 of 36 videos in our test. Don't rely on them. `publishedAt` holds the date either way. Caption languages aren't available.

**Can I sort search by newest?** YouTube's search now offers Relevance and Popularity. For new videos, use `uploadDate` or `publishedAfter`, or read a channel with `channelSort: "latest"`.

**How many results does a search return?** YouTube ends a search list on its own, usually after a few hundred results (406 in our test for `python tutorial`). Use more specific terms or several searches for more. Channels and playlists run to the end.

**Why are some titles in English?** Results are read in English so numbers and dates parse reliably, and YouTube shows English titles where one exists. Use `country` to get a country's results.

**How fast is it?** About 3 videos per second with details, and about 20 per second without. Large runs slow down on purpose to respect YouTube's rate limits.

**Is it legal?** It collects public data. You're responsible for how you use it, including YouTube's terms, copyright and privacy law. Descriptions can include personal details people published, so handle them with care.

#### 🤖 Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/k-data-lab~youtube-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["coffee review"],"maxResults":20}'
```

#### 🧠 Use it from AI agents (MCP)

Connect the Apify MCP server to Claude, ChatGPT, Cursor or any MCP client, then add the actor `k-data-lab/youtube-scraper`. It returns plain JSON and needs no YouTube login, so an agent can call it straight away.

| The agent is asked to | Input to send |
|---|---|
| Get views and likes of a YouTube video | `{ "startUrls": ["<video link or ID>"] }` |
| Get the metadata of 50 videos | `{ "startUrls": ["<link 1>", "<link 2>"] }` |
| Find YouTube videos on a topic | `{ "searchQueries": ["<topic>"], "maxResults": 20 }` |
| List a channel's latest videos | `{ "startUrls": ["@handle"], "maxResults": 20 }` |
| Get a channel's subscribers | `{ "startUrls": ["@handle"], "channelContent": ["videos"], "maxResults": 1 }` |
| Check what's new since last week | `{ "startUrls": ["@handle"], "publishedAfter": "7 days" }` |

Every field is optional except that you need `searchQueries` or `startUrls`. A call for 20 videos with details costs about $0.03 at most, and nothing beyond the $0.005 start while the free monthly quota lasts. Read `viewCount`, `likeCount`, `commentCount`, `durationSeconds` and `publishedAt` from each row; a row with `"type": "channel"` holds `subscriberCount`, `totalViews` and `videoCount`.

#### 🧰 More from K-Data Lab

**Social and apps**

- [YouTube Comments Scraper API](https://apify.com/k-data-lab/youtube-comments-scraper): comments and replies of any video or Short, $0.25/1K
- [Telegram Scraper API](https://apify.com/k-data-lab/telegram-channel-scraper): channels and keyword search, no login
- [Google Play Scraper API](https://apify.com/k-data-lab/google-play-scraper): app details and reviews, any country
- [Google Ads Transparency & Ad Library Scraper](https://apify.com/k-data-lab/google-ad-library-scraper): every Google ad a competitor runs

**Amazon**

- [Amazon Seller Central Review Scraper](https://apify.com/k-data-lab/amazon-seller-central-review-scraper): brand reviews and monitoring
- [Amazon ASIN Rating & Review Count Lookup](https://apify.com/k-data-lab/amazon-asin-rating-scraper): ratings, review counts and BSR, no login

**Travel**

- [Agoda Scraper API](https://apify.com/k-data-lab/agoda-scraper): hotel prices, rooms and reviews
- [Airline Award Seat Scraper](https://apify.com/k-data-lab/airline-award-seat-scraper): live miles, taxes and seats left

**Korean data**

- [Korean Music Chart API](https://apify.com/k-data-lab/korean-music-chart-scraper): Melon, Genie, Bugs, FLO and VIBE in one chart
- Korea apartment prices: [KB Land](https://apify.com/k-data-lab/kbland-scraper), [R114](https://apify.com/k-data-lab/r114-scraper)

#### 💬 Feedback

Need a field that's missing, or found a video that doesn't work? Open an issue on the **Issues** tab. We answer the same day.

Tags: youtube scraper, youtube api, youtube data api alternative, youtube video stats, youtube video statistics, youtube video metadata, youtube video details, youtube search scraper, youtube channel scraper, youtube shorts scraper, youtube playlist scraper, youtube monitor, no login

# Changelog

This Actor's version history is a separate document: https://apify.com/k-data-lab/youtube-scraper/changelog.md

# Actor input Schema

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

Words to search on YouTube, one per line, as in YouTube's search bar. Use this to find videos or channels on a topic. Fill this field, YouTube links, or both. Example: coffee review

## `startUrls` (type: `array`):

Use this for known videos, channels or playlists: video, Shorts, live, channel, @handle, playlist or search-results links, or bare 11-character video IDs, one per line. To get stats for a list of videos, paste them here. Examples: https://www.youtube.com/watch?v=dQw4w9WgXcQ, @veritasium, https://www.youtube.com/playlist?list=PLBCF2DAC6FFB574DE

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

Stops each search, channel tab or playlist at this many rows. Pasted video links always return one row each. YouTube ends a search list on its own, usually after a few hundred results. Channels and playlists go to the end.

## `videoDetails` (type: `boolean`):

Opens each video's page for exact likes, exact views, exact publish date, full description, hashtags, chapters, comment count and subscribers. Keep on for video stats and metadata. Turn off for fast, cheaper lists with the fields shown on result cards. Pasted video links always use details.

## `channelDetails` (type: `boolean`):

For each channel link: one row with subscribers, total views, video count, country, join date and external links. For each playlist link: one row with title, owner and totals.

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

What kind of results a search returns: videos, shorts, channels, playlists or all.

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

relevance or popular. YouTube now offers these two. For the newest videos, use 'Uploaded' or 'Published after', or a channel with 'Latest'.

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

YouTube's upload date filter: any, today, week, month or year.

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

YouTube's length filter: any, under3, between3and20 or over20 minutes.

## `features` (type: `array`):

Only videos with all of these features, such as live, 4k or subtitles.

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

Two-letter country code for YouTube's results, such as US, KR, JP or DE.

## `channelContent` (type: `array`):

Which tabs to read for each channel link: videos, shorts, streams. Max results applies to each tab.

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

latest, popular or oldest. Same as the buttons at the top of a channel's Videos tab.

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

Only videos from this date on, as 2026-10-01 or an age such as 7 days. Free to use. Exact when video details are on; without them it relies on YouTube's rounded text, such as '2 weeks ago'.

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

Give a schedule a name, such as my-competitors, and each run returns only videos that runs under that name have not returned yet. Remembers up to 50,000 videos per name.

## `dedupe` (type: `boolean`):

A video found by two searches is returned, and charged, once.

## Actor input object example

```json
{
  "searchQueries": [
    "coffee review",
    "home barista"
  ],
  "startUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "@veritasium"
  ],
  "maxResults": 20,
  "videoDetails": true,
  "channelDetails": true,
  "searchType": "videos",
  "sortBy": "relevance",
  "uploadDate": "any",
  "duration": "any",
  "country": "KR",
  "channelContent": [
    "videos"
  ],
  "channelSort": "latest",
  "publishedAfter": "7 days",
  "monitorName": "my-competitors",
  "dedupe": true
}
```

# Actor output Schema

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

No description

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

No description

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

No description

# 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": [
        "coffee review"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("k-data-lab/youtube-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": ["coffee review"],
    "maxResults": 10,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": [
    "coffee review"
  ],
  "maxResults": 10
}' |
apify call k-data-lab/youtube-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,k-data-lab/youtube-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YzLSmpGcnm4RddOZ2/builds/N1s9Ccf3HAcOa54yN/openapi.json
