Spotify Podcast Scraper: Episodes, Shows & Search avatar

Spotify Podcast Scraper: Episodes, Shows & Search

Pricing

from $0.50 / 1,000 podcast episodes

Go to Apify Store
Spotify Podcast Scraper: Episodes, Shows & Search

Spotify Podcast Scraper: Episodes, Shows & Search

Export Spotify podcast episodes and show data: titles, descriptions, release dates, durations, explicit flags, languages and publisher. Paste show links or search podcasts by keyword.

Pricing

from $0.50 / 1,000 podcast episodes

Rating

0.0

(0)

Developer

Eduardo Airaudo

Eduardo Airaudo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Features

Limited permissions

Share

Spotify Podcast Scraper

Spotify podcast episodes and show data, as clean rows: every episode's title, description, release date, duration and explicit flag, and every show's publisher, description, episode count and languages. Paste show links, show names or episode links, or search podcasts by keyword, and export the results to JSON, CSV or Excel. No Spotify account and no API key.

Unofficial; not affiliated with Spotify. This Actor reads the public podcast information Spotify shows on show and episode pages. It downloads no audio and no transcripts.

What does Spotify Podcast Scraper do?

For every show you enter or find by keyword, Spotify Podcast Scraper returns:

  • One show row (rowType show): the show's name, publisher, description, totalEpisodes, languages, mediaType (audio, video or mixed), explicit, cover art (imageUrl) and Spotify link (url).
  • Its episodes (rowType episode), newest first, up to Max episodes per show: title (name), description, releaseDate, durationMs, explicit, languages, Spotify's short audio preview link (previewUrl), cover art and link, plus the show they belong to (showId, showName).

Episode links return just that episode, with its show. Shows and episodes use the same columns, so one CSV holds both: filter by rowType.

How to scrape Spotify podcast episodes

  1. Paste your shows into Shows or episodes, one per line: Spotify show links, spotify:show: URIs, 22-character show IDs, show names (for example The Joe Rogan Experience) or episode links.
  2. Set Max episodes per show (default 50; up to 10,000 for a whole back catalog; 0 for show rows only).
  3. Click Start and open the Shows and episodes view in the Output tab, or download the rows as JSON, CSV, Excel or HTML.

A show name is looked up with Spotify's podcast search, and only a show whose name matches it is used (case, accents and punctuation aside). matchedName shows the show it matched. A name that matches no show is not charged; use the show's link for an exact match.

Search Spotify podcasts by keyword

Put keywords in Search terms (searchTerms), one per line, as you would type them in Spotify (for example true crime, startup, history). Each term adds the first shows Spotify finds, in Spotify's order, up to Max shows per search (maxShowsPerSearch, default 10). Every show found gets its show row and its episodes, and says which term found it (searchTerm) and where it ranked (searchRank). A show found by two terms, or also entered as a link, is fetched and charged once.

Get new episodes on a schedule

Set Only episodes released since (sinceDate) to an age such as 7 days and schedule the Actor weekly in Apify: every run returns only the episodes released in the last week, so you never pay twice for the same back catalog. A fixed date such as 2026-10-01 works too. Spotify lists episodes newest first, so the Actor stops reading a show as soon as it reaches older episodes. A show with nothing new still gets its show row and is named in showsWithoutNewEpisodes in the run summary. Episode links you enter are always returned.

Input

FieldWhat it doesDefault
showsShow links (open.spotify.com/show/…, spotify.link short links too), spotify:show: URIs, show IDs, show names or episode links, one per line. A bare ID is read as a show; enter episodes as links or spotify:episode: URIs.none
searchTermsKeywords that find podcasts, one per line.none
maxShowsPerSearchShows each search term adds, in Spotify's order (1-100).10
maxEpisodesPerShowEpisodes per show, newest first (0-10,000; 0 = show rows only).50
sinceDateOnly episodes released on or after this day: 2026-10-01, or an age such as 7 days, 2 weeks, 1 month, 1 year.none
marketTwo-letter country code: Spotify offers some shows and episodes only in some countries, and ranks search results per country.US

