# YouTube Video Summarizer – AI + Transcript (`sfoln/youtube-transcript-summary`)

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.

- Family: Documents & media
- Categories: AI, Videos, Automation
- Availability: on request (private on Apify). Email contact@sfoln.com with subject "Access request: YouTube Video Summarizer – AI + Transcript (sfoln/youtube-transcript-summary)" before calling; calls fail until it is public.
- JSON: https://www.sfoln.com/actors/youtube-transcript-summary.json
- MCP: https://mcp.apify.com?tools=sfoln/youtube-transcript-summary
- REST (sync): POST https://api.apify.com/v2/actors/sfoln~youtube-transcript-summary/run-sync-get-dataset-items
- REST (async): POST https://api.apify.com/v2/actors/sfoln~youtube-transcript-summary/runs

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 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. |

Pay-per-event, USD, billed by Apify; no platform usage charge. Only records with status `ok` are charged. Cap a run with `maxTotalChargeUsd`. Apify free plan: up to 10 per run.

## Run

```bash
curl -X POST "https://api.apify.com/v2/actors/sfoln~youtube-transcript-summary/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"videos":["https://www.youtube.com/watch?v=jNQXAC9IVRw"]}'
```

MCP client configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/youtube-transcript-summary"
    }
  }
}
```

Example prompt: Summarize https://www.youtube.com/watch?v=jNQXAC9IVRw in bullet points with timestamped chapters and the key takeaways.

## Input

List YouTube videos. Each video produces one dataset record with its transcript-based summary.

| Field | Type | Default | Meaning |
| --- | --- | --- | --- |
| `videos` (required) | array | — | 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. |
| `concurrency` | integer | `4` | Concurrency: Videos processed in parallel (1–8). |

Example input:

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

## Output

One record per input item with `status` (`ok` is charged; `not_found`, `error`, `skipped_*` are free) and `charged`. The run stores an `OUTPUT` summary record.

| 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:

```json
{
  "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"
}
```

## Related

- [YouTube Video Details Scraper](https://www.sfoln.com/actors/youtube-video-lookup.md) (`sfoln/youtube-video-lookup`)
- [YouTube Channel Videos Scraper](https://www.sfoln.com/actors/youtube-channel-videos.md) (`sfoln/youtube-channel-videos`)
- [Audio Transcription API – Speech to Text](https://www.sfoln.com/actors/audio-transcription.md) (`sfoln/audio-transcription`)
- [Podcast Scraper – Episodes & Transcripts](https://www.sfoln.com/actors/podcast-scraper.md) (`sfoln/podcast-scraper`)
- [URL to Markdown & Article Extractor](https://www.sfoln.com/actors/url-to-markdown-summary.md) (`sfoln/url-to-markdown-summary`)

Publisher: SFOLN LLC, contact@sfoln.com. Catalogue: https://www.sfoln.com/catalog.json. Agent guide: https://www.sfoln.com/agents.md.
