# YouTube Scraper 💰$0.50/1K – Videos, Shorts, Channels, Search (`rt-solutions/youtube-scraper`) Actor

Scrape YouTube search results, channels, videos, Shorts, live streams and playlists: views, likes, comments count, publish date, duration, description, tags, channel subscribers, country and links. No API key, no login.

- **URL**: https://apify.com/rt-solutions/youtube-scraper.md
- **Developed by:** [RT SOLUTIONS](https://apify.com/rt-solutions) (community)
- **Categories:** Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 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 – videos, Shorts, channels, search · $0.50 per 1,000 results

Scrape **YouTube** without an API key, quota or login: search results, whole channels, Shorts, live streams, playlists and single videos. Get **views, likes, comment count, exact publish date, duration, description, tags, category**, and for channels **subscribers, total views, video count, country, joined date, links, avatar and banner**.

**8× cheaper than the most popular YouTube scraper** ($0.50 vs $4 per 1,000 results on 31 October 2026) — and full video details are included at the same price.

#### What is YouTube Scraper?

The YouTube Data API is free until you hit its daily quota of 10,000 units — a single search costs 100 units, so about 100 searches a day. This Actor reads the public YouTube pages instead (the same data you see in your browser) and returns clean JSON, CSV or Excel, with no quota and no Google Cloud project.

Mix **search terms, channel URLs, video links and playlists** in one run. Duplicates are removed automatically.

#### What you can scrape

| Input | What you get |
|---|---|
| 🔎 Search terms | Videos, Shorts, channels or playlists, with YouTube's filters: upload date (last hour → this year), length, sort by views |
| 📺 Channel (`@handle`, `/channel/ID`, `/c/name`, `/user/name`) | One channel row + its videos, Shorts, live streams and/or playlists, newest first |
| ▶️ Video, Short, live, `youtu.be` link or 11-character video ID | Full details |
| 📃 Playlist | All videos with position, duration, views |
| 🔗 YouTube search URL | Same as a search term |

#### What data can YouTube Scraper extract?

**Videos** (search, channel tabs, playlists, links):

| Field | Example | Notes |
|---|---|---|
| `title`, `url`, `id` | `AI Agents Full Course 2026…`, `EsTrWCV0Ph4` | |
| `viewCount`, `viewCountText` | `1008270`, `1,008,270 views` | |
| `duration`, `durationSeconds` | `2:13:15`, `7994` | |
| `publishedTimeText` | `7mo ago` | Always available |
| `channelName`, `channelId`, `channelUrl`, `channelVerified` | `Nick Saraev` | |
| `thumbnailUrl`, `descriptionSnippet`, `badges`, `isLive` | | |
| `likeCount`, `commentCount`, `commentCountText` | `19815`, `665` | With *Full video details* (always for pasted video links) |
| `publishedAt`, `uploadedAt` | `2026-03-07T21:01:31-08:00` | Exact date and time, with details |
| `description`, `hashtags`, `keywords`, `category` | | Full text and tags, with details |
| `channelSubscriberCount`, `isShort`, `isUnlisted`, `wasLive`, `isFamilySafe` | | With details |
| `position` | `3` | Playlists |
| `searchQuery`, `channelTab`, `scrapedAt` | | Where the row came from |

**Shorts**: `title`, `url`, `id`, `viewCount`, `viewCountText`, `thumbnailUrl` (+ full details when you paste a Short link).

**Channels**: `title`, `handle`, `url`, `id`, `subscriberCount`, `subscriberCountText`, `videoCount`, `totalViews`, `country`, `joinedDate`, `description`, `links`, `keywords`, `verified`, `isFamilySafe`, `avatarUrl`, `bannerUrl`, `rssUrl`.

#### How much does it cost to scrape YouTube?

**$0.50 per 1,000 results** (cheaper on higher Apify plans). A result is one video, Short, channel or playlist. **Full video details cost nothing extra.** Missing, private or removed videos, and searches with no results, are free.

##### Real runs — 3 November 2026

Four typical jobs on the Apify platform (free plan, default settings):

| Job | Results | Run time | Price at $0.50/1K |
|---|---|---|---|
| Search "home workout", uploaded this week, sorted by views | 100 videos | 14 s | $0.050 |
| Search "ai agents tutorial", 50 results **with full video details** | 50 videos (42 with a like count) | 94 s | $0.025 |
| Channel @mkbhd, Videos + Shorts tabs, 100 each | 1 channel + 100 videos + 100 Shorts | 28 s | $0.10 |
| Shorts search "cooking hacks" | 50 Shorts | 7.5 s | $0.025 |

##### Bulk example

Tracking 200 channels every day (channel row + 20 newest videos each) is ~4,200 results per day, ~126,000 per month = **$63/month**. With 10 videos each and no daily channel row: about **$30/month**.

#### Price compared with other YouTube Actors — 31 October 2026

Main-event prices listed on the Apify Store that day (all per result / dataset item):

| Actor | Monthly users (31 Oct) | Price per 1,000 results |
|---|---|---|
| streamers/youtube-scraper | 16,328 | $4.00 |
| streamers/youtube-channel-scraper | 3,406 | $1.30 |
| grow_media/youtube-channel-video-scraper | 1,564 | $1.00 |
| apidojo/youtube-channel-information-scraper | 1,105 | $0.50 |
| apidojo/youtube-scraper | 983 | $0.50 |
| api-ninja/youtube-search-scraper | 854 | $5.00 |
| streamers/youtube-shorts-scraper | 846 | $4.00 |
| **This Actor** — search, channels, Shorts, playlists and video details in one | new | **$0.50** |

#### Who this is not for

- **You need transcripts / subtitles.** Use [YouTube Transcript](https://apify.com/rt-solutions/youtube-transcript) on the video URLs from this Actor.
- **You need the comments themselves.** Use [YouTube Comments Scraper](https://apify.com/rt-solutions/youtube-comments-scraper); this Actor gives the comment *count*.
- **You need channel business emails.** YouTube hides them behind a login and a captcha; this Actor never logs in.
- **You need to download video files.** Not supported.
- **You need YouTube Analytics data** (watch time, revenue, audience) — only the channel owner can see it.

#### What's new

- **3 November 2026** — In-depth documentation: real runs, price comparison, full field reference.
- **2 November 2026** — Ready-to-run Python example on GitHub ([youtube-data-without-api-quota](https://github.com/rtsolutionsmr/youtube-data-without-api-quota)).
- **1 November 2026** — FAQ, use cases and AI-agent (MCP) documentation.
- **31 October 2026** — First release: search with YouTube's filters, channels (Videos, Shorts, Live, Playlists tabs), playlists, video and Short links, full video details, automatic fallback when YouTube limits its video player (views, likes, comments, date and description are still returned).

#### How to scrape YouTube with YouTube Scraper

1. Open the Actor and click **Try for free**.
2. Add **search terms** and/or **YouTube URLs** (channels, videos, Shorts, playlists).
3. Choose what to collect from searches (videos, Shorts, channels, playlists or all) and the filters.
4. For channels, choose the tabs (Videos, Shorts, Live, Playlists) and how many items per channel.
5. Turn on **Full video details** if you need exact dates, likes, comment counts, full descriptions and tags.
6. Click **Start** and export to JSON, CSV, Excel or HTML — or connect Google Sheets, a webhook or your code.

#### ⬇️ Input examples

##### Most viewed videos of the week on a topic

```json
{ "searchQueries": ["home workout"], "maxResults": 100, "uploadDate": "week", "sortBy": "views" }
```

##### Newest videos of the last hour (monitoring)

```json
{ "searchQueries": ["iphone", "pixel"], "uploadDate": "hour", "maxResults": 50 }
```

YouTube removed "sort by upload date"; the *Upload date* filter is the reliable way to get the newest videos.

##### Long videos only, with full details

```json
{ "searchQueries": ["python tutorial"], "duration": "long", "maxResults": 50, "includeVideoDetails": true }
```

##### Find channels in a niche

```json
{ "searchQueries": ["vegan recipes", "meal prep"], "resultType": "channel", "maxResults": 100 }
```

Put the channel URLs from the results in `startUrls` in a second run to get subscribers, country and links.

##### Whole channels: info + videos + Shorts

```json
{
  "startUrls": ["https://www.youtube.com/@mkbhd", "@veritasium", "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA"],
  "channelTabs": ["videos", "shorts"],
  "maxVideosPerChannel": 100,
  "includeChannelInfo": true
}
```

##### Channel statistics only (no videos)

```json
{ "startUrls": ["@mkbhd", "@mrbeast", "@linustechtips"], "maxVideosPerChannel": 0 }
```

##### Video, Short and playlist links

```json
{
  "startUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://youtu.be/2reQut8WNGc",
    "https://www.youtube.com/shorts/Rlt6FhsUkEA",
    "https://www.youtube.com/playlist?list=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI"
  ]
}
```

##### Search results as seen in another country and language

```json
{ "searchQueries": ["recette facile"], "country": "FR", "language": "fr", "maxResults": 50 }
```

##### Input reference

| Field | Type | Default | Description |
|---|---|---|---|
| `searchQueries` | list | `["home workout"]` | What you would type in the YouTube search bar, one per line. |
| `startUrls` | list | `["https://www.youtube.com/@mkbhd"]` | Channels, videos, Shorts, live, playlists, search URLs, `@handle` or video IDs. |
| `maxResults` | number | 50 | Results per search term. |
| `resultType` | choice | `video` | `video`, `short`, `channel`, `playlist`, `all`. |
| `uploadDate` | choice | `any` | `any`, `hour`, `today`, `week`, `month`, `year`. |
| `duration` | choice | `any` | `any`, `short` (< 4 min), `medium` (4–20 min), `long` (> 20 min). |
| `sortBy` | choice | `relevance` | `relevance` or `views`. |
| `channelTabs` | list | `["videos"]` | `videos`, `shorts`, `streams` (live), `playlists`. |
| `maxVideosPerChannel` | number | 50 | 0 = channel info only. |
| `includeChannelInfo` | yes/no | yes | One row per channel with subscribers, views, country, links… |
| `includeVideoDetails` | yes/no | no | Exact date, likes, comments, full description, tags, category. Slower. |
| `language` | text | `en` | Interface language for texts like "2 days ago". |
| `country` | text | `US` | Country YouTube uses for search results. |
| `maxConcurrency` | number | 5 | For loading video details. |
| `proxyConfiguration` | proxy | Apify Proxy | Recommended default. |

#### ⬆️ Output examples

**Video** (with *Full video details*; real row from 3 November 2026, shortened):

```json
{
  "type": "video",
  "id": "EsTrWCV0Ph4",
  "title": "AI Agents Full Course 2026: Master Agentic AI (2 Hours)",
  "url": "https://www.youtube.com/watch?v=EsTrWCV0Ph4",
  "viewCount": 1008270,
  "duration": "2:13:15",
  "durationSeconds": 7994,
  "publishedTimeText": "7mo ago",
  "publishedAt": "2026-03-07T21:01:31-08:00",
  "likeCount": 19815,
  "commentCount": 665,
  "channelName": "Nick Saraev",
  "channelUrl": "https://www.youtube.com/@nicksaraev",
  "thumbnailUrl": "https://i.ytimg.com/vi/EsTrWCV0Ph4/maxresdefault.jpg",
  "searchQuery": "ai agents tutorial"
}
```

**Channel** (real row, 3 November 2026):

```json
{
  "type": "channel",
  "id": "UCBJycsmduvYEL83R_U4JriQ",
  "title": "Marques Brownlee",
  "handle": "@mkbhd",
  "url": "https://www.youtube.com/@mkbhd",
  "subscriberCount": 21400000,
  "videoCount": 1863,
  "totalViews": 5860083118,
  "country": "United States",
  "joinedDate": "2008-03-21",
  "links": [{ "title": "Twitter", "url": "http://twitter.com/MKBHD" }, { "title": "Instagram", "url": "http://instagram.com/MKBHD" }],
  "verified": true,
  "avatarUrl": "https://yt3.googleusercontent.com/…",
  "bannerUrl": "https://yt3.googleusercontent.com/…"
}
```

Inputs that cannot be read produce a free `warning` row (for example *"Video not found, private or removed — not charged."*), so nothing fails silently.

#### Use cases for YouTube data

##### Influencer and creator discovery

Search a niche with `resultType: "channel"`, then pull subscribers, country, links and recent videos for every candidate.

##### Competitor and brand monitoring

Track competitor channels daily: new uploads, views and likes on each video, Shorts output.

##### Trend research and content ideas

Find the most viewed videos of the week for any topic and spot formats that take off.

##### Market and academic research

Build datasets of videos with exact dates, engagement, tags and categories.

##### AI agents and LLM apps

Give an agent live YouTube data; combine with transcripts for summaries and topic analysis.

#### Integrations and YouTube API

**Python** (full script: [youtube-data-without-api-quota on GitHub](https://github.com/rtsolutionsmr/youtube-data-without-api-quota)):

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("rt-solutions/youtube-scraper").call(run_input={
    "searchQueries": ["ai agents tutorial"], "maxResults": 50, "uploadDate": "month", "includeVideoDetails": True,
})
for v in client.dataset(run.default_dataset_id).iterate_items():
    if v.get("type") == "video":
        print(v["viewCount"], v.get("likeCount"), v["title"])
```

**JavaScript / Node.js**:

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('rt-solutions/youtube-scraper').call({ startUrls: ['@mkbhd'], maxVideosPerChannel: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((i) => i.type === 'video').map((v) => `${v.viewCount} ${v.title}`));
```

**HTTP (one call, results in the response)**:

```bash
curl -X POST "https://api.apify.com/v2/acts/rt-solutions~youtube-scraper/run-sync-get-dataset-items?timeout=120" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"searchQueries":["home workout"],"maxResults":20,"uploadDate":"week"}'
```

**No-code**: Make, n8n (*HTTP Request* node) and Zapier can call the same endpoint; Apify's **Google Sheets** integration can push every run into a sheet; **webhooks** notify your system when a run finishes.

##### Use it from Claude, ChatGPT, Cursor or any MCP agent

Connect the Apify MCP server (https://mcp.apify.com) and allow `rt-solutions/youtube-scraper`. Example request: *"Find the 20 most viewed videos about home workouts uploaded this week and list their channels and view counts."*

#### 🤖 For AI Agents & LLM Apps

- **What the tool does**: returns YouTube search results, channel info and channel videos/Shorts, playlists and video details.
- **Minimal inputs**: `{"searchQueries": ["<topic>"]}` or `{"startUrls": ["@handle" | "<video/playlist URL>"]}`.
- **Freshness**: use `uploadDate` (`hour`, `today`, `week`, `month`, `year`) — YouTube has no sort-by-date.
- **Engagement**: set `includeVideoDetails: true` for `likeCount`, `commentCount`, exact `publishedAt`, `keywords`, `category`.
- **Output contract**: one object per result with `type` = `video` | `short` | `channel` | `playlist`; `warning` rows contain no data and are free.
- **Cost guard**: bound runs with `maxResults` and `maxVideosPerChannel`; cost = results × $0.0005 on the free plan.

#### ❓ FAQ

##### How do I scrape YouTube without the API quota?

Run this Actor with search terms or URLs. It reads public YouTube pages, so there is no API key, quota or Google Cloud project.

##### Is it legal to scrape YouTube?

The Actor only reads public pages that anyone can open without logging in and collects no private data. Use the data responsibly and in line with the laws that apply to you.

##### How much does it cost to scrape 10,000 YouTube videos?

$5 at $0.50 per 1,000 results — full video details included.

##### How do I get the newest videos on a topic?

Set *Upload date* to `hour`, `today` or `week`. YouTube removed sorting by date from search.

##### Can I get likes and comment counts?

Yes — turn on *Full video details* (always included for video links you paste).

##### Why is `likeCount` empty for some videos?

Some creators hide like counts, and YouTube sometimes limits its video player. In the 3 November run, 42 of 50 videos had a like count.

##### Why are comment counts rounded?

That is how YouTube shows them (e.g. "11K").

##### Can I scrape a whole channel?

Yes. Paste the channel URL or `@handle`, choose the tabs (Videos, Shorts, Live, Playlists) and `maxVideosPerChannel`.

##### Can I get only channel statistics?

Yes — set `maxVideosPerChannel` to 0.

##### Does it work for Shorts?

Yes: Shorts search (`resultType: "short"`), the Shorts tab of channels and pasted Short links.

##### Can I scrape playlists?

Yes — paste the playlist URL; every video is returned with its position, duration and views.

##### Can I get search results for another country?

Yes — set `country` (e.g. `FR`, `DE`, `IN`) and `language`.

##### Can I get the channel's email address?

No. YouTube hides business emails behind a login and a captcha.

##### Can I get transcripts or the comments themselves?

Use our [YouTube Transcript](https://apify.com/rt-solutions/youtube-transcript) and [YouTube Comments Scraper](https://apify.com/rt-solutions/youtube-comments-scraper) on the video URLs from this Actor.

##### Can I export to CSV, Excel or Google Sheets?

Yes — download from the run, or use the Google Sheets integration.

##### Can I schedule it?

Yes. Save your input as a Task and add a schedule (hourly, daily…).

##### Can I use it with the Apify API or an MCP server?

Yes — see "Integrations" (Python, Node.js, HTTP, Make, n8n, Zapier, MCP).

#### Limits

- Comment counts are rounded the way YouTube shows them (e.g. 11K).
- When YouTube limits its video player for a while, a video is still returned with views, likes, comments, publish date, description and channel, but `category`, `keywords` and the exact publish time may be empty (the date is kept).
- Business emails of channels are hidden by YouTube behind a login and are not collected.
- Age-restricted videos may return fewer details.

#### Run health

- 3 November 2026: 4 runs, 401 results, 0 errors, 0 failed runs (see "Real runs").

#### Your feedback

Missing a field or found a wrong value? Open an issue in the **Issues** tab — we answer fast and ship fixes (see "What's new"). If the Actor saved you time, a short review helps other creators and researchers find it.

#### Related scrapers

- [YouTube Transcript](https://apify.com/rt-solutions/youtube-transcript)
- [YouTube Comments Scraper](https://apify.com/rt-solutions/youtube-comments-scraper)
- [Bilibili Scraper](https://apify.com/rt-solutions/bilibili-scraper)
- [Google Trends Scraper](https://apify.com/rt-solutions/google-trends-scraper)

**Code example:** [YouTube data without the API quota (Python)](https://github.com/rtsolutionsmr/youtube-data-without-api-quota) — ready-to-run script on GitHub.

# Actor input Schema

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

What you would type in the YouTube search bar. One search per line.

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

Channels (youtube.com/@handle, /channel/ID, /c/name, or just @handle), videos (watch, youtu.be, Shorts, live), playlists and search URLs. Mix freely.

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

How many results to collect for each search term.

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

What to collect from searches.

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

YouTube's upload date filter for searches. Use it to get the newest videos.

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

YouTube's duration filter (videos only).

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

YouTube no longer offers sorting by date — use Upload date instead.

## `channelTabs` (type: `array`):

For channel URLs: which tabs to scrape (newest first).

## `maxVideosPerChannel` (type: `integer`):

0 = only the channel info.

## `includeChannelInfo` (type: `boolean`):

For channel URLs, also output one row with subscribers, total views, video count, country, joined date, description, links, avatar and banner.

## `includeVideoDetails` (type: `boolean`):

Open every video to add exact publish date, likes, comment count, full description, tags and category. Slower. Video URLs you paste always get full details.

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

Interface language for texts like '2 days ago' (e.g. en, fr, de, es).

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

Two-letter country code that YouTube uses for search results (e.g. US, GB, FR, DE, IN).

## `maxConcurrency` (type: `integer`):

Used when loading full video details.

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

Apify Proxy is recommended.

## Actor input object example

```json
{
  "searchQueries": [
    "home workout"
  ],
  "startUrls": [
    "https://www.youtube.com/@mkbhd"
  ],
  "maxResults": 50,
  "resultType": "video",
  "uploadDate": "any",
  "duration": "any",
  "sortBy": "relevance",
  "channelTabs": [
    "videos"
  ],
  "maxVideosPerChannel": 50,
  "includeChannelInfo": true,
  "includeVideoDetails": false,
  "language": "en",
  "country": "US",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All results.

# 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": [
        "home workout"
    ],
    "startUrls": [
        "https://www.youtube.com/@mkbhd"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rt-solutions/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": ["home workout"],
    "startUrls": ["https://www.youtube.com/@mkbhd"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rt-solutions/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": [
    "home workout"
  ],
  "startUrls": [
    "https://www.youtube.com/@mkbhd"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rt-solutions/youtube-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rt-solutions/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/9uksvwklK1IUXvZQt/builds/4NobvjqNFcJ9T70i4/openapi.json
