Facebook Video Transcript Extractor avatar

Facebook Video Transcript Extractor

Pricing

Pay per event

Go to Apify Store
Facebook Video Transcript Extractor

Facebook Video Transcript Extractor

Turn public Facebook videos and Reels into AI transcript records with text, timestamps, detected language, metadata, and source provenance. No Facebook login or transcription API key required.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Turn public Facebook videos and Reels into clean transcript records with detected language, timestamped segments, optional word timing, public video metadata, and source provenance.

Facebook Video Transcript Extractor downloads only the audio needed for speech recognition and transcribes it inside the Actor. It does not require a Facebook login or a separate transcription API key. Use it for recurring content research, searchable archives, quote discovery, subtitle preparation, and downstream AI workflows.

What does Facebook Video Transcript Extractor do?

Provide one or more public Facebook video URLs. For every accessible video, the Actor:

  1. resolves the canonical public video and metadata;
  2. checks the configured duration and file-size limits;
  3. downloads the best available audio stream;
  4. detects or uses the requested spoken language;
  5. generates plain text and timestamped segments with a bundled speech model;
  6. optionally adds timing and confidence for every recognized word;
  7. saves one typed dataset record with its source URL and extraction method.

Unlike caption-only tools, this Actor recognizes speech even when the creator did not publish a caption track. It does not use a remote AI transcription service, so users do not need to supply an API credential.

Who is it for?

Content researchers

  • Search spoken content across public Facebook videos.
  • Collect source-linked transcripts for qualitative analysis.
  • Compare recurring videos without manually replaying every clip.

Social media and editorial teams

  • Find quotes and topic mentions quickly.
  • Repurpose public video ideas into notes or editorial briefs.
  • Create a first-pass subtitle timeline for review.

AI and data teams

  • Feed transcript text into summarization, classification, or RAG pipelines.
  • Keep segment timestamps for source-grounded answers.
  • Export repeatable JSON records instead of copying text by hand.

Accessibility and localization teams

  • Create an editable first transcript for public videos.
  • Use detected language as routing metadata.
  • Request word timing for subtitle or review tools.

Why use this Actor?

  • No Facebook login — designed for public video and Reel URLs.
  • No transcription API key — speech recognition runs in the Actor container.
  • Works without published captions — audio is transcribed directly.
  • Useful timestamps — every transcript includes segment start and end times.
  • Optional word timing — add per-word timing and confidence only when needed.
  • Source provenance — every result keeps the original and canonical URL.
  • Public metadata — title, creator, duration, thumbnail, and view count are included when Facebook exposes them.
  • Bounded processing — duration, item, and audio-size limits protect unattended runs.
  • Pay for useful output — failed URLs do not trigger a transcript event charge.

What Facebook video data can you extract?

FieldMeaning
sourceUrlExact Facebook URL supplied in the input
canonicalUrlCanonical URL resolved from the public video
videoIdFacebook video identifier
titlePublic title or title-like post text
descriptionPublic description or caption when available
creatorNamePublic creator or Page name
creatorIdPublic creator or Page identifier
durationSecondsVideo duration in seconds
thumbnailUrlPublic thumbnail URL when available
viewCountPublic view count when Facebook returns it
languageDetected or requested spoken-language code
languageProbabilityDetection confidence from 0 to 1
transcriptFull recognized speech as plain text
segmentsTimestamped passages with start, end, and text
wordsOptional word timing and confidence records
segmentCountNumber of transcript segments
wordCountApproximate transcript word count
extractionMethodai-speech-to-text provenance marker
transcriptionModelModel used to generate the transcript
errorPer-URL diagnostic when processing fails
transcribedAtISO 8601 processing timestamp

Metadata can be null when Facebook does not expose it. Transcript fields are populated only when accessible audio contains detectable speech.

How much does it cost to transcribe Facebook videos?

The Actor uses pay-per-event pricing:

  • Run started: $0.005 once per run.
  • Facebook transcript extracted: charged only when a URL produces a non-empty transcript.
Apify plan tierPrice per successful transcript
FREE$0.02392
BRONZE$0.02080
SILVER$0.016224
GOLD$0.01248
PLATINUM$0.00832
DIAMOND$0.005824

Examples on the FREE tier:

  • 1 successful video: $0.005 + $0.02392 = $0.02892.
  • 10 successful videos: $0.005 + (10 × $0.02392) = $0.24420.
  • 100 successful videos: $0.005 + (100 × $0.02392) = $2.39700.

A private, unavailable, silent, over-duration, or otherwise failed URL produces a diagnostic record but no transcript event charge. The one-time start fee still applies. Apify platform credits and plan terms determine the final account charge.

