# Facebook Video Transcript Scraper (`scraper-mind/facebook-video-transcript-scraper`) Actor

Extract accurate transcripts from public Facebook videos with the Facebook Video Transcript Scraper. Fast, affordable, and reliable, perfect for content creators, researchers, and marketers. Only $5 per run with proxy support and multi-video processing.

- **URL**: https://apify.com/scraper-mind/facebook-video-transcript-scraper.md
- **Developed by:** [Scraper Mind](https://apify.com/scraper-mind) (community)
- **Categories:** Social media, Videos, Developer tools
- **Stats:** 30 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Facebook Video Transcript Scraper 🚀

**Facebook Video Transcript Scraper**, the ultimate **Facebook transcript extractor** designed to help you extract video transcripts, captions, and metadata from public Facebook videos. Whether you're a content creator, researcher, or developer, this tool makes scraping Facebook video transcripts effortless and efficient.

---

**Why Choose Facebook Video Transcript Scraper?**

| Feature                           | Benefit                                        |
| --------------------------------- | ---------------------------------------------- |
| ✅ Only \$5                       | Cheaper than competitors          |
| ✅ Multiple Videos in Single Run  | Save time, scrape many videos at once         |
| ✅ High Accuracy & Proxy Fallback  | Reliable transcripts without rate-limit interruptions |


### 🔑 Key Features

* ✅ **High Accuracy & Reliability**: Built for robust performance with 3 retries and automatic proxy fallbacks.
* 🌐 **Multi-Video Support**: Extract transcripts from multiple Facebook videos in a single run.
* 💸 **Affordable**: Only \$5 per run—at least 50% cheaper than any other Facebook transcript scraper on the market.
* 🛡️ **Smart Proxy Integration**: Seamlessly switch between datacenter proxies and residential fallback when Facebook blocks requests.
* ⚡ **Fast & Scalable**: Processes videos sequentially with intelligent delays to avoid detection.
* 📊 **Structured Output**: Export transcript data as JSON or push to Apify dataset with real-time streaming.
* 🔄 **Retry Mechanism**: Up to 3 attempts per video with exponential backoff for maximum success rate.

---

### 📝 Input

The Facebook video transcript scraper accepts a JSON input file (`input.json`) with the following structure:

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "startUrls": [
    { "url": "https://www.facebook.com/briantylercohen/videos/1350752639547526" },
    { "url": "https://www.facebook.com/100044280796927/videos/576767842126370" }
  ]
}
````

| Key                  | Type    | Description                                                             |
| -------------------- | ------- | ----------------------------------------------------------------------- |
| `proxyConfiguration` | object  | Proxy settings. Use Apify proxy for best results with Facebook.        |
| `useApifyProxy`      | boolean | `true` to enable Apify proxy (recommended); `false` for direct connections. |
| `startUrls`          | array   | List of Facebook video URLs to extract transcripts from.               |
| `url`                | string  | Facebook video URL (e.g., `https://www.facebook.com/page/videos/123456`). |

***

### 📦 Output

On success, you'll get an array of JSON objects with extracted transcript data:

```json
[
  {
    "url": "https://www.facebook.com/briantylercohen/videos/1350752639547526",
    "video_id": "1350752639547526",
    "transcript": "Welcome to today's show. In this episode, we'll be discussing the latest developments in politics and their impact on society...",
    "timestamp": "2024-05-29 12:30:45",
    "success": true,
    "error_message": null,
    "used_proxy_type": "user-selected"
  }
]
```

| Key                | Type    | Description                                              |
| ------------------ | ------- | -------------------------------------------------------- |
| `url`              | string  | Original Facebook video URL.                             |
| `video_id`         | string  | Extracted video ID from the URL.                        |
| `transcript`       | string  | Full video transcript/captions extracted from Facebook. |
| `timestamp`        | string  | When the transcript was extracted (YYYY-MM-DD HH:MM:SS). |
| `success`          | boolean | `true` if transcript extraction succeeded.               |
| `error_message`    | string  | Error details if extraction failed, `null` if successful. |
| `used_proxy_type`  | string  | Type of proxy used: "user-selected" or "residential-fallback". |

***

### 🚀 How to Use the Facebook Video Transcript Scraper (via Apify Console)

1. **Open Apify Console**: Log in at <https://console.apify.com> and select the **Actors** tab.
2. **Find Your Actor**: Search for **facebook-video-transcript-scraper** and click its card to view details.
3. **Configure Input**: In the **INPUT** section, use the built‑in form to:

   - Toggle **Use Apify Proxy** on (recommended for best results with Facebook).
   - Add one or more Facebook video URLs in the **Facebook Video URLs** list.
