

# Chronometrica vs Pinto Studio for Language-Checked YouTube Transcripts

Choose Chronometrica if your transcript collection needs documented requested-language and selected-language fields, plus a `LANGUAGE_UNAVAILABLE` outcome when no requested caption track is available. Keep Pinto Studio when its requested-language, single-video interface and your application's language checks meet your needs. [Chronometrica contract](https://apify.com/chronometrica/youtube-transcript-scraper), [Pinto Studio contract](https://apify.com/pintostudio/youtube-transcript-scraper)

Chronometrica publishes the owned Actor compared here. An Actor is a hosted collection program. A corpus is a collection of source texts used for study or software. A caption track is a set of captions in a particular language.

The decision depends on what your application must check before it accepts a transcript. A request for Chinese captions states your intent. Evidence about the selected caption track tells you which language supplied the returned text.

This comparison uses public contracts checked on October 20, 2026. A contract describes the documented inputs and outputs. These checks do not establish a difference in caption accuracy, extraction reliability, or price.

## Choose the language evidence your application needs

First, state your acceptance rule. A study might accept only Chinese captions. Another project might accept any available caption language. Each rule produces a different collection.

Chronometrica build 0.1.43 accepts `preferredLanguages` in priority order. A filled list is strict. If none of the requested languages is available, the contract records a non-billable `LANGUAGE_UNAVAILABLE` failure in `OUTPUT`. That outcome stays outside the successful dataset, which holds the returned transcript records. An empty language list means best available. It does not enforce a chosen language restriction. [Input schema](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema), [contract](https://apify.com/chronometrica/youtube-transcript-scraper), [checked build](https://api.apify.com/v2/acts/chronometrica~youtube-transcript-scraper/builds/default)

Successful rows publish these fields:

- `requestedLanguageCodes`: the requested language codes.
- `transcriptLanguageCode` and `transcriptLanguageName`: the selected transcript language.
- `availableLanguageCodes`: evidence about available caption languages.
- `languageMatch`: evidence about the language match.

Check these fields before you admit a text to the corpus. The request setting alone does not prove the returned language. [Output contract](https://apify.com/chronometrica/youtube-transcript-scraper)

| Decision point | Chronometrica | Pinto Studio |
| --- | --- | --- |
| Language input | `preferredLanguages`, in priority order | Required `targetLanguage` and `videoUrl` |
| Requested-language behavior | Filled list is strict; empty means best available | Documents requested-language captions |
| Evidence for acceptance | Documented requested and selected language fields | Check returned evidence against your rule |
| No matching language | Documented `LANGUAGE_UNAVAILABLE` in `OUTPUT` | Specific outcome not established by the checked interface |

Table sources: [Chronometrica contract](https://apify.com/chronometrica/youtube-transcript-scraper), [Chronometrica input](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema), [Pinto Studio contract](https://apify.com/pintostudio/youtube-transcript-scraper), [Pinto Studio input](https://apify.com/pintostudio/youtube-transcript-scraper/input-schema).

The main reason to switch is a need for Chronometrica's documented language evidence and no-match record. If your current flow already meets your acceptance rule, this need may not justify a change.

## Read the Pinto Studio language issue in context

A public Pinto Studio issue asks whether `targetLanguage` determines the returned caption language. The discussion includes a historical fallback explanation. A maintainer update dated August 26, 2026, says target-language handling was improved and works properly. The issue shows a real language-acceptance question. It does not establish a current fallback fault. [Public issue and maintainer update](https://apify.com/pintostudio/youtube-transcript-scraper/issues/targetlanguage-param-zt0qpJ83bq8U4GMAq)

Pinto Studio build 1.0.63 advertises requested-language captions. Its README describes structured start, duration, and text segments. Its FAQ mentions captions supplied or auto-translated by YouTube. This does not mean Pinto Studio generates translations itself. [Current contract and FAQ](https://apify.com/pintostudio/youtube-transcript-scraper), [checked build](https://api.apify.com/v2/acts/pintostudio~youtube-transcript-scraper/builds/default)

The checked interface does not establish a specific unavailable-language outcome. Verify that behavior before your application depends on it. An old discussion or the absence of a strict-language switch cannot establish the current result. [Current input schema](https://apify.com/pintostudio/youtube-transcript-scraper/input-schema), [issue history](https://apify.com/pintostudio/youtube-transcript-scraper/issues/targetlanguage-param-zt0qpJ83bq8U4GMAq)

## Check whether an existing caption track meets the rule

Chronometrica extracts existing public captions. It does not translate a missing track or create a transcript from speech. Its current contract also does not promise manual-only captions or a separate operation that lists caption tracks. These limits matter if your project requires a specific caption source as well as a specific language. [Chronometrica contract](https://apify.com/chronometrica/youtube-transcript-scraper)

For a language-restricted corpus, declare which language codes you accept. If you accept more than one language, declare their order of preference. Put only accepted languages in a strict request.

Then compare the selected-language evidence with that rule. The available-language list gives context. Your acceptance decision concerns the track that supplied the returned text.

If you later translate a transcript, record that as a separate process. A translated text does not prove that the original extracted track had the requested language. Keep the source language and translation language distinct in your records.

## A fictional decision with three intended sources

This example is fictional. It is not an Actor result, a vendor test, or a customer case.

A study accepts only Chinese captions. It has three intended video inputs. In this invented example, two inputs have available Chinese tracks. The third has no matching language.

The study accepts two transcript texts. It records the third language outcome separately. Its accepted-source coverage is:

2 accepted inputs / 3 intended inputs × 100 = 66.67%.

This percentage measures acceptance within the fictional collection. It is not a measured extraction success rate.

An English track on the unresolved video would fail the study's rule. A request for Chinese would not make that English text acceptable. The study must keep all three intended inputs in the total used to calculate coverage.

The unresolved input needs its own record. It is not a successful transcript with no text. If a later process obtains an accepted text, the study can update its record while keeping the earlier outcome visible.

A project that accepts any source language could use a different rule. It must declare that rule. A later translation would remain a separate process.

Chronometrica's documented selected-language fields and `LANGUAGE_UNAVAILABLE` outcome fit this study's acceptance record. The example makes no claim about what current Pinto Studio would return for the third video. [Chronometrica output contract](https://apify.com/chronometrica/youtube-transcript-scraper)

## Apply a small language acceptance method

1. Write the rule. List the accepted caption languages. State whether an alternate language is allowed. Record the number of intended source inputs before extraction.
2. Set the request. For Chronometrica, fill `preferredLanguages` explicitly. Keep `includeFailedInputDetails` set to `true` to retain safe input-level failure details. An empty language list means best available. [Input schema](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema)
3. Read both result records. Read the successful dataset and `OUTPUT` together. Keep enough input identity to connect each unsuccessful outcome to its intended source. [Output contract](https://apify.com/chronometrica/youtube-transcript-scraper)
4. Check each successful text. Compare `requestedLanguageCodes`, `transcriptLanguageCode`, and `languageMatch` with your rule. Use the language name and available-language evidence as context. Accept the text only when the evidence meets the rule. [Output fields](https://apify.com/chronometrica/youtube-transcript-scraper)
5. Keep no-match outcomes separate. Record `LANGUAGE_UNAVAILABLE` outside the accepted corpus. Preserve unknown values as unknown. Do not replace a missing text or language value with zero.
6. Check the existing flow. Keep it when its returned evidence and your application's checks meet the rule. Verify its no-match behavior before you depend on a specific outcome.
7. Report the counts. Report accepted and unresolved input counts against the original number of intended inputs. Label any later translation as a separate process.

The acceptance rule belongs to your application even when an Actor helps enforce it.

For the wider process of building a collection from discovered videos, use the [YouTube transcript corpus guide](/en/articles/youtube-transcript-corpus/). This comparison addresses the narrower choice of language evidence needed to accept each text.

## Set an explicit language request

A Task is a saved input preset. The public [YouTube transcript extraction Task](https://apify.com/chronometrica/youtube-transcript-scraper/examples/batch-youtube-transcript-extraction) can serve as a starting point. Its page returned HTTP 200, a successful page response, in the October 20, 2026 check. Its saved input was not read. Set the fields your rule requires explicitly.

This input example requests `zh-Hans`, the language code for Simplified Chinese. It passed a static check against the saved current public schema. This check compared the input with the documented input rules. The input was not run. The video URL illustrates the input format; it does not establish current caption availability.

```json
{
  "startUrls": [
    "https://www.youtube.com/watch?v=BPK_qzeH_yk"
  ],
  "preferredLanguages": [
    "zh-Hans"
  ],
  "includeFailedInputDetails": true
}
```

Set an explicit language request

The input format and field settings follow the checked [Chronometrica input schema](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema). Replace the example URL and language with your intended source and accepted language.

## Choose the Actor for your language rule

Choose the [Chronometrica YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper) when its documented language fields and no-match outcome meet your needs. Set an accepted language. Then inspect the selected-language evidence before you accept each text.

Read `OUTPUT` with the successful dataset. Keep unresolved language lookups visible and outside the accepted corpus. If your existing single-video flow already meets the same rule, keep that flow.

## Sources

- [Chronometrica YouTube Transcript Scraper — public contract and output fields; documents requested and selected languages, strict no-match handling, and existing-caption limits; checked October 20, 2026; contract evidence, not a comparative performance test](https://apify.com/chronometrica/youtube-transcript-scraper)
- [Chronometrica YouTube Transcript Scraper input schema — documents preferredLanguages and includeFailedInputDetails; checked October 20, 2026; the article's example passed static schema validation but was not run, and its URL does not establish current caption availability](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema)
- [Chronometrica YouTube Transcript Scraper default build — checked as version 0.1.43 on October 20, 2026; the version identifies the build checked for this comparison](https://api.apify.com/v2/acts/chronometrica~youtube-transcript-scraper/builds/default)
- [Pinto Studio YouTube Transcript Scraper — public contract and FAQ describe requested-language captions, structured segments, and captions supplied or auto-translated by YouTube; checked October 20, 2026; does not establish that Pinto Studio generates translations itself](https://apify.com/pintostudio/youtube-transcript-scraper)
- [Pinto Studio YouTube Transcript Scraper input schema — requires videoUrl and targetLanguage; checked October 20, 2026; the checked interface does not establish a specific unavailable-language fallback or typed failure outcome](https://apify.com/pintostudio/youtube-transcript-scraper/input-schema)
- [Pinto Studio YouTube Transcript Scraper default build — checked as version 1.0.63 on October 20, 2026; the version identifies the build checked for this comparison](https://api.apify.com/v2/acts/pintostudio~youtube-transcript-scraper/builds/default)
- [Pinto Studio targetLanguage issue and maintainer update — historical language question and fallback explanation, followed by an August 26, 2026 update reporting improved handling; checked October 20, 2026; the history does not prove a current fallback fault](https://apify.com/pintostudio/youtube-transcript-scraper/issues/targetlanguage-param-zt0qpJ83bq8U4GMAq)
- [Chronometrica YouTube transcript extraction Task — public page returned HTTP 200 when checked October 20, 2026; saved Task input was not read; use it as a starting preset and set required fields explicitly](https://apify.com/chronometrica/youtube-transcript-scraper/examples/batch-youtube-transcript-extraction)