Getting started

  1. Open the Actor in Apify Console.
  2. Add one or more public Facebook Reel or video URLs.
  3. Leave language as auto, or enter the known spoken-language code.
  4. Enable word timestamps only if your workflow needs them.
  5. Set a suitable maximum duration; the default is 10 minutes.
  6. Click Start.
  7. Open the dataset to inspect transcript text, segments, metadata, and errors.
  8. Export the dataset as JSON, CSV, Excel, XML, or RSS, or connect it to another workflow.

Start with one short public video. Once its transcript quality fits your use case, add the rest of your batch.

Input parameters

ParameterTypeDefaultDescription
videoUrlsstring arrayrequiredPublic facebook.com or fb.watch video and Reel URLs; maximum 25
maxItemsinteger10Maximum number of unique URLs processed, from 1 to 25
languagestringautoAutomatic detection or a 2/3-letter code such as en, es, fr, or deu
includeWordTimestampsbooleanfalseInclude per-word start, end, and confidence values
maxVideoDurationSecondsinteger600Reject videos longer than this value; allowed range 10–1800

Example input:

{
"videoUrls": [
"https://www.facebook.com/reel/636216875539019"
],
"maxItems": 1,
"language": "auto",
"includeWordTimestamps": false,
"maxVideoDurationSeconds": 120
}

Duplicate URLs are processed once. maxItems is applied after deduplication.

Output example

The following abbreviated record reflects current output from a real public Reel test:

{
"sourceUrl": "https://www.facebook.com/reel/1527031198388079",
"canonicalUrl": "https://www.facebook.com/reel/1527031198388079",
"videoId": "1527031198388079",
"title": "Squeeze lemon to a cloves water",
"creatorName": "Remedies 4U",
"durationSeconds": 23.822,
"language": "en",
"languageProbability": 1,
"transcript": "At night, add four cloves to a glass of water and let it sit until morning...",
"segments": [
{
"startSeconds": 0,
"endSeconds": 4.64,
"text": "At night, add four cloves to a glass of water and let it sit until morning."
}
],
"words": null,
"segmentCount": 5,
"wordCount": 78,
"extractionMethod": "ai-speech-to-text",
"transcriptionModel": "faster-whisper-tiny",
"error": null,
"transcribedAt": "2026-01-15T12:00:00.000Z"
}

When includeWordTimestamps is true, words contains objects with word, startSeconds, endSeconds, and probability.

Transcript accuracy and limitations

Speech recognition is probabilistic. Accuracy varies with language, accents, overlapping speakers, music, background noise, compression, and recording quality. Review transcripts before publishing quotations, subtitles, legal records, or accessibility content.

Other limitations:

  • Only public videos that Facebook serves without login are supported.
  • Private, deleted, age-restricted, region-restricted, or login-only videos fail.
  • The Actor transcribes audible speech; it does not perform OCR on on-screen text.
  • Speaker diarization and translation are not included.
  • Public metadata availability varies by video format and Facebook response.
  • Videos longer than 30 minutes are not accepted.
  • Audio files above the internal 50 MB safety limit are rejected.
  • Facebook delivery changes can temporarily affect extraction.
  • The Actor processes URLs sequentially to keep memory and source load bounded.

Failure behavior and retries

Each URL receives its own dataset record. When a URL fails, transcript is null and error explains the failure. Other URLs in the same batch continue.

If every URL fails, the Actor exits non-zero after saving the diagnostic rows. This makes scheduled tasks and API clients detect a useless run instead of treating an empty result as success.

For transient Facebook delivery errors, retry the run later. Do not add private cookies or account credentials; this Actor has no login input and does not store user sessions.

Tips for reliable transcript extraction

  • Use the canonical public video or Reel URL when possible.
  • Test each source Page with one short video before scheduling a batch.
  • Keep language on auto unless you know the spoken language.
  • Set the language explicitly when short clips are detected incorrectly.
  • Leave word timestamps off for ordinary research; enable them for subtitle editing or precise quote lookup.
  • Set maxVideoDurationSeconds close to the expected clip length to fail fast on accidental long-form inputs.
  • Keep batches small when processing long videos.
  • Preserve sourceUrl, videoId, and segment timestamps in downstream systems so every quote remains traceable.

Recurring content research workflow

A practical scheduled workflow is:

  1. maintain an approved list of public Facebook video URLs;
  2. run this Actor on new URLs daily or weekly;
  3. store videoId as the deduplication key;
  4. split segments into source-linked text chunks;
  5. classify topics or search for tracked phrases;
  6. send matched excerpts and timestamps to a reviewer;
  7. retain the canonical URL for verification.

The Actor does not discover new videos or compare historical runs itself. Use an upstream Facebook scraper or your own URL feed for discovery, then pass selected public URLs here.

Integrations

