Transcribe Facebook video via REST API
POST any public Facebook video URL — Reels, video posts, Watch shows, or Live replays — and receive timestamped JSON. Purpose-built for long-form content workflows where video posts routinely run 30+ minutes.
Three steps to a transcript
transcript plus timed segments. POST /api/facebook/transcript
Base URL: https://api.transcriptmagic.com. Authenticate with a Bearer token in the Authorization header.
curl -X POST https://api.transcriptmagic.com/api/facebook/transcript \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.facebook.com/natgeo/videos/1234567890123456/"}' import requests
response = requests.post(
"https://api.transcriptmagic.com/api/facebook/transcript",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"url": "https://www.facebook.com/natgeo/videos/1234567890123456/"},
)
data = response.json()
print(data["transcript"]) const response = await fetch("https://api.transcriptmagic.com/api/facebook/transcript", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://www.facebook.com/natgeo/videos/1234567890123456/" }),
});
const data = await response.json();
console.log(data.transcript); What you get back
A JSON object sized for long-form content — a typical Watch show returns dozens to hundreds of segments depending on duration.
{
"title": "Inside the Deep Ocean | NatGeo Explorer Classics",
"transcript": "Welcome back to Explorer. Tonight we're heading three thousand meters below the surface of the Pacific...",
"segments": [
{
"text": "Welcome back to Explorer.",
"startMs": "2400",
"endMs": "4120",
"startTimeText": "0:02"
},
{
"text": "Tonight we're heading three thousand meters below the surface of the Pacific.",
"startMs": "4120",
"endMs": "9480",
"startTimeText": "0:04"
}
],
"credits": 554
} title Video title when Facebook exposes onetranscript Full spoken content joined as a single stringsegments Line-level array with startMs, endMs, startTimeTextcredits Your remaining credit balance after this callWhat the API handles
Video posts
Standard videos on Pages, profiles, and Groups — from 30-second clips to multi-hour documentaries. Any public post URL works.
Facebook Reels
Short-form vertical content at facebook.com/reel/…. Great for hook analysis and cross-posting to Instagram or TikTok.
Watch videos
Long-form content from Facebook's dedicated video platform — shows, series, and creator originals. Episode-length transcription in one call.
Live replays
Completed Live sessions once they become regular posts. Ideal for repurposing webinars, interviews, and community Q&As into written content.
One credit per call
Every successful API request uses 1 credit — whether it's a 15-second Reel or a 3-hour Live replay. Monthly credits roll over, cancel anytime.
- SRT exports
- All platforms supported
No credit card required
- Download HD videos
- SRT, TXT, PDF exports
- AI summaries
- Talk to transcripts
- Repurpose content
- 40+ language translations
Credits rollover. Cancel anytime
- All Plus features
- Batch processing
Credits rollover. Cancel anytime
Processing enterprise-scale archives? Email [email protected] for custom pricing.
What developers build with it
Live replay repurposing
Turn a 90-minute Facebook Live into a blog post, tweet thread, email newsletter, and YouTube description — all from one transcript.
Show & series indexing
Make Facebook Watch catalogs searchable by the actual spoken content, not just titles and descriptions.
Community management
Transcribe Group Q&As, member live streams, and community events so moderators can skim text instead of rewatching video.
Media & publisher archives
Long-form news and documentary content gets transcribed to feed archives, quote-extraction pipelines, and SEO summary pages.
Customer-facing support
Transcribe brand Live sessions so support agents can answer questions that surfaced on stream without rewatching the whole session.
Accessibility workflows
Generate caption files for teams that publish to Facebook and other platforms simultaneously — same transcript powers every downstream caption.
Questions developers ask
Which Facebook URLs does the API accept?
Video posts (facebook.com/<page>/videos/<id>/), Reels (facebook.com/reel/<id>/), Watch URLs (facebook.com/watch?v=<id>), and share links generated from the three-dot menu. The API resolves the variant server-side.
Does the API work on Facebook Live replays?
Yes — once the Live session ends and the replay becomes a regular video post, it's transcribable. Actively streaming Live sessions aren't supported; wait for the replay to publish.
What about private or friends-only videos?
Only public videos are reachable. Friends-only posts, private group videos, and personal-profile videos with restricted audiences aren't supported because the upstream data isn't available to the API.
How long a video can the API handle?
Long-form content works fine — documentaries, multi-hour Live replays, full-length shows from Facebook Watch. The response returns segments for the entire video. Very long videos (2+ hours) may take slightly longer to process.
Are Reels and regular video posts billed differently?
No. Every successful call is 1 credit, regardless of video length or format. A 15-second Reel and a 2-hour Live replay both cost the same.
Does the API handle non-English Facebook videos?
Yes. Facebook is global and the API returns whichever language the creator spoke. For multilingual content pipelines, run the transcript through an LLM translation step after fetching.