# YouTube Subtitle — Original & Auto-Translated (`myagizm/youtube-subtitle`) Actor

⚠️ Auto-translated subtitles need an automatic ~60-second wait before download; please do not restart during the wait. Download original or auto-translated YouTube subtitles with timestamped SRT, VTT and TXT.

- **URL**: https://apify.com/myagizm/youtube-subtitle.md
- **Developed by:** [MYM](https://apify.com/myagizm) (community)
- **Categories:** Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 video subtitles delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

> ⚠️ **WARNING — Please allow about 60 seconds before subtitles start downloading.** The Actor automatically waits **60 seconds after extracting video information and before each subtitle-file download**. This is intentional—not a stalled run—and is especially important for YouTube's auto-translated captions, which can otherwise return HTTP 429. **Do not abort or repeatedly restart the run during this wait.** No manual sleep setting is required. Total runtime is longer than 60 seconds and increases with multiple videos or subtitle tracks. This delay is not a guarantee against all YouTube access or rate limits.
>
> ⚠️ **UYARI — Altyazı indirme başlamadan önce yaklaşık 60 saniye bekleyin.** Actor, video bilgisi çıkarıldıktan sonra her altyazı dosyası için bu beklemeyi otomatik uygular. İşlem takılmış değildir; bu sırada çalışmayı iptal edip tekrar tekrar başlatmayın. Özellikle otomatik çevrilmiş altyazılarda gereklidir. Ayrıca ayar yapmanız gerekmez; toplam işlem süresi 60 saniyeden uzun olabilir.

## YouTube Subtitle — Original & Auto-Translated Captions

![Apify Actor](https://img.shields.io/badge/Apify-Actor-00b96b) ![Formats](https://img.shields.io/badge/Files-SRT%20VTT%20TXT-orange) ![Pricing](https://img.shields.io/badge/Pricing-per%20successful%20video-green)

**Download timestamped YouTube subtitles in your requested language.** Retrieve existing manual subtitles, original automatic captions, or available automatic translations, with readable cue intervals and ready-to-download subtitle files. This product focuses on subtitles rather than downloading media or generating new speech recognition. You do not need to provide a YouTube Data API key; Console use requires an Apify account and API use requires an Apify token.

> Start with one public video and the language you need. Allow the automatic wait to complete, then inspect the Timeline and file links. Availability and total runtime are not guaranteed.

### Table of contents

- [Features and selection](#features-and-selection)
- [Who uses these subtitles](#who-uses-these-subtitles)
- [Input and quick start](#input-and-quick-start)
- [Output fields](#output-fields)
- [Real output example](#real-output-example)
- [Pricing](#pricing)
- [Workflow and accuracy guidance](#workflow-and-accuracy-guidance)
- [Related YouTube products](#related-youtube-products)
- [Integrations and API](#integrations-and-api)
- [FAQ](#faq)
- [Chinese documentation](#中文说明)

### Features and selection

1. Prefer existing manual subtitles in the requested language.
2. Otherwise select native automatically generated captions in that language.
3. Otherwise select an available YouTube automatic translation into that language.

✅ A Timeline with each cue's real start, end, and text.
✅ Numeric seconds for applications and readable timestamps for people.
✅ SRT, VTT, and timestamped TXT files included in one result.
✅ Explicit source language and translation flags rather than guessing.
✅ One stored result per delivered video/language, not one billed item per cue.
✅ Structured JSON suitable for review, indexing, and your own downstream tools.

The same price applies to native captions and automatic translations. Translation availability depends on the video and YouTube's available tracks. A request for another language is not permission to silently return an unrelated source language. This is not an audio transcription service, a human translation service, or a guarantee of access to every public video.

### Who uses these subtitles

- **Researchers and journalists:** search interviews and talks while retaining source timestamps for verification.
- **Education teams:** review lecture captions and prepare material for permitted learning uses.
- **Localization editors:** obtain available captions and translations as editable files, then review terminology and timing.
- **Developers:** build caption search, retrieval, or analysis pipelines without treating transcript text as a replacement for provenance.
- **Accessibility reviewers:** inspect caption intervals, overlaps, and wording before publication.
- **Content teams:** analyze authorized material and identify passages for later human review.

The Actor supplies caption data. It does not itself summarize a video, label speakers, produce chapters, evaluate factual accuracy, generate embeddings, or secure copyright permission. Those tasks belong in a separate workflow with appropriate review and permissions.

### Input and quick start

1. Open this Actor in Apify Console.
2. Add a public YouTube video URL to `startUrls`.
3. Set `lang`, for example `tr` for Turkish or `en` for English.
4. Keep `maxItems: 1` for the first test.
5. Start once and allow the automatic 60-second subtitle wait to finish.
6. Check the final status, Timeline, language fields, and download links.

```json


{
  "startUrls": [
    {
      "url": "https://www.youtube.com/watch?v=IGoIfTVUly8"
    }
  ],
  "lang": "tr",
  "maxItems": 1
}

```

| Input | Type | Meaning |
|---|---|---|
| `startUrls` | array | Video URL entries, normally objects containing `url`. |
| `lang` | string | Requested language code; default `en`. One language per request. |
| `maxItems` | integer | Result limit; default 1, allowed input range 1–50. |

Use the documented fields rather than copying options from another Actor. There is no `searchTerms`, `auto`, manual-only, force-translation, or multi-language-array option in this input form. The result limit is not a promise that a full batch will finish; access limitations and the run's time budget still apply. Start small, reconcile outputs with inputs, and avoid repeatedly restarting a run during its deliberate wait.

### Output fields

The following fields describe successful results. Title content is available when returned by the source; file-link longevity is conditional on storage retention. Do not depend on undocumented fields from a different Actor.

| Field | Type | Description |
|---|---|---|
| `sourceUrl` | string | The video URL associated with this successful result. Retain it when joining subtitles with an external video catalog. |
| `videoId` | string | YouTube video identifier. Use this together with the returned language when organizing results from different language requests. |
| `ok` | boolean | True for a delivered subtitle result. Failed extraction rows are not written as chargeable success records. |
| `videoTitle` | string | Video title when available in the retrieved metadata. A title is context, not evidence that the caption text is accurate. |
| `requestedLanguage` | string | The language code supplied by the request, such as tr or en. It records the request independently of the source track. |
| `language` | string | The language of the delivered captions. A regional code may be more specific than the requested base language. |
| `sourceLanguage` | string | The underlying caption language. For an English translation of Turkish captions this remains tr, not en. |
| `subtitleType` | string | One of manual, auto\_generated, or auto\_translated. Inspect this instead of guessing the source from the text. |
| `isTranslated` | boolean | Whether the delivered track is an automatic translation. A native automatic caption track is not itself a translation. |
| `isAutoGenerated` | boolean | Whether the underlying captions are automatically generated. A translated track can also be based on automatic captions. |
| `segmentCount` | integer | Number of delivered caption cues. This is a content count, not the number of billed videos or dataset items. |
| `segments` | array | Caption cues with numeric start/end seconds, text, readable startTimestamp/endTimestamp, and timeRange. |
| `segments[].start` | number | Start time in seconds on the source video timeline. Fractional seconds are retained; do not interpret them as word-level alignment. |
| `segments[].end` | number | End time in seconds on the source video timeline. Source caption intervals may overlap, especially for automatic captions. |
| `segments[].text` | string | Caption text for the cue. Automatic transcription and translation can contain spelling, punctuation, or terminology errors. |
| `segments[].startTimestamp` | string | Readable cue start such as 00:00:05.120. This is a representation of start, not an independently estimated timestamp. |
| `segments[].endTimestamp` | string | Readable cue end in hours:minutes:seconds.milliseconds, corresponding to the numeric end field. |
| `segments[].timeRange` | string | A readable start-to-end interval suitable for a timeline table or a review screen. |
| `transcript / txt` | string | Joined plain text for text processing. Use segments rather than this joined field whenever timing matters. |
| `timestampedTranscript` | string | Readable transcript containing cue intervals and text. Useful when reviewing what was said at a particular moment. |
| `srt / vtt` | string | Subtitle contents in SubRip and WebVTT formats. These are subtitle files, not rendered videos with burned-in captions. |
| `srtUrl / vttUrl / timestampedTxtUrl` | string | Download links for the delivered files. They follow run-storage retention; copy needed files to your own durable storage. |
| `json` | object | Structured caption representation retained for clients that prefer a nested object. Top-level fields remain available. |

### Real output example

The following is a **shortened excerpt from a real Turkish-caption result** for `IGoIfTVUly8`. Only its first cue is displayed here; `segmentCount` describes the complete stored result. The title and caption wording come from the fetched data rather than a fabricated demonstration. File links are omitted from this excerpt to avoid publishing temporary run-storage links.

```json


{
  "sourceUrl": "https://www.youtube.com/watch?v=IGoIfTVUly8",
  "ok": true,
  "videoId": "IGoIfTVUly8",
  "videoTitle": "Heretik Podcast 78: Arks of Omen 1(Belaya Hazır Olun! Hem de Çifte Belaya)",
  "requestedLanguage": "tr",
  "language": "tr",
  "sourceLanguage": "tr",
  "subtitleType": "auto_generated",
  "isTranslated": false,
  "isAutoGenerated": true,
  "segmentCount": 535,
  "segments": [
    {
      "end": 12.84,
      "text": "Merhaba sevgili dinleyenler. Ben Adil ve en güzel arkadaşlıkların iyi bir",
      "start": 5.12,
      "timeRange": "00:00:05.120 --> 00:00:12.840",
      "endTimestamp": "00:00:12.840",
      "startTimestamp": "00:00:05.120"
    }
  ]
}

```

The default Timeline view expands `segments` for display. A timeline with hundreds of visible rows can still correspond to one stored dataset item and one paid video result. Use the files/language view when you need file links and provenance. For machine processing, retrieve the original nested JSON rather than assuming the display layout is the storage format.

### Pricing

**$0.01 per successfully delivered video-language result — $10 per 1,000 results.** Flat price across plans; no plan-tier discount is configured for this Actor.

- All cue text and timestamps for the delivered track are included.
- SRT, VTT, and timestamped TXT are included, not charged separately.
- Native captions and automatic translations have the same event price.
- No per-cue, per-word, per-second, or separate translation event fee.
- No successful-result event for an input that produces no usable subtitle result.
- Repeating a successful extraction is a new delivered result and can be charged again.

For example, 100 delivered video-language results cost $1; 1,000 cost $10. Asking for Turkish and English separately for the same video produces two chargeable results if both succeed. Apify account credit, tax, and billing policies remain governed by Apify. This text does not promise a free run, free unlimited access, or a guaranteed completion time. Always check the current Store pricing before a larger workload.

### Workflow and accuracy guidance

**Keep provenance with your text.** Save `videoId`, `sourceUrl`, `requestedLanguage`, `language`, `sourceLanguage`, and `subtitleType` beside each downloaded file. A text file alone may not tell a later reviewer whether it came from a native human track or an automatic translation of speech-recognition output.

**Do not manufacture precision.** Numeric timestamps are convenient for links and timeline widgets, but they still describe source caption cues. A five-second cue containing a sentence does not justify assigning exact times to every word in that sentence. If you build finer alignment elsewhere, label it as a separate derived output rather than attributing it to this Actor.

**Treat automatic language processing as fallible.** Proper names, acronyms, technical expressions, humor, and code-switching can be mistranscribed or mistranslated. For consequential material, compare the original track with the translated one and have a knowledgeable person review it. The presence of SRT or VTT syntax proves file structure, not linguistic correctness.

**Preserve overlapping cues when alignment matters.** Rolling automatic captions may repeat words and overlap adjacent intervals. The returned structure reflects the source track. A reading application may choose to deduplicate visible text, but it should retain the original cues for traceability and avoid silently changing the timing of the underlying evidence.

**Archive files deliberately.** The downloadable files follow run-storage retention and access policies. Download them into a project archive you control if you need long-term access. Store the run ID and language metadata with the files. Do not expose sensitive project links or credentials when sharing a support request.

**Reconcile batches rather than assuming success.** Compare the source URLs in delivered records with your input list. A partial result set is not proof that the missing videos have no subtitles forever; retrieval may have failed, timed out, or encountered an access limitation. There is no automatic promise that a later run will succeed either.

**Separate discovery from extraction.** Start with known video links. Use a suitable video catalog or discovery Actor if you first need to assemble a list. Keep discovery costs, subtitle costs, and downstream AI processing costs separate in your application rather than treating this subtitle event as covering every part of a larger pipeline.

**Protect tokens in integrations.** Store the Apify token in a secret manager or environment variable, not in source control, screenshots, public notebook cells, or support messages. The API examples below use placeholders and environment-variable expansion intentionally. Replace RUN\_ID and DATASET\_ID with identifiers returned for your own run.

### Related YouTube products

- [YouTube Transcript Downloader](https://apify.com/myagizm/youtube-transcript-downloader-v2)
- [YouTube Video Downloader](https://apify.com/myagizm/youtube-video-downloader-v2)
- [YouTube Shorts Downloader](https://apify.com/myagizm/youtube-shorts-downloader-v2)
- [YouTube MP3 Downloader](https://apify.com/myagizm/youtube-mp3-downloader-v2)
- [YouTube Channel Scraper](https://apify.com/myagizm/youtube-channel-scraper)
- [YouTube Comment Scraper](https://apify.com/myagizm/youtube-comment-scraper)

Browse [the myagizm profile](https://apify.com/myagizm) for other available data products, including cross-platform options where offered. The products above are separate Actors with their own inputs, pricing, output contracts, and access limitations. A subscription or successful run here does not include runs of a sibling product.

### Integrations and API

Apify datasets can be consumed by your application, scheduled jobs, automation platforms, and suitably configured AI-agent integrations. Use JSON for nested segments; CSV or other dataset exports can be useful for flat review tables. Make, Zapier, n8n, spreadsheets, and custom scripts can participate through their own Apify/API integrations, but this Actor does not create those workflows or upload into your accounts automatically.

For an AI-agent workflow, configure Apify's MCP integration according to the current official documentation, authorize the required actions, and select `myagizm/youtube-subtitle`. The agent still needs the same URL/language input and must wait for completion. Summaries, semantic search, translations outside the delivered YouTube track, and other generated analyses are downstream responsibilities. Do not treat an assistant's narration as proof that the underlying run succeeded.

Prefer asynchronous execution for production: start a run, retain its ID, check status at a reasonable interval, and fetch the dataset after completion. A slow HTTP response is not necessarily a failed Actor. Avoid submitting duplicate extraction requests merely because your client timed out while a previously started run is still active.

#### Start asynchronously — recommended / 异步启动（推荐）

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~youtube-subtitle/runs' \
  -H "Authorization: Bearer $APIFY_TOKEN" -H 'Content-Type: application/json' \
  -d '{"startUrls":[{"url":"https://www.youtube.com/watch?v=IGoIfTVUly8"}],"lang":"tr","maxItems":1}'
```

#### Read run status / 查询运行状态

```bash
curl 'https://api.apify.com/v2/actor-runs/RUN_ID' -H "Authorization: Bearer $APIFY_TOKEN"
```

#### Fetch the dataset / 读取结果

```bash
curl 'https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true' \
  -H "Authorization: Bearer $APIFY_TOKEN"
```

#### Synchronous result request / 同步读取结果

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~youtube-subtitle/run-sync-get-dataset-items?timeout=300' \
  -H "Authorization: Bearer $APIFY_TOKEN" -H 'Content-Type: application/json' \
  -d '{"startUrls":[{"url":"https://www.youtube.com/watch?v=IGoIfTVUly8"}],"lang":"en","maxItems":1}'
```

The synchronous endpoint has its own API/client timeout limits. The example timeout is not a guarantee that all videos finish within that interval. If your HTTP client stops waiting, inspect the run rather than blindly starting another paid request. For durable automation, use bounded polling, retain failure states, and make retry decisions in your own application based on the actual result.

### FAQ

#### What exactly am I buying?

One successfully delivered subtitle result for one video in one requested language. The result includes all available cues returned for that track and SRT, VTT, and timestamped TXT. You are not buying a video download, a new speech-recognition job, a human translation, or an unrestricted license to reuse someone else’s content.

#### How is the language chosen?

Set lang to the language you need. Selection prefers existing manual captions in that language, then native automatic captions in that language, then an available YouTube automatic translation. If no suitable track can be retrieved, the Actor does not silently label a different language as the requested one.

#### Does auto-generated mean auto-translated?

No. Auto-generated captions are created from speech in a source language. Auto-translated captions convert a caption track into another language. Read subtitleType, sourceLanguage, language, isTranslated, and isAutoGenerated together. For example, English output may be translated from automatically generated Turkish captions.

#### Why does the run wait for about 60 seconds?

The wait before subtitle downloading is intentional and applied automatically. It is particularly important for auto-translated tracks, which may otherwise be rejected by YouTube. Do not cancel and repeatedly restart the run during this interval. Metadata retrieval, processing, and file writing add time beyond that wait.

#### Does the delay guarantee success?

No. A delay is not a guarantee against rate limits, unavailable captions, regional availability changes, login requirements, or verification gates. Read the final run status and returned data. A public watch page can exist while its subtitle track remains unavailable to this Actor.

#### Can it transcribe a video with no captions?

No. This Actor retrieves existing subtitle tracks and available translations; it does not run a new audio-to-text transcription service. If a video has no retrievable captions, it cannot manufacture a transcript. Use a separately authorized transcription workflow when you need new speech recognition.

#### Are timestamps accurate to individual words?

No word-level alignment is promised. The Actor preserves the source caption cue intervals and formats them as readable timestamps. A cue can contain multiple words or several lines. Source timing can overlap or repeat; that behavior is different from inventing a separate timestamp for every spoken word.

#### Why can two cues overlap or repeat text?

Automatic captions often use rolling text windows rather than isolated sentences. Overlapping intervals and repeated words can therefore be present in the source track. Keep the original segments for citation and alignment; if your application needs deduplicated reading text, do that as a separate clearly identified processing step.

#### Is pricing per subtitle line?

No. Pricing is per successful video-language result, not per line, second, word, or file. A video with hundreds of caption cues remains one stored result. The Timeline view expands nested segments for readability; that display expansion does not create additional billed video results.

#### How much do 100 and 1,000 results cost?

At the flat rate of $0.01 per successful result, 100 results cost $1 and 1,000 cost $10. Asking for the same video in two languages creates two separate requests/results if both succeed. There is no separate translation surcharge or additional event fee for the three included file formats.

#### Do failed videos incur a result fee?

No successful-result event is emitted for an extraction that produces no usable subtitle result. Failed rows are not inserted into the default dataset as if they were captions. In a partially successful batch, delivered results are still chargeable. A new successful rerun is a new result, not a lifetime entitlement.

#### Do I need a YouTube API key or account?

You do not supply a YouTube Data API key or YouTube login to the Actor. An Apify account is needed to run it in Console, and your Apify token is needed for authenticated API calls. “No YouTube login input” does not imply that private or verification-gated videos become accessible.

#### Can I scrape private or age-restricted videos?

Do not depend on this Actor for private, age-restricted, login-gated, or verification-gated content. An access refusal is reported rather than treated as permission to continue through another identity. Only request material you are authorized to access, and handle unavailability as a normal possible outcome.

#### Can I disable automatic captions or force translation?

The input exposes startUrls, lang, and maxItems. It does not expose a manual-only switch, a force-translation switch, or an array of output languages. The documented preference order is automatic. Do not copy auto or searchTerms options from another Actor and assume they are supported here.

#### Can I process multiple videos?

You can submit multiple video URLs and use maxItems to limit the requested number of results. The default is 1 and the input allows a limit up to 50. This is a bound, not a guarantee that every requested video will finish: time budgets and upstream access still apply. Start with one video and increase cautiously.

#### Can I pass a search query instead of a video URL?

Use public YouTube video URLs for this product. The documented input does not expose a searchTerms field. For discovery, first obtain video URLs with a suitable catalog or search workflow, verify that you may use the content, and then submit the selected links for subtitles.

#### What does maxItems mean for the Timeline view?

maxItems concerns video results, not the number of caption rows you see after timeline expansion. A maxItems value of 1 can legitimately produce a timeline with hundreds of rows for one video. Compare dataset item count with video count and segmentCount with cue count instead of mixing those units.

#### Are SRT, VTT, and TXT different paid products?

No. They are three representations of the same delivered subtitle result. Choose SRT for subtitle editors, VTT for compatible web players, or timestamped TXT for human review. Downloading a provided file link is not another successful-video event, although storage access remains subject to Apify policies.

#### How long do file links remain available?

Files belong to the run’s storage and follow its retention and access policies. Do not treat download links as permanent archival URLs. If files are needed for a long-term project, download them to storage you control and retain the video ID, language, run ID, and source metadata alongside them.

#### Can I schedule recurring subtitle collection?

Apify schedules and its API can start recurring runs using the same input shape. A schedule does not guarantee that subtitles will remain available or unchanged. Repeated successful runs create new billable results; design your own video/language deduplication policy if you only want to collect each pair once.

#### Can AI assistants use the output?

Yes, as ordinary structured data. An application can retrieve the dataset through the Apify API or a suitably configured Apify MCP integration. Summarization, fact checking, chapter generation, and semantic indexing are downstream tasks performed by your application, not additional outputs that this Actor promises.

#### Are the captions suitable for publication without review?

Review them first. Automatic speech recognition can miss names, technical vocabulary, accents, and punctuation; automatic translation adds another source of errors. For medical, legal, financial, accessibility, or other consequential uses, retain the original track and have a qualified person review the result.

#### Will a successful run always contain every input video?

Do not assume that. Check the delivered sourceUrl and videoId values against the input list and inspect the run status. A partial batch can contain useful results while some inputs did not produce subtitles. The Actor does not fill missing videos with invented text merely to make the count match.

#### Is this an official YouTube or Google product?

No. This is an independent Actor available through Apify. YouTube, Google, and their logos are trademarks of their owners. Availability, captions, translations, and content rights are controlled by their respective providers and owners; this Actor does not grant access rights or imply an endorsement.

#### How should I report a problem?

Use the Actor’s Issues tab and include the run ID, requested language, video URL if it can be shared, and a short explanation of what you expected versus what happened. Never post Apify tokens, private download links, or account credentials in a public issue. A reproducible single-video example is preferable to a large batch.

### Related searches

youtube subtitles downloader · youtube captions scraper · youtube transcript timestamps · download youtube srt · download youtube vtt · timestamped transcript txt · Turkish YouTube subtitles · English YouTube subtitles · auto translated youtube captions · original youtube captions · manual subtitle extraction · automatic caption extraction · video language subtitle API · caption start and end times · WebVTT download · SubRip export · subtitle dataset JSON · YouTube caption timeline · video transcript API · subtitle language selection · transcript provenance · YouTube localization workflow · captions for research · subtitle accessibility review · captions for RAG · time-coded video text · Apify subtitle actor · subtitle file download

### Support

Use the [Issues tab](https://apify.com/myagizm/youtube-subtitle/issues) with a run ID and a minimal reproducible example. Share only information you have permission to disclose. Never post API tokens, account credentials, or private storage links publicly.

### Disclaimer

Independent third-party tool; not affiliated with or endorsed by YouTube or Google. Their names and marks belong to their owners. Use only content you are authorized to access and process. Public visibility does not remove copyright, privacy, licensing, or data-protection obligations. Evaluate applicable terms and laws, including GDPR or CCPA where relevant. Automatic captions and translations need review and are not professional advice or certified accessibility output.

### Resources

- [Actor Store page](https://apify.com/myagizm/youtube-subtitle)
- [Apify API reference](https://docs.apify.com/api/v2)
- [Apify MCP](https://docs.apify.com/platform/integrations/mcp)
- [Apify documentation](https://docs.apify.com/)
- [More Actors by myagizm](https://apify.com/myagizm)

### 中文说明

## YouTube Subtitle：原始字幕与自动翻译字幕

**按目标语言下载带时间戳的 YouTube 字幕。** 本工具获取现有人工字幕、原语言自动生成字幕或可用的自动翻译轨道，并提供真实片段时间、结构化文本及 SRT、VTT、TXT 下载。它专注字幕，不下载视频媒体，也不执行新的语音识别。控制台运行需要 Apify 账号，API 调用需要 Apify 令牌；无需自行提供 YouTube Data API 密钥。

> 请先用一个视频验证流程。字幕下载前有约60秒的自动等待，过程未必卡住，不要反复取消重启。视频信息读取和文件处理还需要额外时间，不能保证总时长或所有视频都成功。

### 功能与选择顺序

1. 优先选择目标语言已有的人工字幕。
2. 其次选择目标语言原始自动生成字幕。
3. 若前两项不可用，选择 YouTube 可提供的目标语言自动翻译。

✅ 显示每个字幕片段真实开始时间、结束时间及文字。
✅ 同时提供数值秒数和方便阅读的时间戳。
✅ 每个成功结果包含 SRT、VTT 和带时间的 TXT。
✅ 明确返回来源语言、实际语言及是否翻译。
✅ 每个成功的视频/语言结果只存一条记录，不按字幕片段计费。
✅ 可用于经授权的检索、审核、归档和下游分析。

原始字幕和自动翻译使用同一价格。翻译是否存在取决于视频及可用轨道。没有合适字幕时不会把其他语言错误标记为目标语言，也不会编造新字幕。本工具不是人工翻译服务、音频转写服务或无限访问服务。

### 适合哪些工作流

研究人员可以检索访谈并保留时间依据；教育团队可以审核课程字幕；本地化编辑可以下载文件后校对术语；开发者可以建立字幕检索或数据处理流程；无障碍审核人员可以检查时间区间及文字；内容团队可以分析自己有权使用的材料。摘要、章节划分、说话人识别、事实核查、语义向量和版权授权并非本工具直接提供的额外功能。

### 输入与操作步骤

1. 在 Apify 打开本 Actor。
2. 在 `startUrls` 中填写公开视频 URL。
3. 通过 `lang` 选择语言，例如土耳其语 `tr` 或英语 `en`。
4. 首次运行保持 `maxItems: 1`。
5. 启动一次，等待自动字幕下载间隔结束。
6. 检查最终状态、时间轴、语言字段及文件下载链接。

```json


{
  "startUrls": [
    {
      "url": "https://www.youtube.com/watch?v=IGoIfTVUly8"
    }
  ],
  "lang": "tr",
  "maxItems": 1
}

```

| 输入 | 类型 | 含义 |
|---|---|---|
| `startUrls` | 数组 | 视频 URL 条目，通常为包含 `url` 的对象。 |
| `lang` | 字符串 | 目标语言代码，默认 `en`，每次请求一个语言。 |
| `maxItems` | 整数 | 默认1，输入允许1–50；限制结果数量，不保证整个批次完成。 |

请使用这里公开的字段。本 Actor 不公开 searchTerms、auto、仅人工字幕、强制翻译或多语言数组选项。不要直接复制其他 Actor 的配置。批量请求仍受上游访问和运行时间预算约束，建议先小规模验证，并核对实际交付链接与输入列表。

### 输出字段

以下为成功结果的字段契约。标题取决于来源元数据，下载链接寿命取决于存储策略，不应依赖其他 Actor 的未公开字段。

| 字段 | 类型 | 含义 |
|---|---|---|
| `sourceUrl` | string | 此成功结果对应的视频链接。与外部视频目录关联时请保留。 |
| `videoId` | string | YouTube 视频标识。整理不同语言请求的结果时，应与输出语言一起使用。 |
| `ok` | boolean | 已交付的字幕结果为 true。提取失败不会作为收费成功记录写入。 |
| `videoTitle` | string | 可获取的视频标题。标题提供上下文，不代表字幕内容已经人工核验。 |
| `requestedLanguage` | string | 请求提供的语言代码，例如 tr 或 en，独立记录用户需求。 |
| `language` | string | 实际交付字幕的语言。地区代码可能比请求的基础语言更具体。 |
| `sourceLanguage` | string | 底层字幕的来源语言。土耳其语字幕翻译为英语后，该字段仍为 tr。 |
| `subtitleType` | string | manual、auto\_generated 或 auto\_translated。请据此判断来源，而不是根据文字猜测。 |
| `isTranslated` | boolean | 交付轨道是否经过自动翻译。原语言的自动生成字幕不等于翻译字幕。 |
| `isAutoGenerated` | boolean | 底层字幕是否自动生成。翻译轨道也可能以自动生成字幕为基础。 |
| `segmentCount` | integer | 已交付字幕片段数量。它不是收费视频数量，也不是数据集记录数量。 |
| `segments` | array | 字幕片段数组，包含数值型起止秒数、文字、可读时间戳和时间范围。 |
| `segments[].start` | number | 源视频时间轴上的起始秒数，可包含小数，不代表逐词对齐。 |
| `segments[].end` | number | 源视频时间轴上的结束秒数。自动字幕的源时间区间可能重叠。 |
| `segments[].text` | string | 当前片段的字幕文字。自动识别或翻译可能存在拼写、标点和术语错误。 |
| `segments[].startTimestamp` | string | 例如 00:00:05.120 的可读起始时间，是 start 的格式化显示。 |
| `segments[].endTimestamp` | string | 时:分:秒.毫秒格式的结束时间，与数值 end 对应。 |
| `segments[].timeRange` | string | 可读的起止区间，适合时间轴表格或审核界面。 |
| `transcript / txt` | string | 合并后的纯文本。需要时间信息时，请使用 segments 而不是合并文本。 |
| `timestampedTranscript` | string | 包含片段时间区间和文字的可读文本，便于核对某一时刻的内容。 |
| `srt / vtt` | string | SubRip 和 WebVTT 格式的字幕内容，不是已烧录字幕的视频。 |
| `srtUrl / vttUrl / timestampedTxtUrl` | string | 交付文件的下载链接，受运行存储保留策略影响，需要长期保存时请自行归档。 |
| `json` | object | 结构化字幕对象，供偏好嵌套结构的客户端使用，同时保留顶层字段。 |

### 真实结果示例

以下是视频 `IGoIfTVUly8` 的真实土耳其语字幕结果节选，只显示第一个片段；`segmentCount` 表示完整结果的数量。标题和字幕来自实际获取的数据，而非虚构演示。示例省略临时下载链接，避免公开运行存储地址。

```json


{
  "sourceUrl": "https://www.youtube.com/watch?v=IGoIfTVUly8",
  "ok": true,
  "videoId": "IGoIfTVUly8",
  "videoTitle": "Heretik Podcast 78: Arks of Omen 1(Belaya Hazır Olun! Hem de Çifte Belaya)",
  "requestedLanguage": "tr",
  "language": "tr",
  "sourceLanguage": "tr",
  "subtitleType": "auto_generated",
  "isTranslated": false,
  "isAutoGenerated": true,
  "segmentCount": 535,
  "segments": [
    {
      "end": 12.84,
      "text": "Merhaba sevgili dinleyenler. Ben Adil ve en güzel arkadaşlıkların iyi bir",
      "start": 5.12,
      "timeRange": "00:00:05.120 --> 00:00:12.840",
      "endTimestamp": "00:00:12.840",
      "startTimestamp": "00:00:05.120"
    }
  ]
}

```

Timeline 默认视图展开 segments 方便阅读，但展开后的数百行仍可能属于一个数据集记录和一个收费结果。下载文件及来源信息请查看相应文件/语言视图。程序处理应读取原始嵌套 JSON，不要把界面显示布局当作底层存储格式。

### 价格

**每个成功交付的视频/语言结果 $0.01，即1000个结果 $10。** 所有套餐使用同一固定事件价，本 Actor 未配置套餐等级折扣。

全部片段、时间戳和三种文件格式包含在内；原始字幕与自动翻译同价；不按片段、词、秒或文件另外计费；未产生可用结果的提取不会形成成功结果事件。再次成功运行属于新的结果。100个成功结果为$1，同一视频分别请求两种语言且都成功则是两个结果。账号额度、税费及账单规则由 Apify 决定。本文不承诺免费运行、无限免费使用或固定完成时间，扩大任务前请检查 Store 当前价格。

### 使用与准确性建议

**保留来源。** 下载文件时同时保留视频标识、源链接、请求语言、实际语言、来源语言、来源类型和运行标识。单独一份纯文本未必能告诉后续审核人员，它来自人工字幕还是自动识别结果的翻译。

**不要制造精度。** 时间戳描述源字幕片段，不能据此推断每个词的精确发生时刻。如果下游另做逐词对齐，应清楚标记为衍生处理，而不是宣称本 Actor 提供了该精度。

**审核重要内容。** 姓名、缩写、术语、幽默和混合语言都可能识别或翻译错误。重要场景应对照原始轨道并请合适人员复核。文件符合 SRT/VTT 语法，不等于文字或翻译已经准确。

**保留重叠片段。** 滚动自动字幕可能存在重复文字和重叠时间。为了引用和对齐，应保留原片段；阅读界面若去重，须作为独立处理并保留可追溯依据。

**主动归档。** 文件受运行存储保留和访问策略影响。长期项目请存入自己管理的归档位置，并保留来源信息。支持请求中不要公开敏感项目链接或凭据。

**核对批次。** 将实际结果中的 sourceUrl/videoId 与输入对照。缺失结果不证明某视频永远没有字幕，也可能是暂时获取失败或超时；同时也不能保证以后重试会成功。不要用虚构文字补齐数量。

**分离发现与提取。** 先获得有权使用的视频链接，再调用字幕提取。视频发现、字幕事件和下游 AI 分析属于不同步骤，应分别考虑成本及权限。

### 其他 YouTube 数据产品

- [YouTube Transcript Downloader](https://apify.com/myagizm/youtube-transcript-downloader-v2)
- [YouTube Video Downloader](https://apify.com/myagizm/youtube-video-downloader-v2)
- [YouTube Shorts Downloader](https://apify.com/myagizm/youtube-shorts-downloader-v2)
- [YouTube MP3 Downloader](https://apify.com/myagizm/youtube-mp3-downloader-v2)
- [YouTube Channel Scraper](https://apify.com/myagizm/youtube-channel-scraper)
- [YouTube Comment Scraper](https://apify.com/myagizm/youtube-comment-scraper)

其他平台产品可在 [myagizm主页](https://apify.com/myagizm)查看。相关 Actor 是独立产品，具有各自输入、价格、输出契约和访问限制，本工具的成功运行不包含其他产品的使用费用。

### 集成、AI 智能体与 API

结果可以被自定义应用、定时任务、自动化平台或经过配置的 AI 智能体读取。JSON适合嵌套片段，CSV等导出格式适合平面审核表。通过相关平台自己的 Apify/API 集成，可以接入 Make、Zapier、n8n、电子表格或脚本，但本 Actor 不会自动建立这些流程或向你的第三方账号上传资料。

若采用 Apify MCP，请按照官方最新文档配置并授权，选择 myagizm/youtube-subtitle。智能体仍需正确的 URL/语言输入，并等待实际运行完成。摘要、语义搜索和额外生成分析是下游任务；不能仅凭助手口头描述就判断底层提取成功。

生产环境建议异步启动，保存运行标识，以合理间隔查询状态，完成后读取数据集。HTTP响应变慢不等于 Actor 失败；客户端停止等待时应先检查原运行，避免重复启动新的收费请求。Apify令牌应存入秘密管理器或环境变量，不应写入仓库、截图或公开支持消息。

#### Start asynchronously — recommended / 异步启动（推荐）

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~youtube-subtitle/runs' \
  -H "Authorization: Bearer $APIFY_TOKEN" -H 'Content-Type: application/json' \
  -d '{"startUrls":[{"url":"https://www.youtube.com/watch?v=IGoIfTVUly8"}],"lang":"tr","maxItems":1}'
```

#### Read run status / 查询运行状态

```bash
curl 'https://api.apify.com/v2/actor-runs/RUN_ID' -H "Authorization: Bearer $APIFY_TOKEN"
```

#### Fetch the dataset / 读取结果

```bash
curl 'https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true' \
  -H "Authorization: Bearer $APIFY_TOKEN"
```

#### Synchronous result request / 同步读取结果

```bash
curl -X POST 'https://api.apify.com/v2/acts/myagizm~youtube-subtitle/run-sync-get-dataset-items?timeout=300' \
  -H "Authorization: Bearer $APIFY_TOKEN" -H 'Content-Type: application/json' \
  -d '{"startUrls":[{"url":"https://www.youtube.com/watch?v=IGoIfTVUly8"}],"lang":"en","maxItems":1}'
```

同步接口和HTTP客户端有自己的等待限制，示例中的超时不保证所有视频都能在该时间内完成。自动化程序应采用有界轮询，保留失败状态，并根据实际情况决定后续处理，而不是无限循环。

### 常见问题

#### 我购买的具体是什么？

一个视频在一个请求语言下成功交付的字幕结果，包括返回的全部片段以及 SRT、VTT、时间文本。它不包含视频下载、新的语音识别、人工翻译，也不授予他人内容的无限使用权。

#### 如何选择语言？

设置 lang。优先选择目标语言的人工字幕，其次选择同语言原始自动字幕，最后选择可用的 YouTube 自动翻译。找不到合适轨道时，不会把其他语言冒充为目标语言。

#### 自动生成和自动翻译一样吗？

不一样。自动生成字幕识别源语言的语音；自动翻译字幕把已有文字转换为另一种语言。应结合来源类型、源语言、输出语言和两个布尔字段判断。英语结果也可能来自土耳其语自动字幕。

#### 为什么要等约60秒？

字幕下载前的等待是主动设置并自动执行的，尤其适用于可能被 YouTube 拒绝的自动翻译轨道。等待期间请勿反复取消和重启。元数据处理及文件生成还需要额外时间。

#### 等待是否保证成功？

不保证。仍可能遇到限流、字幕不可用、地区差异、登录要求或验证限制。应检查最终状态及结果。公开视频页面存在，并不代表本工具一定能取得字幕。

#### 没有字幕的视频也能识别吗？

不能。本工具获取已有字幕和可用翻译，不提供新的音频转文字服务。没有可获取的字幕时不会编造文本。需要新语音识别时，请选择另行授权的转写流程。

#### 时间戳是否精确到每个词？

不承诺逐词对齐。工具保留源字幕片段的时间区间并格式化显示。一个片段可含多个词或多行文字，源时间也可能重叠或重复，这与重新计算逐词时间不同。

#### 为什么片段会重叠或重复？

自动字幕常采用滚动文字窗口，而不是完全独立的句子，因此源轨道可能出现时间重叠或重复词语。引用和对齐时应保留原始片段；若需去重阅读稿，请把它作为单独的后处理步骤。

#### 是否按字幕行收费？

不是。按成功的视频/语言结果收费，不按行、秒、词或文件收费。包含数百片段的视频仍是一条存储记录。时间轴只是展开嵌套片段，不会增加收费视频结果数量。

#### 100或1000个结果多少钱？

固定价格为每个成功结果 $0.01，因此100个为$1，1000个为$10。同一视频分别请求两种语言，若都成功则是两个结果。自动翻译和附带的三种文件格式没有额外事件费用。

#### 失败的视频会收结果费吗？

未产生可用字幕结果时不会形成成功结果收费事件。失败记录不会被当作字幕写入默认数据集。部分成功的批次中，已交付结果仍收费。再次成功运行是新的结果，不是永久免费重复获取。

#### 需要 YouTube 密钥或账号吗？

无需提供 YouTube Data API 密钥或登录信息。通过控制台运行需要 Apify 账号，通过 API 调用需要 Apify 令牌。不要求输入 YouTube 登录，并不代表可以访问私人或验证受限的视频。

#### 可以获取私人或年龄限制视频吗？

不要依赖本工具获取私人、年龄限制、登录或验证受限内容。访问被拒绝时会停止，而不是切换身份继续。只请求有权访问的内容，并把不可用视为正常可能结果。

#### 能禁用自动字幕或强制翻译吗？

输入仅公开 startUrls、lang 和 maxItems，不提供仅人工、强制翻译或多语言数组开关。选择按已说明的优先级自动完成。不要复制其他 Actor 的 auto 或 searchTerms 参数并假定这里支持。

#### 能处理多个视频吗？

可以提交多个视频链接，并用 maxItems 限制请求结果数量。默认1，输入上限50。这只是边界，不保证所有视频都能完成，仍受时间和上游访问限制。建议先单视频验证，再谨慎扩大。

#### 可以直接输入搜索词吗？

本产品请使用公开视频链接，公开输入不包含 searchTerms。若需发现视频，应先通过合适目录或搜索流程取得链接，确认内容使用权限，再提交选定链接获取字幕。

#### maxItems与时间轴行数是什么关系？

maxItems限制视频结果，而不是展开后的字幕行数。值为1时，一个视频仍可显示数百行时间轴。数据集记录数对应视频，segmentCount对应字幕片段，不要混用单位。

#### 三种文件需要分别购买吗？

不需要。它们是同一字幕结果的三种表示。SRT适合字幕编辑器，VTT适合兼容的网页播放器，时间文本适合人工审核。访问下载链接不构成另一个成功视频事件，但仍受存储策略限制。

#### 文件链接能保留多久？

文件属于运行存储，受其保留和访问策略约束，不应视为永久归档地址。长期项目请下载到自行管理的存储，并保留视频标识、语言、运行标识及来源信息。

#### 可以定时采集吗？

可以通过 Apify 定时任务或 API 使用相同输入启动运行。定时并不保证字幕持续可用或内容不变。每次成功运行都是新的收费结果；如只需每个视频/语言组合一次，请自行实现去重策略。

#### AI助手可以使用结果吗？

可以把结果作为普通结构化数据，通过 Apify API 或适当配置的 MCP 集成读取。摘要、核实、章节生成和语义索引属于下游应用任务，并非本 Actor 承诺直接产生的额外输出。

#### 字幕可以不审核就发布吗？

建议先审核。自动识别可能误判姓名、术语、口音和标点，翻译还会增加误差。用于医疗、法律、金融、无障碍或其他重要场景时，应保留原始轨道并由合适人员复核。

#### 成功运行是否意味着所有输入都有结果？

不能这样假定。请将交付结果的链接和视频标识与输入列表对照，并检查状态。部分批次可能有有效结果，也有未产生字幕的输入。工具不会为了凑齐数量而编造文字。

#### 这是 YouTube 或 Google 官方产品吗？

不是。这是通过 Apify 提供的独立 Actor。YouTube、Google及其标志归各自所有者所有。内容可用性、字幕、翻译及版权由相关方控制，本工具不授予额外访问权，也不表示官方背书。

#### 如何报告问题？

使用 Actor 的 Issues 页面，提供运行标识、请求语言、可公开的视频链接，以及预期和实际结果说明。不要公开 Apify 令牌、私有下载链接或账号凭据。可复现的单视频案例比大批次更容易排查。

### 相关搜索

YouTube字幕下载 · YouTube自动字幕 · YouTube人工字幕 · YouTube自动翻译字幕 · 英语字幕 · 土耳其语字幕 · SRT下载 · VTT下载 · WebVTT导出 · SubRip字幕 · 带时间文本 · 字幕时间轴 · 视频字幕API · 字幕语言选择 · 原始字幕获取 · 字幕来源信息 · 视频文本检索 · 研究字幕采集 · 教育字幕审核 · 字幕无障碍检查 · 字幕本地化 · 时间戳JSON · 字幕数据集 · 视频转录文本 · Apify字幕工具 · 带起止时间的字幕 · 字幕文件归档 · AI字幕数据

### 支持

请通过 Issues 页面提供运行标识、可公开的视频链接、请求语言及预期与实际结果。优先提供最小单视频复现，不要公开令牌、账号凭据或私有下载链接。

### 免责声明

独立第三方工具，不隶属于 YouTube 或 Google，也不代表其背书。名称和商标属于相关所有者。只访问和处理有权使用的内容；公开可见不免除版权、隐私、许可或数据保护义务。请评估适用条款及法律，包括适用情况下的 GDPR/CCPA。自动字幕及翻译需审核，不构成专业建议或经认证的无障碍成果。

### 资源

- [Actor Store page](https://apify.com/myagizm/youtube-subtitle)
- [Apify API reference](https://docs.apify.com/api/v2)
- [Apify MCP](https://docs.apify.com/platform/integrations/mcp)
- [Apify documentation](https://docs.apify.com/)
- [More Actors by myagizm](https://apify.com/myagizm)

# Actor input Schema

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

Public YouTube video URLs. Only videos with retrievable caption tracks can produce subtitles.

## `lang` (type: `string`):

Language code such as tr or en. Prefer existing target-language manual captions, then original automatic captions. If neither exists, retrieve YouTube automatic translation into this language. Never silently return another language.

## `maxItems` (type: `integer`):

Maximum number of selected videos. One stored result per video, with all subtitle segments inside it.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.youtube.com/watch?v=IGoIfTVUly8"
    }
  ],
  "lang": "en",
  "maxItems": 1
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped items as structured JSON.

## `transcripts` (type: `string`):

No description

# 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.youtube.com/watch?v=IGoIfTVUly8"
        }
    ],
    "lang": "en",
    "maxItems": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("myagizm/youtube-subtitle").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.youtube.com/watch?v=IGoIfTVUly8" }],
    "lang": "en",
    "maxItems": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("myagizm/youtube-subtitle").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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.youtube.com/watch?v=IGoIfTVUly8"
    }
  ],
  "lang": "en",
  "maxItems": 1
}' |
apify call myagizm/youtube-subtitle --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,myagizm/youtube-subtitle"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/7QK52RpPf4adl5jcG/builds/NjXITBNtsGjodmRBR/openapi.json