Fill in shows, searchTerms or both. Example input:

{
"shows": [
"https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk",
"Crime Junkie"
],
"searchTerms": ["true crime"],
"maxShowsPerSearch": 2,
"maxEpisodesPerShow": 10,
"sinceDate": "30 days"
}

Output

A show row (The Joe Rogan Experience on 2026-11-01):

{
"rowType": "show",
"id": "4rOoJ6Egrf8K2IrywzwOMk",
"showId": "4rOoJ6Egrf8K2IrywzwOMk",
"showName": "The Joe Rogan Experience",
"name": "The Joe Rogan Experience",
"publisher": "Joe Rogan",
"description": "The official podcast of comedian Joe Rogan.",
"releaseDate": null,
"durationMs": null,
"explicit": true,
"languages": ["en"],
"mediaType": "mixed",
"totalEpisodes": 2774,
"previewUrl": null,
"imageUrl": "https://i.scdn.co/image/ab6765630000ba8ae7c95712f4940a9bf439467e",
"url": "https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk",
"input": "https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk",
"resolvedFrom": "url",
"matchedName": null,
"searchTerm": null,
"searchRank": null,
"scrapedAt": "2026-11-01T20:10:43.152Z"
}

One of its episode rows:

{
"rowType": "episode",
"id": "3Lz9d1PXPIJA7yisUsrF6p",
"showId": "4rOoJ6Egrf8K2IrywzwOMk",
"showName": "The Joe Rogan Experience",
"name": "#2574 - Francis Foster & Konstantin Kisin",
"publisher": "Joe Rogan",
"description": "Comedian Francis Foster and political commentator Konstantin Kisin host the \"TRIGGERnometry\" podcast. …",
"releaseDate": "2026-10-31",
"durationMs": 9494953,
"explicit": true,
"languages": ["en"],
"mediaType": null,
"totalEpisodes": null,
"previewUrl": "https://p.scdn.co/mp3-preview/7725a14a06b2a632a9f4bbac2496db8761589c77.mp3",
"imageUrl": "https://i.scdn.co/image/ab6765630000ba8aa00b583dd65ecf56393e28a1",
"url": "https://open.spotify.com/episode/3Lz9d1PXPIJA7yisUsrF6p",
"input": "https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk",
"resolvedFrom": "url",
"matchedName": null,
"searchTerm": null,
"searchRank": null,
"scrapedAt": "2026-11-01T20:10:43.158Z"
}
FieldMeaning
rowTypeshow or episode.
id, name, urlThe show's or episode's Spotify ID, name (episode title) and page.
showId, showNameThe show: the row itself on a show row, the show the episode belongs to on an episode row.
publisherWho publishes the show.
descriptionThe description as plain text, at most 2,000 characters.
releaseDate, durationMsEpisode rows: release day (YYYY-MM-DD) and length in milliseconds.
explicit, languagesSpotify's explicit flag and language codes.
mediaType, totalEpisodesShow rows: audio, video or mixed, and how many episodes the show has in the market.
previewUrl, imageUrlEpisode rows: Spotify's short audio preview link, when there is one; the cover art.
input, resolvedFrom, matchedNameThe line you entered (or the search term); how it named the show (url, uri, id, short_link, search for a show name, search_term for a keyword hit); for a show name, the show it matched.
searchTerm, searchRankThe search term that found the show and its place in Spotify's results (on its episodes too).
scrapedAtWhen the row was read.

The Output tab has three views: Shows and episodes, Shows and Episodes. The run's key-value store also holds RUN_SUMMARY (counts, events charged, warnings) and, when an input failed, ERRORS.

How much does it cost to scrape Spotify podcasts?

You pay per row delivered: one price per show row and a lower one per episode row. Your price follows your Apify plan:

Apify planPer showPer 1,000 showsPer episodePer 1,000 episodes
Free$0.002$2.00$0.0008$0.80
Bronze$0.0018$1.80$0.0007$0.70
Silver$0.0016$1.60$0.0006$0.60
Gold, Platinum and Diamond$0.0014$1.40$0.0005$0.50

Each run also has Apify's start fee of $0.00005 (5 thousandths of a cent), and Apify covers the first 5 seconds of every run's compute. There is no monthly rental and no charge for platform usage.

Example (Free plan)RowsCost
The prefilled input (3 shows, 10 episodes each)3 shows + up to 30 episodesup to $0.03 + $0.00005 start
One show with its newest 50 episodes1 show + 50 episodes$0.042
100 shows with their newest 50 episodes100 shows + 5,000 episodes$4.20
A weekly schedule of 20 shows, sinceDate 7 days (about 1 new episode each)20 shows + 20 episodes a weekabout $0.056 a week

Never charged: search hits themselves (you pay for the show rows they deliver), unknown shows and episodes, names that match no show, searches without results, links to tracks or albums, broken IDs, repeats, episodes Spotify does not offer in the market and episodes older than Only episodes released since. Set a maximum cost per run and the Actor stops at that amount without going over: shows come first, then as many episodes as the rest of the budget pays for.

FAQ

Does it download audio or transcripts?

No. It returns the information Spotify publishes about shows and episodes, plus Spotify's own short preview link (previewUrl) when Spotify offers one. It never downloads, stores or transcribes episode audio.

How many episodes can I get per show?

Up to 10,000, newest first: set Max episodes per show. Spotify pages episodes 50 at a time, so a 2,000-episode back catalog takes about 40 requests and a minute or two.

Why do some shows have fewer episodes than I asked for?

Spotify offers some episodes only in some countries; those are skipped (and not charged) in the market you chose, and a show whose newest episodes are all unavailable there is named in the warnings of the run summary. Try another market. Shows with fewer episodes than Max episodes per show return all they have.

Why is previewUrl empty?

Spotify publishes no preview for some episodes (often video episodes or exclusive ones).

Yes. Links and IDs are fetched directly; show names are looked up with Spotify's podcast search first; search terms add the shows Spotify finds. resolvedFrom tells you how each show was found.

Do I need a Spotify account or API key?

No. You only need an Apify account. The Actor never uses your Spotify login.

The Actor reads public information that Spotify shows to every visitor of a show or episode page, and returns no personal data about listeners. Check that your use of the data complies with Spotify's terms and the laws that apply to you.

Use it from the Apify API or MCP

Start a run, wait for it and get the rows in one call (synchronous calls wait up to 5 minutes):

curl -X POST "https://api.apify.com/v2/acts/eduair94~spotify-podcast-scraper/run-sync-get-dataset-items?maxTotalChargeUsd=1" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"shows": ["https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk"], "maxEpisodesPerShow": 20, "sinceDate": "30 days"}'

JavaScript, with the apify-client package:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('eduair94/spotify-podcast-scraper').call({
searchTerms: ['true crime'],
maxShowsPerSearch: 5,
maxEpisodesPerShow: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const row of items.filter((item) => item.rowType === 'episode')) console.log(row.showName, row.releaseDate, row.name);

Python, with the apify-client package:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("eduair94/spotify-podcast-scraper").call(
run_input={"shows": ["https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk"], "sinceDate": "7 days"}
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["rowType"], row["name"], row.get("releaseDate"))

AI agents can call it too: add the Actor to Apify's MCP server and ask for a show's latest episodes in plain language.

Use cases

  • Podcast research: compare the shows of a niche by episode count, release rhythm, episode length and languages.
  • Guest booking and PR: search a topic, read every show's latest episode titles and descriptions, and find who covers it.
  • Podcast ad sales: build lists of active shows by keyword and market, with publisher and release frequency.
  • Media monitoring: a weekly schedule with sinceDate delivers only the new episodes of the shows you follow.
  • Content and SEO teams: export a full back catalog of titles and descriptions for analysis.