Spotify Podcast Transcript Scraper & Keyword Monitor
Spotify podcast transcripts as Spotify publishes them: full text, timestamped lines and SRT/VTT, by episode, show or search, with keyword mentions linked to the second.
Verification
Not yet in the weekly verification report.
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
episode_id | string|null |
episode_url | string|null |
episode_name | string|null |
show_name | string|null |
show_id | string|null |
show_url | string|null |
release_date | string|null |
duration_seconds | integer|null |
explicit | boolean|null |
description | string|null |
language | string|null |
available_languages | array|null |
sync_level | string|null |
line_count | integer|null |
word_count | integer|null |
text | string|null |
lines | array|null |
mention_count | integer|null |
mentions | array|null |
subtitles | string|null |
query | string|null |
notice | string|null |
notice_type | string|null |
source_url | string|null |
Sample row
{
"episode_id": "2wRBPdg9rB4KCgNaPAMnoZ",
"episode_url": "https://open.spotify.com/episode/2wRBPdg9rB4KCgNaPAMnoZ",
"episode_name": "OpenAI: When AI Agents Use Computers Faster Than You",
"show_name": "The a16z Show",
"release_date": "2026-10-26",
"duration_seconds": 2654,
"language": "en-us",
"available_languages": [
"en-us"
],
"sync_level": "SYLLABLE_SYNCED",
"word_count": 9268,
"mention_count": 2,
"mentions": [
{
"keyword": "OpenAI",
"timestamp": "00:03:45",
"text": "Think our goal at OpenAI is really about building products that's useful for everyone.",
"url": "https://open.spotify.com/episode/2wRBPdg9rB4KCgNaPAMnoZ?t=225"
}
],
"text": "...",
"subtitles": "WEBVTT\n\n...",
"query": "search: ai agents"
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
episodes | array | no | ["https://open.spotify.com/episode/5PbCV6cAP5p8CK825HvBff"] | One per line: Spotify episode links (https://open.spotify.com/episode/...), spotify:episode: URIs or bare episode ids. Each one returns its transcript. |
episode | string | no | — | One episode link or id, for saved tasks and API calls that send a single value. Use the list above for several. |
shows | array | no | [] | One per line: Spotify show links (https://open.spotify.com/show/...). Each returns its newest episodes that have a transcript, up to Maximum episodes. |
show | string | no | — | One show link or id, for saved tasks and API calls that send a single value. |
searchQueries | array | no | [] | One per line: words to search Spotify's podcast episodes for (AI agents, your brand, a guest's name). Spotify matches titles and descriptions and ranks by relevance; episodes that have a transcript are returned, up to Maximum episodes per search. |
searchQuery | string | no | — | One search, for saved tasks and API calls that send a single value. |
maxEpisodes | integer | no | 5 | How many episodes with a transcript to read for EACH show (newest first) and EACH search (most relevant first). Episode links are always all read. |
publishedAfter | string | no | — | YYYY-MM-DD. Shows and searches skip episodes released before this day. Empty keeps every date. |
keywords | array | no | [] | Optional, one per line: words or phrases (your brand, a competitor, a person). Each row gets every line that says one (whole words, any case) with its timestamp and a link that plays the episode from that moment. |
keyword | string | no | — | One keyword, for saved tasks and API calls that send a single value. |
onlyWithMentions | boolean | no | true | With keywords set: deliver (and charge) only the episodes whose transcript says at least one of them. Turn off to get every transcript with its mention count. |
onlyNew | boolean | no | false | Remembers which episodes this same set of shows, searches and keywords already delivered, and skips them. Schedule it daily or weekly and you get, and pay for, only new episodes. |
language | string | no | — | Optional language code (en, es, de, fr, pt-br...). Many big shows publish translated transcripts; when the episode has one in this language you get it, otherwise its original. Empty means the original. |
includeTimestamps | boolean | no | true | Also return the transcript as lines, each with its start time in milliseconds. The full text is always returned. |
subtitleFormat | string | no | "none" | Also return the transcript as an SRT or WebVTT subtitle file (in the subtitles field). |
Pricing
Pay per result (transcript) — no charge for empty runs.
Example: 1000 transcripts at $0.02/result ≈ $20.00.
FAQ
Is this Spotify's transcript or a new transcription?
Spotify's own: the same text the Spotify app shows under the episode. No audio is downloaded or processed, which is why the price is per episode and not per minute. It also means an episode Spotify has not transcribed has nothing to return; you get a free row saying so.
How many episodes have a transcript?
Most, but not every show transcribes every episode. Measured 2026-11-04: 29 of the first 30 Spotify search results for "ai agents" had one, and 29 of 30 for "Shopify"; 15 of 18 recent episodes across 5 large shows; 5 of the newest 7 Joe Rogan Experience episodes. The Daily had one on roughly one episode a week (the New York Times publishes its own weekday transcripts), and a new episode often gets its transcript some hours after release. Episodes without one are skipped for shows and searches, and are a free row when you ask for them by link. Each row's available_languages lists what Spotify has.
How do keyword mentions work?
Add keywords (a brand, a person, a product). Each transcript is searched for them as whole words in any case, and every line that says one comes back with the keyword, the time (HH:MM:SS) and a link that opens the episode at that second. With "Only episodes that mention a keyword" on (the default when you give keywords), episodes that never say one are not delivered and not charged.
How do I get only new episodes on a schedule?
Turn on follow mode ("Only episodes not delivered before"), save the run as a task and schedule it. The actor remembers which episodes this same set of shows, searches and keywords already delivered and skips them, so each run returns and charges for new episodes only. The first run delivers the current ones.
What does search find?
Spotify's own episode search, which matches titles and descriptions and ranks by relevance, the same as the search box in the app for a listener in the United States (other languages still appear when they match: 1 of 29 transcribed "Shopify" hits was a Mexican Spanish show). Only episodes with a transcript are returned, up to Maximum episodes per search; add keywords to keep only the episodes whose transcript actually says your term.
Can I get translated transcripts?
Where Spotify publishes them. Some large shows carry several (one episode of The Daily had English plus 9 translations on 2026-11-04). Set Transcript language to en, es, de, fr, pt-br and so on; an episode without that language returns its original, and available_languages shows what each episode has.
How fast is it?
Measured 2026-11-04 outside Apify: a "Shopify" search with keyword matching returned 10 transcripts (101,809 words) in 9 seconds, and the newest 5 Joe Rogan Experience episodes with SRT subtitles (171,017 words) took 8 seconds. The first run on Apify itself, one episode, finished in 17 seconds.
What if Spotify does not answer?
You get a free row with notice_type "blocked" and nothing is charged. Spotify transcripts are read through our own Spotify access; if it needs renewing, the row says so and we are alerted to fix it. Run again later.
Guides & use cases