4. **Run the Actor**: Click the **Run** button at the top-right to launch the Facebook transcript scraper.
5. **Monitor Progress**: Watch live logs in the **Run** panel to track extraction status, retries, and proxy fallbacks.
6. **Access Results**: Once the run completes, switch to the **OUTPUT** tab and open the **Facebook Video Transcript Data** dataset.
7. **Export Data**: Filter, preview, and export the scraped transcripts to JSON or CSV with a single click.

That's it! Use the intuitive Apify interface—no code required—to start extracting Facebook video transcripts in minutes.

***

### 🎯 Advanced Features

#### Smart Proxy Management

- **Datacenter Proxy First**: Starts with fast datacenter proxies for optimal performance
- **Automatic Fallback**: Switches to residential proxies when Facebook blocks datacenter IPs
- **Proxy Rotation**: Each video uses a fresh proxy session to avoid rate limits

#### Robust Error Handling

- **3 Retry Attempts**: Each video gets up to 3 extraction attempts with exponential backoff
- **Facebook Block Detection**: Automatically detects when Facebook rejects requests (403, 429, 400, 401)
- **Real-time Streaming**: Results are saved immediately after each video is processed

#### Intelligent Rate Limiting

- **Random Delays**: 3-7 second delays between videos to mimic human behavior
- **Batch Processing**: Videos processed sequentially to avoid overwhelming Facebook servers
- **Timeout Handling**: 30-second timeout per video with graceful failure handling

***

### 💡 Best Use Cases for Facebook Video Transcript Scraper

- **Content Analysis**: Analyze video content at scale for research and insights.
- **Accessibility Compliance**: Extract transcripts to make video content accessible.
- **SEO Optimization**: Use video transcripts to improve content searchability.
- **Market Research**: Analyze competitor video content and messaging strategies.
- **Content Repurposing**: Convert video content into blog posts, articles, and social media content.
- **Academic Research**: Extract data from educational and informational videos for studies.
- **Compliance Monitoring**: Monitor video content for regulatory compliance and brand safety.
- **Translation Services**: Use extracted transcripts as source material for translation projects.

***

### 🔍 SEO Benefits of Facebook Video Transcript Extraction

- **Improved Discoverability**: Make video content searchable and indexable
- **Content Optimization**: Identify trending topics and keywords from video content
- **Competitive Analysis**: Understand what content performs well in your niche
- **Content Strategy**: Use transcript data to inform future content creation

***

### ⚙️ Technical Specifications

- **Supported URLs**: All public Facebook video URLs
- **Output Formats**: JSON, CSV via Apify dataset
- **Rate Limits**: Intelligent delays to respect Facebook's limits
- **Proxy Support**: Datacenter and residential proxy rotation
- **Error Recovery**: Comprehensive retry logic with exponential backoff
- **Real-time Processing**: Stream results as videos are processed

***

### 🛠️ Support & Feedback

We're here to help you get the most out of the **Facebook Video Transcript Scraper**! If you have questions or feedback, feel free to:

- 🐞 **Open an issue** on the repository
- 📩 **Email us** at <scrapermindapi@gmail.com>

# Actor input Schema

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

Enter one or more Facebook video URLs (e.g., https://www.facebook.com/briantylercohen/videos/1350752639547526).

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

Select proxies to be used by the scraper. If the selected proxy is rejected by Facebook, a residential proxy will be used as a fallback.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/briantylercohen/videos/1350752639547526"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.facebook.com/briantylercohen/videos/1350752639547526"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraper-mind/facebook-video-transcript-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 = {
    "startUrls": [{ "url": "https://www.facebook.com/briantylercohen/videos/1350752639547526" }],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scraper-mind/facebook-video-transcript-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 '{
  "startUrls": [
    {
      "url": "https://www.facebook.com/briantylercohen/videos/1350752639547526"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scraper-mind/facebook-video-transcript-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Facebook Video Transcript Scraper",
        "description": "Extract accurate transcripts from public Facebook videos with the Facebook Video Transcript Scraper. Fast, affordable, and reliable, perfect for content creators, researchers, and marketers. Only $5 per run with proxy support and multi-video processing.",
        "version": "0.1",
        "x-build-id": "5kzLKrNmxI7VHX0zf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraper-mind~facebook-video-transcript-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraper-mind-facebook-video-transcript-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scraper-mind~facebook-video-transcript-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraper-mind-facebook-video-transcript-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scraper-mind~facebook-video-transcript-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraper-mind-facebook-video-transcript-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Facebook Video URLs",
                        "type": "array",
                        "description": "Enter one or more Facebook video URLs (e.g., https://www.facebook.com/briantylercohen/videos/1350752639547526).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies to be used by the scraper. If the selected proxy is rejected by Facebook, a residential proxy will be used as a fallback."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
