# Spotify Podcast Transcript: Apple Podcasts & RSS to Text (`spokentext/spotify-podcast-transcript`) Actor

Paste a Spotify or Apple Podcasts episode link and get the full transcript: plain text, timestamps and SRT subtitles. Works with any public podcast, RSS feed or audio file. Pay per audio minute, no subscription.

- **URL**: https://apify.com/spokentext/spotify-podcast-transcript.md
- **Developed by:** [clement](https://apify.com/spokentext) (community)
- **Categories:** AI, For creators, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 audio minute transcribeds

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

## Spotify Podcast Transcript: Apple Podcasts & RSS to Text

Paste a **Spotify** or **Apple Podcasts** link and get the full episode transcript as plain text, timestamped segments and SRT subtitles. Also accepts podcast RSS feeds and direct audio or video file URLs.

- **No login, no cookies, no API key.** Just the link you copy from the Share button.
- **Pay per audio minute.** No subscription, no charge for episodes that fail.
- **99+ languages** with automatic language detection (Whisper large-v3).
- **Fast.** A one-hour episode is typically ready in about a minute.

### What you can paste

| Input | Example | What you get |
|---|---|---|
| Spotify episode | `https://open.spotify.com/episode/4IpeKxxTTa6vw4lRbqH0lg` | That episode |
| Spotify show | `https://open.spotify.com/show/2MAi0BvDc6GTFvKFPXnkCL` | The latest episodes |
| Apple Podcasts episode | `https://podcasts.apple.com/us/podcast/the-daily/id1200361736?i=1000...` | That episode |
| Apple Podcasts show | `https://podcasts.apple.com/us/podcast/the-daily/id1200361736` | The latest episodes |
| RSS feed | `https://feeds.npr.org/500005/podcast.xml` | The latest episodes |
| Audio or video file | `https://example.com/interview.mp3` | That file |

For show links and RSS feeds, set **Episodes per show** to choose how many recent episodes to transcribe (default 1, maximum 50).

### How to use

1. Open the episode in Spotify or Apple Podcasts and choose **Share → Copy link**.
2. Paste the link into **Episode, show, RSS or audio URLs**. Add as many links as you like.
3. Optionally set the language, turn on SRT subtitles, or choose how many recent episodes to take from a show.
4. Click **Start**. When the run finishes, open the **Output** tab and download the transcripts as JSON, CSV or Excel.

### Output

One dataset item per episode:

```json
{
    "inputUrl": "https://open.spotify.com/episode/082a1V6nazH9ZZqskV1vfz",
    "status": "ok",
    "showName": "Lex Fridman Podcast",
    "episodeTitle": "#502 – Psychiatry, Insane Asylums, Mental Illness, ECT, Lobotomies, Freud & Jung",
    "publishedAt": "2026-09-17T00:42:00.000Z",
    "audioUrl": "https://media.blubrry.com/.../lex_ai_andrew_scull.mp3",
    "language": "english",
    "durationSeconds": 13409,
    "transcribedMinutes": 223,
    "truncated": false,
    "text": "The following is a conversation with...",
    "segments": [{ "start": 0, "end": 4.2, "text": "The following is a conversation with..." }],
    "srt": "1\n00:00:00,000 --> 00:00:04,200\nThe following is a conversation with...\n"
}
```

`segments` is included by default; `srt` is included when **Include SRT subtitles** is on. Episodes that cannot be processed produce an item with `"status": "error"` and an `error` message, and are not charged.

### Pricing

You pay for each minute of audio transcribed, rounded to the nearest minute (minimum one minute per episode). Set **Maximum minutes per episode** or the run's maximum charge to cap spending: the Actor stops before exceeding either, and marks a cut episode with `"truncated": true`.

### Limits

- **Spotify exclusives are not supported.** Spotify does not expose audio files, so the Actor finds the same episode in the show's public RSS feed. Shows that exist only on Spotify return a clear error and are not charged. If you have the RSS feed or audio URL, pass that instead.
- Apple Podcasts episode links work for the 200 most recent episodes of a show. For older episodes, pass the audio URL from the RSS feed.
- No speaker labels: the transcript does not say who is speaking.
- For your own recordings and video files, use [Audio & Video to Text](https://apify.com/spokentext/audio-video-to-text).
- Episodes up to about 2 hours. Longer episodes may return an error and are not charged.

### Use cases

- Turn episodes into blog posts, show notes, newsletters and social clips.
- Feed podcast content to an LLM for summaries, search or research (RAG).
- Monitor what competitors, analysts or guests say on podcasts.
- Create subtitles for video podcasts.

### Run it from the API

```bash
curl -X POST "https://api.apify.com/v2/acts/spokentext~spotify-podcast-transcript/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "urls": ["https://open.spotify.com/episode/082a1V6nazH9ZZqskV1vfz"] }'
```

### FAQ

#### How do I get a transcript of a Spotify podcast?

Copy the episode link from Spotify's Share menu, paste it into this Actor and start the run. You get the full text with timestamps, usually in under a minute.

#### Can I export the transcript Spotify shows in its app?

Spotify displays transcripts for some shows but offers no way to export them. This Actor creates its own transcript from the episode's audio, so it also works for shows where Spotify displays none.

#### Does it work with Spotify-exclusive podcasts?

No. Spotify does not expose audio files, so the Actor locates the same episode in the show's public RSS feed. A show that exists only on Spotify has no such feed and returns a clear error.

#### How long does it take and how much does it cost?

A 50-minute episode takes about 40 seconds and costs $0.15. Price is $0.003 per audio minute, with nothing charged for episodes that fail.

#### How accurate is the transcript?

It uses Whisper large-v3. Clear speech comes out very accurately; names, jargon and people talking over each other can contain mistakes. The transcript does not label speakers.

#### Which languages are supported?

More than 99, detected automatically. For short or noisy audio, setting the language code (en, fr, es, de...) improves accuracy.

#### Can I transcribe a whole podcast show?

Yes. Paste the show link or its RSS feed and set **Episodes per show**, up to the 50 most recent episodes per run.

#### Can I use it from my own code, Make, Zapier or n8n?

Yes. Call it through the Apify API (see the example above), or connect it with Apify's integrations for Make, Zapier and n8n. Every run returns the same JSON.

#### What happens to the audio?

The audio is downloaded during the run, sent to our speech-to-text provider (Groq) to be transcribed, and deleted when the run ends. Transcripts are stored only in your own Apify account.

#### Is it legal to transcribe a podcast?

The Actor only downloads audio that the publisher already distributes publicly through its RSS feed, the same file any podcast app plays. Transcripts are your own working copies: check the publisher's terms and copyright law before republishing them.

# Actor input Schema

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

Spotify episode or show links, Apple Podcasts links, podcast RSS feed URLs, or direct audio/video file URLs (mp3, m4a, wav, mp4...).

## `maxEpisodesPerShow` (type: `integer`):

For show links and RSS feeds: how many of the most recent episodes to transcribe. Ignored for single-episode links.

## `language` (type: `string`):

Two-letter language code of the audio (en, fr, es, de...). Leave empty to detect it automatically. Setting it improves accuracy on short or noisy audio.

## `includeSegments` (type: `boolean`):

Add a list of timestamped segments (start, end, text) to each result.

## `includeSrt` (type: `boolean`):

Add the transcript as an SRT subtitle file string.

## `maxMinutesPerEpisode` (type: `integer`):

Longer episodes are cut at this length, so a single run can never cost more than you expect.

## Actor input object example

```json
{
  "urls": [
    "https://open.spotify.com/show/6BRSvIBNQnB68GuoXJRCnQ",
    "https://video-api.wsj.com/podcast/rss/wsj/minute-briefing"
  ],
  "maxEpisodesPerShow": 1,
  "includeSegments": true,
  "includeSrt": false,
  "maxMinutesPerEpisode": 300
}
```

# Actor output Schema

## `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 = {
    "urls": [
        "https://open.spotify.com/show/6BRSvIBNQnB68GuoXJRCnQ",
        "https://video-api.wsj.com/podcast/rss/wsj/minute-briefing"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("spokentext/spotify-podcast-transcript").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://open.spotify.com/show/6BRSvIBNQnB68GuoXJRCnQ",
        "https://video-api.wsj.com/podcast/rss/wsj/minute-briefing",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("spokentext/spotify-podcast-transcript").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://open.spotify.com/show/6BRSvIBNQnB68GuoXJRCnQ",
    "https://video-api.wsj.com/podcast/rss/wsj/minute-briefing"
  ]
}' |
apify call spokentext/spotify-podcast-transcript --silent --output-dataset

```

## MCP server setup

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

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/WfgIkrccQE1Ydh0ys/builds/xmff4rFxocZ10QAaR/openapi.json
