# Best Youtube Transcripts Scraper (`scrape-creators/best-youtube-transcripts-scraper`) Actor

Extract transcripts from YouTube videos. Simply enter video URLs. Get full text, timestamps, and metadata where available. Perfect for research, SEO, and content analysis.

- **URL**: https://apify.com/scrape-creators/best-youtube-transcripts-scraper.md
- **Developed by:** [Scrape Creators](https://apify.com/scrape-creators) (community)
- **Categories:** Social media, Developer tools, Automation
- **Stats:** 2,386 total users, 363 monthly users, 91.6% runs succeeded, 85 bookmarks
- **User rating**: 4.52 out of 5 stars

## Pricing

$1.00 / 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/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

## 📜 Best YouTube Transcripts Scraper

**Best YouTube Transcripts Scraper** is a powerful and easy-to-use web scraping tool built for extracting transcripts from YouTube videos. Whether you're analyzing content, indexing videos, or researching, this scraper makes getting YouTube subtitles simple.

This actor fetches transcripts (when available) from a list of YouTube video URLs. It works great for:

- 🧠 Researchers analyzing video content
- 📈 SEO teams indexing spoken words for better searchability
- 📰 Journalists looking to quickly reference quotes
- 🧑‍💻 Developers building tools powered by video transcripts
- 🤖 AI teams gathering training data from spoken content

> ⚠️ **Note:** Transcripts are only returned for videos where YouTube provides them. This includes both auto-generated and creator-supplied subtitles.

***

### 💡 What can you scrape?

Using this scraper, you’ll be able to extract:

| Field                  | Description                              |
| ---------------------- | ---------------------------------------- |
| `id`                   | Id of the video                          |
| `url`                  | The input YouTube video URL              |
| `transcript_only_text` | Full transcript text (if available)      |
| `transcript`           | Array of timestamped transcript segments |

***

### 🔧 How to use Best YouTube Transcripts Scraper

This actor is designed to be beginner-friendly. You don’t need coding knowledge to run it — just follow these steps:

1. **Sign up or log in** to your Apify account.
2. **Open the Best YouTube Transcripts Scraper** actor.
3. Add one or more YouTube video URLs to the input field.
4. Click the **Start** button and wait for the scraper to finish.
5. **Export your data** as JSON, CSV, Excel, or HTML from the dataset tab.

***

### 📥 Input example

```json
{
  "videoUrls": [
    "https://www.youtube.com/watch?v=HV6OlMPn5sI",
    "https://www.youtube.com/watch?v=CW7gfrTlr0Y"
  ]
}
```

***

### 📤 Output example

```json
{
  "id": "figrl0aOULs",
  "url": "https://www.youtube.com/watch?v=figrl0aOULs",
  "transcript_only_text": "Every single time someone watches\nthis video, it helps feed someone in need. And since we get a lot of views, I brought a lot of people! Here you go. Thank you, friend. Yeah, no problem. If you're wondering how this works, every time someone\nwatches this whole video, including you right\nnow, money is generated. And as this video grows, that\nincreasing amount of money will feed an astonishing amount of people. Everybody eats. But that's not all it's going to do. Mr. Beast! You watching this video\nwill supply farmland, build massive kitchens, fill\nschools with food for their students, and save children from child labor. So, honestly, I'm glad you're here. There you go. 1500\npeople have now been fed. I'm very excited for the future. The meals you saw us\ngiving away are cost effective and jam-packed with nutrients and honestly, way healthier\nthan most meals in America. Jimmy, why does it feel like\nI'm... carrying the whole thing? Let's get to",
  "transcript": [
    {
      "text": "Every single time someone watches\nthis video, it helps feed someone in need.",
      "startMs": "0",
      "endMs": "3437",
      "startTimeText": "0:00"
    },
    {
      "text": "And since we get a lot of views,",
      "startMs": "3437",
      "endMs": "4972",
      "startTimeText": "0:03"
    },
    {
      "text": "I brought a lot of people!",
      "startMs": "5105",
      "endMs": "6206",
      "startTimeText": "0:05"
    }
  ]
}
```

***

### 💵 Pricing

This actor is completely free! (for now)

***

### 🧩 Integrations

Connect this actor with:

- Clay
- Crew AI
- Zapier
- Make (Integromat)
- LangChain
- And more

***

### 💬 Need help?

Email **adrian@thewebscrapingguy.com** with questions, feedback, or support requests. I'm happy to help.

***

### ❓FAQ

#### Does it work with Shorts or Livestreams?

If YouTube provides a transcript for the video (including Shorts), it will be scraped. Livestreams and non-captioned videos will not return results.

#### Can I scrape in bulk?

Yes! Add as many video URLs as you like. The actor will loop through and collect transcripts for each one.

#### What formats can I export to?

JSON, CSV — all available via the Apify platform's built-in export tools.

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

Transcripts are public data provided by YouTube.

***

# Actor input Schema

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

The URLs of the videos you want the transcripts of.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ]
}
```

# 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 = {
    "videoUrls": [
        "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrape-creators/best-youtube-transcripts-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 = { "videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"] }

# Run the Actor and wait for it to finish
run = client.actor("scrape-creators/best-youtube-transcripts-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 '{
  "videoUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  ]
}' |
apify call scrape-creators/best-youtube-transcripts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrape-creators/best-youtube-transcripts-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/L57jETyu9qT6J7bs5/builds/OPk7DXB1bqFmYGrQH/openapi.json