Google Sheets or Airtable

Export one row per video for editorial review. Keep the full transcript and source URL; store segment arrays in JSON-capable columns or a linked table.

LLM summarization

Send transcript to an LLM for summaries, themes, or quote candidates. Include sourceUrl and timestamps in the prompt so generated notes remain verifiable.

Chunk the segments array, embed each chunk, and store videoId, startSeconds, and endSeconds as metadata. Search results can then link back to the relevant moment.

Webhooks and scheduled tasks

Use Apify schedules for recurring URL lists and webhooks to notify a downstream pipeline after successful runs. Check run status and each row's error field before importing.

Run with the Apify API

Replace YOUR_TOKEN with an Apify API token.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~facebook-video-transcript-extractor/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"videoUrls": ["https://www.facebook.com/reel/636216875539019"],
"maxItems": 1,
"language": "auto",
"includeWordTimestamps": false,
"maxVideoDurationSeconds": 120
}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/facebook-video-transcript-extractor').call({
videoUrls: ['https://www.facebook.com/reel/636216875539019'],
maxItems: 1,
language: 'auto',
includeWordTimestamps: false,
maxVideoDurationSeconds: 120,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].transcript);

Python

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_TOKEN")
run = client.actor("automation-lab/facebook-video-transcript-extractor").call(
run_input={
"videoUrls": ["https://www.facebook.com/reel/636216875539019"],
"maxItems": 1,
"language": "auto",
"includeWordTimestamps": False,
"maxVideoDurationSeconds": 120,
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items[0]["transcript"])

Use with MCP and AI agents

Add the Actor to Claude Code through Apify MCP:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/facebook-video-transcript-extractor"

For Claude Desktop, Cursor, VS Code, or another MCP client, add this JSON configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/facebook-video-transcript-extractor"
}
}
}

Example prompts showing MCP usage:

  • “Transcribe this public Facebook Reel and list the main claims with timestamps.”
  • “Create a source-linked summary from these Facebook video URLs.”
  • “Extract word timestamps from this Reel and draft an editable subtitle timeline.”

Always review speech-recognition output before an agent publishes or acts on it.

Responsible use and legality

This Actor processes publicly accessible video audio and metadata. It does not authenticate to Facebook, access private posts, or accept user cookies.

You are responsible for ensuring that collection, storage, transcription, and downstream use comply with applicable laws, Facebook terms, intellectual-property rights, privacy obligations, and organizational policies. Avoid collecting sensitive personal data without a valid purpose. Do not use transcripts to impersonate speakers, misrepresent statements, or redistribute protected content unlawfully.

Use short excerpts and source links where appropriate. Apply retention controls to downloaded dataset records. Honor deletion or access requests that apply to your use case.

Troubleshooting

“No videos could be transcribed”

Open the dataset even when the run failed. It contains one diagnostic row per attempted URL. Confirm that each URL opens publicly in a logged-out browser and is not private, deleted, region-restricted, or over the configured duration.

The language is wrong

Short clips, music, or sparse speech can confuse automatic detection. Set language to the known two/three-letter code and rerun.

The transcript contains incorrect words

Speech recognition can mishear names, technical terms, overlapping speakers, or noisy audio. Use segment timestamps to review the original and correct important text manually.

Word timing is missing

Set includeWordTimestamps to true. The default is false to keep ordinary output smaller.

A URL worked before but fails now

Public Facebook media URLs and delivery responses can change. Retry the canonical post URL later. If it remains unavailable while logged out, it is outside the Actor's public scope.

FAQ

Does this Actor require Facebook login cookies?

No. It intentionally supports only videos Facebook exposes publicly without authentication.

Does the video need captions?

No. The Actor performs speech recognition on audio and does not depend on a published caption track.

Which languages are supported?

The bundled multilingual model detects and recognizes many common languages. Quality varies by language and audio. Set a language code when automatic detection is unreliable.

Does it download or return the whole video?

No. It downloads the best audio stream temporarily for transcription, deletes temporary files after processing, and returns transcript data rather than media files.

Can it translate transcripts?

No. Translation is not included. Send the resulting transcript to a translation workflow if needed.

Can it find all videos from a Facebook Page?

No. Input is URL-based. Use a separate discovery source to collect approved public URLs, then send those URLs to this Actor.

Are failed videos charged as transcripts?

No. A failed video has no transcript event charge. The one-time run-start fee still applies.

How long can a video be?

The default limit is 600 seconds. You can raise it to 1,800 seconds, but longer videos take more compute and are more likely to hit run limits.

Choose this Actor when the core job is speech-to-text for public Facebook URLs, including videos without caption tracks. Choose Video Transcript Scraper when one mixed-platform caption workflow is more important than Facebook-specific AI transcription.