sfoln/youtube-transcript-summary · AI, Videos, Automation On request
Summarize YouTube videos with AI from their captions: a summary in your style, about 8 timestamped chapters, key takeaways, quotes and topics, plus the transcript. $5 per 1,000 transcripts + $8 per 1,000 AI summaries; videos without captions are free.
YouTube Video Summarizer – AI + Transcript turns YouTube links into a ready-to-read summary of each video: a summary in the style you choose (brief, detailed or bullet points), ≈8 timestamped chapters with titles and one-line summaries, key takeaways, up to five verbatim quotes with timestamps, and topic labels. Summaries are generated from the video's own captions, in the language you ask for. Built for researchers, marketers, students, newsletter writers and AI agents that need the gist of long videos without watching them.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
YouTube transcript youtube-transcript-retrieved
$0.005
$5 / 1,000
Charged once per video for which a caption transcript was returned. Videos without captions, missing or blocked videos and failed requests are not charged.
Video summary youtube-summary
$0.008
$8 / 1,000
Charged once per video for which the AI summary (summary, chapters, takeaways, quotes, topics) was generated.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~youtube-transcript-summary/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Summarize https://www.youtube.com/watch?v=jNQXAC9IVRw in bullet points with timestamped chapters and the key takeaways.
Input
Input fields
List YouTube videos. Each video produces one dataset record with its transcript-based summary.
Field
Type
Default
Meaning
videos *
array
required
Videos YouTube video / Shorts URLs or 11-character video IDs, one per line. Accounts on the Apify free plan can process up to 10 videos per run.
style
string
"brief"
Summary style brief: one short paragraph and 3–5 takeaways; detailed: 200–300 words and 5–10 takeaways; bullet: summary as 5–8 bullet points. One of "brief", "detailed", "bullet".
summaryLanguage
string
—
Summary language Language for the summary, chapters and takeaways, e.g. "English" or "es". Empty = the transcript's language.
transcriptLanguage
string
—
Caption language Caption track to read, e.g. "en". Empty = the video's original (or auto-generated) track.
includeTranscript
boolean
false
Include transcript text Also return the full transcript as plain text.
summarize
boolean
true
Summarize with AI Turn off to return only transcript statistics (and the transcript with includeTranscript) without the AI summary.
maxVideos
integer
500
Max videos Safety cap on how many videos are processed in this run. Range 1–5000.
concurrency
integer
4
Concurrency Videos processed in parallel (1–8). Range 1–8.
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The input item this record corresponds to.
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan
charged
boolean
Charged Whether the record's main event was charged.
chargedEvent
string | null
Charged event Event charged by the runner for this record, if any.
source
string
Source Upstream data source.
fetchedAt
string
Fetched at ISO timestamp.
warnings
array | null
Warnings Non-fatal problems (pages not reachable, truncation, budget limits).
error
object | null
Error { code, message, provider?, status? } when status is not ok.
videoId
string | null
Video ID 11-character YouTube video ID.
url
string | null
URL Canonical watch URL.
language
string | null
Caption language Caption track language as named by YouTube (e.g. "English").
transcriptWordCount
integer | null
Transcript words Words in the transcript.
segmentCount
integer | null
Caption segments Number of timed caption segments.
durationSecs
number | null
Duration (s, approx.) End of the last caption segment in seconds.
style
string | null
Style brief | detailed | bullet.
summary
string | null
Summary AI summary in the requested style.
chapters
array | null
Chapters ≈8 time-based chapters: [{ startSecs, endSecs, title, summary }]; times come from the captions.
keyTakeaways
array | null
Key takeaways Key takeaways (3–8 depending on style).
quotes
array | null
Quotes Up to 5 verbatim quotes: [{ text, startSecs }].
topics
array | null
Topics Up to 10 topic labels.
summaryCharged
boolean | null
Summary charged true when youtube-summary was charged for this video.
transcriptTruncated
boolean | null
Transcript truncated true when the transcript exceeded ≈10,000 tokens and each chapter was summarized from its opening part.
tokensUsed
object | null
Tokens used { input, output } Mistral tokens for the summary.
transcriptText
string | null
Transcript text Full transcript (only with includeTranscript).
hasCaptions
boolean | null
Has captions false on not_found records without captions.
Example record
{
"input": "https://youtu.be/bjVIDXPP7Uk",
"videoId": "bjVIDXPP7Uk",
"url": "https://www.youtube.com/watch?v=bjVIDXPP7Uk",
"language": "English",
"transcriptWordCount": 1840,
"segmentCount": 214,
"durationSecs": 412,
"style": "brief",
"summary": "The creator revisits backyard bike trails built two years ago, rebuilds the jumps and explains ...",
"chapters": [
{
"startSecs": 0,
"endSecs": 52,
"title": "Back at the farm",
"summary": "Introduction to the trails and the plan for the day."
},
{
"startSecs": 52,
"endSecs": 103,
"title": "Rebuilding the first jump",
"summary": "Digging and shaping the take-off."
}
],
"keyTakeaways": [
"Pack the dirt in thin layers",
"Test jumps at low speed first"
],
"quotes": [
{
"text": "the secret is patience and practice",
"startSecs": 90
}
],
"topics": [
"mountain biking",
"trail building"
],
"summaryCharged": true,
"transcriptTruncated": false,
"tokensUsed": {
"input": 3120,
"output": 410
},
"status": "ok",
"charged": true,
"chargedEvent": "youtube-transcript-retrieved",
"source": "scrapecreators+mistral",
"fetchedAt": "2026-10-14T10:00:00.000Z"
}