# TikTok Transcript Scraper (`crawl_craft/tiktok-transcript-scraper`) Actor

Rewatching TikToks to take notes wastes hours. Get clean transcripts instead: timestamped text, every subtitle language, AI speech-to-text when captions are missing and translation into 133 languages, plus video and author data. No login.

- **URL**: https://apify.com/crawl_craft/tiktok-transcript-scraper.md
- **Developed by:** [Crawl Craft](https://apify.com/crawl_craft) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### What is TikTok Transcript Scraper?

TikTok Transcript Scraper is an Apify Actor that turns public TikTok videos into transcripts. Paste video links, short links or IDs and it returns, when available, the spoken text, timed segments, subtitle tracks and an optional translation, plus video, author and music details. Use it to scrape TikTok transcript text without a login.

- **Timed transcripts:** get the transcript as plain text and as sentence segments, so you can search or quote an exact moment.
- **Every subtitle language:** keep all TikTok subtitle tracks for a video, or filter to the languages you need.
- **TikTok speech to text when captions are missing:** AI speech-to-text transcribes videos that have no subtitles, or every video if you prefer.
- **Translation into 133 languages:** receive a time-aligned translated copy next to the original.
- **Bulk input:** paste a long list of videos, or link a `.txt` file with one entry per line.

Click **Try for free**, paste your TikTok video links and press **Start**.

### What data can you extract from TikTok?

TikTok Transcript Scraper returns one record per input video. The data is spread over several table views in the Output tab, and you can export it as JSON, CSV or Excel. It sits next to video details such as views and likes. Field names below match the dataset schema exactly. Some fields depend on your input: `translation` is empty when you do not choose a target language, and `whisper` is an object whose `ran` is `false` and whose `status` says why speech-to-text did not run.

| Field | Description | Example |
|---|---|---|
| `transcript` | Transcript language, full text and sentence-level segments with `HH:MM:SS.mmm` timestamps. | - |
| `transcriptText` | The full transcript as plain text. | - |
| `segments` | Timed transcript lines: start and end in seconds, plus text. | - |
| `segmentCount` | Number of timed transcript lines. | `37` |
| `transcriptDuration` | End time of the last transcript line in seconds. | `82.061` |
| `transcriptSource` | `tiktok_subtitle` (TikTok's subtitles) or `whisper` (AI speech-to-text); empty when there is no transcript. | `tiktok_subtitle` |
| `transcriptLanguageIso` | Two-letter language code of the transcript. | `en` |
| `transcriptWordCount` | Word count of the transcript. | `237` |
| `transcriptCharCount` | Character count of the transcript. | `1252` |
| `languageCode` | Language code of the transcript track. | `eng-US` |
| `subtitlesAvailable` | True when TikTok has subtitles for the video (after the language filter). | `true` |
| `availableSubtitleLanguages` | Language codes of all subtitle tracks returned. | - |
| `subtitles` | Every subtitle track: language, source, links, size, segments and full text. | - |
| `subtitleUrl` | TikTok's link to the subtitle file (expires after about two days). | - |
| `translation` | Translated transcript (language, source, text and timed segments); empty when not requested. | - |
| `whisper` | Speech-to-text result: whether it ran, model, detected language, segments, transcript and status. | - |
| `text` | Video caption exactly as shown on TikTok (line breaks kept). | `Say hello to GPT-4o...` |
| `createTimeISO` | Upload time (ISO 8601, UTC). | `2024-05-13T17:35:20.000Z` |
| `playCount` | Number of views. | `5900000` |
| `diggCount` | Number of likes (hearts). | `483100` |
| `commentCount` | Number of comments. | `5548` |
| `shareCount` | Number of shares. | `117400` |
| `collectCount` | Number of times the video was saved. | `48452` |
| `repostCount` | Number of reposts. | `0` |
| `hashtags` | Hashtags with ID and name. | - |
| `mentions` | @mentions in the caption. | - |
| `videoMeta` | Size, duration, quality, covers, play / download links and subtitle links. | - |
| `authorMeta` | Author profile: username, name, verification, bio, bio link, followers, likes, videos, avatar, business info and settings. | - |
| `musicMeta` | Sound used in the video: name, artist, original flag, duration, cover and audio link. | - |
| `locationMeta` | Tagged place (address, city, country), when the video has one. | - |
| `webVideoUrl` | Canonical link to the video. | `https://www.tiktok.com/@openai/video/7368539099893927214` |
| `submittedVideoUrl` | The entry exactly as you gave it. | `https://www.tiktok.com/@openai/video/7368539099893927214` |
| `status` | `ok`, or `error` when the video could not be loaded. | `ok` |
| `error` | Why the video could not be loaded (deleted, private, invalid input or blocked). | - |

Other fields in the dataset include `isAd`, `isSponsored`, `isSlideshow`, `isPinned`, `isAigc`, `locationCreated`, `categories`, `tags`, `stickerTexts`, `duetEnabled`, `stitchEnabled` and `commentsEnabled`. The Output tab groups them into nine views: Overview, Transcript, Subtitles, Translation, AI speech-to-text, Video and engagement, Video details, Author and Music.

### Use cases for TikTok data

- **Content research:** use TikTok video speech to text on competitor clips, then read each transcript next to `playCount`, `diggCount` and `shareCount` to see which topics and hooks perform.
- **Content analysis:** feed `transcriptText` into your own text analysis or a TikTok transcript AI workflow to find themes, keywords and questions across many videos.
- **Accessibility and archiving:** treat the Actor as a TikTok video transcript downloader that also saves the original subtitle files to a key-value store you name.
- **Localization:** use the `translation` field to read videos in another language, or to prepare TikTok subtitles in a different language for a new audience.
- **Brand and sponsor monitoring:** read what is said in a video, as a TikTok video transcriber would, next to flags such as `isAd` and `isSponsored`.
- **Academic and market research:** build a dataset of spoken text with hashtags, region and upload dates, collected with a TikTok video transcript extractor in one run.
- **Repurposing content:** turn a spoken video into a blog post, script or social caption, using the output of a TikTok video transcript generator as your first draft.

### How to scrape TikTok transcripts

1. Create a free Apify account.
2. Open TikTok Transcript Scraper.
3. Paste one or more TikTok video links, short links or numeric video IDs into **TikTok video URLs** (`urls`).
4. Choose the TikTok transcription mode in **Subtitles & transcription** (`downloadSubtitlesOptions`), and optionally a subtitle language or a translation target.
5. Click **Start** and wait for the run to finish.
6. Export TikTok transcript results as JSON, CSV or Excel from the Output tab.

#### How to get TikTok transcript text for videos without subtitles

Set `downloadSubtitlesOptions` to `DOWNLOAD_AND_TRANSCRIBE_VIDEOS_WITHOUT_SUBTITLES`. TikTok's own subtitles are used when they exist, and AI speech-to-text creates a transcript for the rest. Use `TRANSCRIBE_ALL_VIDEOS` to run speech-to-text on every video, which turns the Actor into a TikTok transcript generator for every clip. Videos with no speech, and photo posts, can still come back without a transcript. You will find the result in `whisper` and `transcriptText`.

#### How to download TikTok subtitles in one language

Select the languages you want in `languages`; all regional variants are kept, so English keeps `eng-US` and `eng-GB`. To keep the subtitles as files, enter a storage name in `videoKvStoreIdOrName`; every track is saved there as a `.vtt` file. Leave `languages` empty to keep every language. With `languages` set, the Actor runs as a TikTok video subtitle extractor for only the tracks you need.

#### How to translate TikTok video to English

Pick `english` in `translate`. To translate TikTok video to Spanish, pick `spanish` instead; any of the 133 languages in the list works. TikTok's own translated subtitles are used when they exist for that language, and the result is stored in `translation` with time-aligned segments.

#### How to get transcripts in bulk

A TikTok transcript bulk run only needs a long list in `urls`, one entry per line, or a link to a `.txt` file with one entry per line. Duplicates are removed. Raise `concurrency` (1 to 10, default 4) to process more videos at the same time.

#### How to use it as a TikTok video to text converter

Choose a speech-to-text option and the Actor can transcribe TikTok audio to text for videos with speech. Pick a model in `transcriptionModel`; the default is `base`. The speech-to-text details are stored in `whisper`, and the text is in `transcriptText`.

### How much does it cost to scrape TikTok transcripts?

This TikTok transcripts scraper uses the pay-per-event model: the price depends on your Apify plan, and each video record saved to the dataset counts as one `main_result` event. The price per 1,000 results is:

| Apify plan | Price per 1,000 results |
|---|---|
| Free | $1 |
| Bronze | $0.9 |
| Silver | $0.8 |
| Gold / Platinum / Diamond | $0.7 |

For example, on the Free plan 1,000 videos cost $1. Videos that cannot be loaded (deleted, private, invalid or blocked) are saved as error rows without that event. Each run also has a small start charge of $0.00005 (the Actor Start event).

On the Apify free plan, each run processes up to 10 videos, so you can get a TikTok transcript free of charge for small tests; paid plans have no per-run cap. See the Pricing tab for current rates.

### Input

The only required field is `urls`, the list of TikTok videos. It accepts full video links, photo-post links, short links (`vm.tiktok.com`, `vt.tiktok.com`, `tiktok.com/t/...`), bare numeric video IDs and links to a `.txt` file. Everything else is optional. See the Input tab for every option.

![TikTok Transcript Scraper input form with TikTok video URLs and subtitle options](IMAGE_URL_PLACEHOLDER "tiktok-transcript-scraper-input-form.png")

Example input:

```json
{
  "urls": [
    "https://www.tiktok.com/@openai/video/7368539099893927214"
  ],
  "downloadSubtitlesOptions": "DOWNLOAD_SUBTITLES"
}
```

| Parameter | What it does |
|---|---|
| `urls` | TikTok videos to get transcripts for, one per line. |
| `downloadSubtitlesOptions` | `DOWNLOAD_SUBTITLES` (TikTok subtitles only, default), `DOWNLOAD_AND_TRANSCRIBE_VIDEOS_WITHOUT_SUBTITLES` or `TRANSCRIBE_ALL_VIDEOS`. |
| `languages` | Keep only subtitle tracks in the selected languages. Empty keeps every language. |
| `transcriptionModel` | Speech-to-text model: `tiny`, `base` (default), `small`, `medium`, `large-v3` or `distil-large-v3`. |
| `transcriptionLanguage` | Optional two-letter code of the spoken audio, for example `en`. Empty detects the language automatically. |
| `translate` | Optional target language for a translated, time-aligned copy of the transcript. |
| `videoKvStoreIdOrName` | Optional key-value store name where subtitle and speech-to-text files are saved. |
| `keepDownloadedVideos` | Also store the MP4 that was downloaded for speech-to-text. Needs a storage name and a speech-to-text option. |
| `enrichAuthorProfile` | Adds the author's bio link, business category, language and organisation flag. Turn off for faster runs. On by default. |
| `concurrency`, `maxRetries`, `requestDelay`, `timeout` | Speed and retry settings. |
| `proxyConfiguration` | Optional proxy choice. |

💡 Start with a few videos to check the result before you run a long list.

### Output

The scraped results are shown as a dataset in the **Storage** tab. The table view is for convenience and doesn't show **all the fields**. Choose the Transcript view to read each transcript next to its language and word count. The Output tab also offers a combined JSON file with every record of the run.

![TikTok Transcript Scraper output table with transcript, language and view counts](IMAGE_URL_PLACEHOLDER "tiktok-transcript-scraper-output-table.png")

You can export the dataset as JSON, CSV or Excel. The `subtitles` field covers a TikTok subtitles download with every track.

Example output for the input above, shortened to the fields that have example values in the dataset schema:

```json
{
  "id": "7368539099893927214",
  "text": "Say hello to GPT-4o...",
  "textLanguage": "en",
  "createTime": 1715621720,
  "createTimeISO": "2024-05-13T17:35:20.000Z",
  "locationCreated": "US",
  "isAd": false,
  "hasTikTokShopProduct": false,
  "webVideoUrl": "https://www.tiktok.com/@openai/video/7368539099893927214",
  "diggCount": 483100,
  "shareCount": 117400,
  "playCount": 5900000,
  "collectCount": 48452,
  "commentCount": 5548,
  "repostCount": 0,
  "isSlideshow": false,
  "submittedVideoUrl": "https://www.tiktok.com/@openai/video/7368539099893927214",
  "author": "openai",
  "author_id": "7256178298626032683",
  "author_url": "https://www.tiktok.com/@openai",
  "duration": 82,
  "audio_title": "original sound",
  "audio_artist": "OpenAI",
  "languageCode": "eng-US",
  "subtitleFormat": "webvtt",
  "segmentCount": 37,
  "transcriptDuration": 82.061,
  "transcriptSource": "tiktok_subtitle",
  "transcriptLanguageIso": "en",
  "transcriptWordCount": 237,
  "transcriptCharCount": 1252,
  "subtitlesAvailable": true,
  "status": "ok"
}
```

The real record also contains the full transcript in `transcript` and `transcriptText`, the timed `segments`, and the nested `videoMeta`, `authorMeta` and `musicMeta` objects described in the field table.

### Limitations and error handling

- **Public videos only:** private videos cannot be read and are reported as not available.
- **Free plan cap:** free plan runs process up to 10 videos per run. Paid plans have no per-run cap.
- **Speech-to-text takes time:** with the default 1 GB of memory, expect roughly 1 to 5 minutes per minute of video. More memory in the run options makes it faster, and the `medium`, `large-v3` and `distil-large-v3` models need 4 GB or more.
- **Subtitle links expire:** without a storage name in `videoKvStoreIdOrName`, links point to TikTok's own subtitle files, which expire after about two days.
- **Translation depends on the source:** if a translation cannot be produced, the `translation` object carries an `error` message instead of text.
- **Not every video has speech:** a music-only or silent video can come back without a transcript.
- **Subtitle availability:** a TikTok subtitle extractor can only return what TikTok provides, so videos without subtitles need a speech-to-text option.

Every input entry gets a row, even when it fails. Check these fields:

| Field | Values | Meaning |
|---|---|---|
| `status` | `ok` | The video was loaded. |
| `status` | `error` | The video could not be loaded. `error` explains why: deleted, private, invalid input or blocked. |
| `inputType` | `url`, `short_url`, `id`, `invalid` | How TikTok Transcript Scraper read your entry. |

Error rows are not charged. If a video is reported as blocked, run it again later.

### Integrating TikTok Transcript Scraper with other apps

You can run TikTok Transcript Scraper from the Console, call it through the Apify API, schedule it, or trigger a webhook when a run finishes. Each Output tab view is also available through the API as a dataset view, so a script or workflow can read just the transcript or just the author data. Feed the dataset into your own TikTok video transcript tool or spreadsheet. See the API tab for ready-made JavaScript, Python and CLI snippets. For more options, read the [Apify integrations documentation](https://docs.apify.com/platform/integrations).

### Other TikTok scrapers by crawl_craft

| Actor | What it extracts | When to use it |
|---|---|---|
| [TikTok Video Scraper](https://apify.com/crawl_craft/tiktok-video-scraper) | Captions, hashtags, views, likes, comments, shares, author and music data, watermark-free video downloads and transcripts. | Use it when you mainly need video statistics and video file downloads. |
| [TikTok User Search Scraper](https://apify.com/crawl_craft/tiktok-user-search-scraper) | Full creator profiles from a keyword search: username, bio, bio link, followers, likes, videos, verified, TikTok Shop and live status. | Use it first to find creators, then bring their video links here for transcripts. |

Use this TikTok video transcript scraper when the spoken text, subtitle languages, speech-to-text and translation are the point.

### Is it legal to scrape TikTok?

TikTok Transcript Scraper works on public TikTok videos and needs no login; private videos are reported as not available. Results can still contain personal data, such as author names and usernames, so only collect it with a legitimate reason. Consider data protection rules such as GDPR (Regulation (EU) 2016/679) and TikTok's terms, and consult a lawyer if you are unsure. Read more about [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) and [ethical web scraping](https://blog.apify.com/what-is-ethical-web-scraping-and-how-do-you-do-it/).

### ❓ FAQ

#### How to get the full transcript of a TikTok video?

Paste the video link into `urls` and click **Start**. As a TikTok transcript extractor, the Actor returns the transcript in `transcriptText` and as timed `segments`. For a video that has no captions, choose a speech-to-text option in `downloadSubtitlesOptions`.

#### Is it a TikTok subtitle scraper or a speech-to-text tool?

Both. It acts as a TikTok subtitles extractor when TikTok has subtitles, and you get every track. When it does not, AI speech-to-text generates the transcript. `transcriptSource` shows which one produced the text.

#### Is there a TikTok transcript downloader for subtitle files?

Yes. Export the dataset as JSON, CSV or Excel. When you name a storage in `videoKvStoreIdOrName`, each subtitle track is saved there as a `.vtt` file, so a TikTok video subtitles download takes one run.

#### How much does it cost?

You pay $1 per 1,000 results on the Free plan and less on paid plans, on the pay-per-event model, and one saved video record is one result. Free plan runs are capped at 10 videos, enough to try a TikTok video transcript free of charge. See the Pricing tab for current rates.

#### Do I need an account, API key or proxies?

You need an Apify account to run the Actor, but no TikTok login is needed. Proxy settings are optional (`proxyConfiguration`).

#### How many videos can I process?

Free plan runs process up to 10 videos per run. Paid plans have no per-run cap. Run a small test first to confirm the output fits your needs.

#### Can I scrape private videos?

No. Private videos are reported as not available.

#### Can I use it as a TikTok transcript API?

Yes. Through the Apify API it works as a TikTok video transcript API: start a run and read the dataset items afterwards, for example from Python or Node.js with the Apify client libraries. Each Output tab view is available as `?view=transcript`, `?view=subtitles` and so on.

#### How can I get TikTok transcripts with timestamps?

The `segments` field holds each line with start and end in seconds, and `transcript` holds sentence segments with `HH:MM:SS.mmm` timestamps. That gives you a TikTok transcript with timestamps, ready for search, quoting or subtitle files.

#### Can it work as a TikTok caption scraper?

Yes. As a TikTok caption extractor, it returns each caption in `text` exactly as shown on TikTok, together with hashtags and mentions.

### Your feedback

Found a bug or need another field? Open a ticket in the Actor's **Issues** tab and we will take a look. For a custom solution, such as a tailored TikTok transcript tool or a different output format, write to hello.crawlcraft@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

TikTok videos to get transcripts for, one per line. Accepts full video links (https://www.tiktok.com/@user/video/123...), photo-post links, short links (vm.tiktok.com / vt.tiktok.com / tiktok.com/t/...), bare numeric video IDs, and links to a .txt file with one entry per line. Bulk paste supported; duplicates are removed. Free plan users get up to 10 videos per run; paid plans have no limit.

## `downloadSubtitlesOptions` (type: `string`):

How to get the spoken text. TikTok's own subtitles are used whenever they exist. The speech-to-text options also create a transcript with an AI model for videos without subtitles (or for every video). Speech-to-text takes time: with the default 1 GB memory expect roughly 1-5 minutes per minute of video; more memory in the run options makes it faster.

## `languages` (type: `array`):

Only keep subtitle tracks in the selected languages (all regional variants included, e.g. English keeps eng-US and eng-GB). You can also type a code such as en-US or eng-US for one region. The first matching track becomes the main transcript. Leave empty to keep every language TikTok has for the video.

## `transcriptionModel` (type: `string`):

AI model used by the speech-to-text options. Larger models are more accurate but slower; medium and large models need 4 GB memory or more in the run options.

## `transcriptionLanguage` (type: `string`):

Optional two-letter language code of the spoken audio (e.g. en, es, de) for the speech-to-text options. Leave empty to detect the language automatically.

## `translate` (type: `string`):

Optional target language for a translated, time-aligned copy of the transcript. TikTok's own translated subtitles are used when they exist for that language. Leave empty for no translation.

## `videoKvStoreIdOrName` (type: `string`):

Optional name (or ID) of a key-value store where the subtitle (.vtt) and speech-to-text files are saved; the record links then point to the stored files. A named store keeps the files until you delete them. Letters, digits and hyphens only, no spaces (e.g. tiktok-transcripts). Leave empty to skip saving files: the links then point to TikTok's own subtitle files, which expire after about two days.

## `keepDownloadedVideos` (type: `boolean`):

Also store the MP4 that was downloaded for speech-to-text in the storage above. Works only when a storage name is set and a speech-to-text option is selected.

## `enrichAuthorProfile` (type: `boolean`):

Add the author's bio link, business category, language and organisation flag. Turn off for faster runs.

## `concurrency` (type: `integer`):

How many videos are processed at the same time.

## `maxRetries` (type: `integer`):

How many times a video is retried when TikTok does not answer as expected.

## `requestDelay` (type: `number`):

Optional pause in seconds before each video is loaded. 0 = no pause.

## `timeout` (type: `integer`):

How long to wait for one answer from TikTok before retrying.

## `proxyConfiguration` (type: `object`):

Optional. Choose the proxy settings for your run. Leave the default if you are unsure.

## Actor input object example

```json
{
  "urls": [
    "https://www.tiktok.com/@openai/video/7368539099893927214"
  ],
  "downloadSubtitlesOptions": "DOWNLOAD_SUBTITLES",
  "languages": [],
  "transcriptionModel": "base",
  "keepDownloadedVideos": false,
  "enrichAuthorProfile": true,
  "concurrency": 4,
  "maxRetries": 3,
  "requestDelay": 0,
  "timeout": 40,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

One row per video: who, what was said and how it performed.

## `transcript` (type: `string`):

Full transcript text and timed sentence segments.

## `subtitles` (type: `string`):

Every subtitle track TikTok has for the video.

## `translation` (type: `string`):

Translated transcript (only when a target language was selected).

## `speechToText` (type: `string`):

Result of the AI speech-to-text options.

## `engagement` (type: `string`):

Caption, date, stats and hashtags.

## `videoDetails` (type: `string`):

Video file, quality and cover information.

## `author` (type: `string`):

Author profile of each video.

## `music` (type: `string`):

Sound used in each video.

## `outputJson` (type: `string`):

All records of the run in one JSON file, saved when the run stored at least one record.

# 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 = {
    "urls": [
        "https://www.tiktok.com/@openai/video/7368539099893927214"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawl_craft/tiktok-transcript-scraper").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 = {
    "urls": ["https://www.tiktok.com/@openai/video/7368539099893927214"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("crawl_craft/tiktok-transcript-scraper").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 '{
  "urls": [
    "https://www.tiktok.com/@openai/video/7368539099893927214"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call crawl_craft/tiktok-transcript-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawl_craft/tiktok-transcript-scraper"
        }
    }
}
```

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/tmaKIJ7ctHnbeXSS5/builds/ndc1DeZ52C1bFUgcO/openapi.json
