Spotify Podcast Scraper avatar

Spotify Podcast Scraper

Pricing

from $2.49 / 1,000 podcast episodes

Go to Apify Store
Spotify Podcast Scraper

Spotify Podcast Scraper

Scrape every episode of any Spotify podcast: titles, full descriptions, publish dates, durations, MP3 preview URLs, cover art, and explicit flags, plus show info and ratings. Export JSON, CSV, Excel.

Pricing

from $2.49 / 1,000 podcast episodes

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Spotify Podcast Scraper

Spotify Podcast Scraper exports every episode of any Spotify podcast: titles, full descriptions, publish dates, durations, MP3 preview URLs, cover art, and explicit flags, plus show-level info like publisher, rating, and total episode count.

Paste one Spotify show URL or ID and get the full episode catalog, newest first, with 20 fields per episode. Long shows paginate automatically, and a NEXT_PAGE_ID cursor lets you continue in the next run, so you never re-pay for episodes you already have.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Use Apify Actor parsebird/spotify-podcast-scraper to scrape Spotify podcast episodes. Example with ApifyClient: client.actor("parsebird/spotify-podcast-scraper").call(run_input={"show":"https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk","maxItems":100}). Inputs: show string required (Spotify show URL, spotify:show: URI, or 22-character show ID); maxItems integer default 100, 0 = unlimited; pageId string optional, the NEXT_PAGE_ID value (absolute episode offset) from a previous run's key-value store to resume; proxyConfiguration object default {"useApifyProxy":true}. Output: one dataset row per episode, newest first, with episodeId, url, title, description, htmlDescription, publishDate, durationMs, durationFormatted, audioPreviewUrl, imageUrl, explicit, isPlayable, playabilityReason, mediaTypes, hasVideo, isPaywalled, showName, showId, position, scrapedAt. Key-value store: SHOW_INFO (showId, url, showName, publisher, description, htmlDescription, totalEpisodes, imageUrl, mediaType, explicit, averageRating, totalRatings, topics, showTypes, consumptionOrder, contentType) and NEXT_PAGE_ID (null when the whole show was fetched). Price: $3.99 per 1,000 episodes on the Free plan. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.

What is Spotify Podcast Scraper?

Spotify Podcast Scraper is a Spotify podcast scraper and Spotify podcast API alternative that pulls a show's complete episode list as structured data. You don't need a Spotify account, developer app, or API key. Paste a show link such as https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk and the actor returns one row per episode.

The easiest way to try it is to open the actor, keep the prefilled Joe Rogan Experience URL, and click Start. You'll have 100 episodes in your dataset within seconds.

What can Spotify Podcast Scraper do?

  • 🎙️ Scrape any public Spotify show by URL, spotify:show: URI, or 22-character show ID. Locale URLs (/intl-de/show/...), embed URLs, and ?si= share links work too.
  • 📚 Export the full episode archive. Set Max Items to 0 and the actor paginates through the whole show. In our tests it fetched all 2,766 Joe Rogan Experience episodes in one run.
  • 🔁 Resume across runs with the NEXT_PAGE_ID cursor, so you can split a large archive into budget-friendly chunks or collect only new episodes.
  • 🧾 Show-level metadata saved as SHOW_INFO: publisher, description, total episodes, star rating and rating count, topics, and media type.
  • 🔊 30-second MP3 preview URLs and the highest-resolution cover art for each episode.
  • ⏱️ Stops safely before timeouts and spending limits and records where it stopped, so you don't lose progress.
  • ⏰ Run on a schedule with Apify schedules to track new episodes daily or weekly.
  • 🔌 Use the Apify API, webhooks, and integrations (Make, Zapier, Google Sheets, Slack, and more), and export datasets as JSON, CSV, Excel, XML, or HTML.

What data can you extract from Spotify podcasts?

FieldDescription
episodeId / urlSpotify episode ID and canonical episode URL
titleEpisode title
descriptionFull plain-text episode description
htmlDescriptionEpisode description as HTML, with links and line breaks preserved
publishDateRelease date. YYYY-MM-DD when Spotify only gives the day, otherwise a full ISO timestamp
durationMs / durationFormattedEpisode length in milliseconds and as 1:23:45 or 42:30
audioPreviewUrlDirect ~30-second MP3 preview clip, when Spotify provides one
imageUrlHighest-resolution episode cover art
explicittrue if Spotify marks the episode as explicit
isPlayable / playabilityReasonWhether the episode can be played, and Spotify's reason code
mediaTypes / hasVideoAUDIO, VIDEO, or both. hasVideo is true for video podcasts
isPaywalledtrue for paid or subscriber-only episodes
showName / showIdThe parent show
positionAbsolute position in the show's episode list (0 = newest)
scrapedAtWhen the row was captured

The SHOW_INFO record in the key-value store contains: showId, url, showName, publisher, description, htmlDescription, totalEpisodes, imageUrl, mediaType (AUDIO, VIDEO, or MIXED), explicit, averageRating, totalRatings, topics, showTypes, consumptionOrder (EPISODIC or SEQUENTIAL), and contentType.

How to scrape Spotify podcast episodes

  1. Open Spotify Podcast Scraper and go to the Input tab.
  2. Paste a Spotify show URL or 22-character show ID into Spotify Show URL or ID. To get it, open the podcast on Spotify, click Share → Copy link to show, and paste the link.
  3. Set Max Items (default 100). Use 0 to get every episode.
  4. Leave Page ID empty on your first run.
  5. Click Start. Episodes show up in the Dataset tab, newest first. Show metadata is saved to the Key-value store as SHOW_INFO.
  6. To get the next batch, open the Key-value store tab, copy the NEXT_PAGE_ID value, and paste it into Page ID on your next run. If NEXT_PAGE_ID is empty or null, you already have the whole show.
  7. Export the dataset as JSON, CSV, or Excel, or read it through the Apify API.

Input parameters

ParameterTypeRequiredDefaultDescription
showstringYes—Spotify show URL, spotify:show: URI, or 22-character show ID
maxItemsintegerNo100Maximum episodes to return in this run. 0 = unlimited
pageIdstringNo—NEXT_PAGE_ID from a previous run, used to resume. Leave empty to start from the newest episode
proxyConfigurationobjectNo{"useApifyProxy": true}Proxy settings. The default Apify Proxy is enough

Example input:

{
"show": "https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk",
"maxItems": 100
}

Output example

One dataset row per episode (descriptions shortened here):

{
"episodeId": "24C6qd4r0IKDGkytUzYUnM",
"url": "https://open.spotify.com/episode/24C6qd4r0IKDGkytUzYUnM",
"title": "#2567 - Mariana van Zeller",
"description": "Mariana van Zeller is a Peabody and Emmy Award-winning journalist whose credits include \"Trafficked with Mariana van Zeller,\" \"The OxyContin Express,\" and \"Insi...",
"htmlDescription": "<p>Mariana van Zeller is a Peabody and Emmy Award-winning journalist whose credits include...",
"publishDate": "2026-10-16T17:00:00Z",
"durationMs": 8657854,
"durationFormatted": "2:24:18",
"audioPreviewUrl": "https://p.scdn.co/mp3-preview/c1e8996f1edecafc9bd636f95507f005d66d053e.mp3",
"imageUrl": "https://i.scdn.co/image/ab6765630000ba8a11c7c3e1f347d56a883f02f9",
"explicit": true,
"isPlayable": true,
"playabilityReason": "PLAYABLE",
"mediaTypes": ["VIDEO", "AUDIO"],
"hasVideo": true,
"isPaywalled": false,
"showName": "The Joe Rogan Experience",
"showId": "4rOoJ6Egrf8K2IrywzwOMk",
"position": 0,
"scrapedAt": "2026-10-18T02:56:08.787Z"
}

SHOW_INFO in the key-value store:

{
"showId": "4rOoJ6Egrf8K2IrywzwOMk",
"url": "https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk",
"showName": "The Joe Rogan Experience",
"publisher": "Joe Rogan",
"description": "The official podcast of comedian Joe Rogan.",
"htmlDescription": "<p>The official podcast of comedian Joe Rogan.</p>",
"totalEpisodes": 2766,
"imageUrl": "https://i.scdn.co/image/ab6765630000ba8a8007f4df0a76e787cb94308a",
"mediaType": "MIXED",
"explicit": true,
"averageRating": 4.65,
"totalRatings": 955472,
"topics": ["Comedy"],
"showTypes": ["SHOW_TYPE_EXCLUSIVE"],
"consumptionOrder": "EPISODIC",
"contentType": "CONTENT_TYPE_PODCAST"
}

You can download the dataset in JSON, CSV, Excel, XML, or HTML from the run's Storage tab.

Python API example

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/spotify-podcast-scraper").call(run_input={
"show": "https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk",
"maxItems": 100,
})
for episode in client.dataset(run["defaultDatasetId"]).iterate_items():
print(episode["publishDate"], episode["durationFormatted"], episode["title"])
store = client.key_value_store(run["defaultKeyValueStoreId"])
show_info = store.get_record("SHOW_INFO")["value"]
next_page = store.get_record("NEXT_PAGE_ID")
print(show_info["showName"], show_info["totalEpisodes"], next_page and next_page["value"])

JavaScript API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/spotify-podcast-scraper').call({
show: 'https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((e) => `${e.publishDate} ${e.title}`));
const store = client.keyValueStore(run.defaultKeyValueStoreId);
const showInfo = await store.getRecord('SHOW_INFO');
console.log(showInfo.value.showName, showInfo.value.totalEpisodes);

See Apify's Python client and JavaScript client docs for more options.

Use cases

  • Podcast research and analytics. Load a full episode catalog into a spreadsheet to study release cadence, episode length, and topics.
  • Competitor analysis. Compare podcasts by total episodes, average duration, publishing frequency, star rating, and rating count.
  • Content discovery and search. Build a searchable index of episode titles and descriptions for a show or a whole category.
  • New-episode monitoring. Schedule a daily run with a small Max Items to get notified when a show publishes something new.
  • Guest and sponsor research. Find guest names in episode titles and sponsor links in descriptions for outreach or ad-market research.
  • Archiving. Save episode metadata, preview clips, and cover art before a show is removed from Spotify.

How it works

  1. The actor reads your show URL or ID and checks that it's valid.
  2. It loads the show's public metadata from Spotify's web player data, the same data open.spotify.com shows to logged-out visitors, and saves it as SHOW_INFO.
  3. It requests episodes in pages of up to 100, starting at the newest episode or at your pageId offset, and pushes each page to the dataset.
  4. It stops when it reaches Max Items, the end of the show, your spending limit, or about 60 seconds before the run timeout. Then it writes NEXT_PAGE_ID so the next run can continue from that point.

How much does it cost to scrape Spotify podcasts?

What is the price per Spotify podcast episode?

PlanPrice per episodePrice per 1,000 episodes
Free$0.00399$3.99
Bronze$0.00349$3.49
Silver$0.00299$2.99
Gold$0.00249$2.49

You pay one episode-scraped event for each episode saved to the dataset. Compute and proxy usage are included in the event price. Fetching show metadata (SHOW_INFO) is free. For example, the prefilled run (100 episodes) costs $0.40 on the Free plan, and a complete 2,766-episode Joe Rogan Experience archive costs about $11.04 on Free or $6.89 on Gold.

How do I cap my spend?

Set a maximum cost per run in the run options. The actor stops at that limit, only charges for the episodes it saved, and writes NEXT_PAGE_ID so you can continue later.

Is scraping Spotify legal?

Spotify Podcast Scraper only collects publicly available podcast metadata that anyone can see on open.spotify.com without logging in. It does not access accounts, private data, or full episode audio. Scraping publicly available data is generally allowed in many jurisdictions, but you should review Spotify's Terms of Use and make sure your use case complies with applicable laws, especially if you republish content. For more background, read Apify's guide: Is web scraping legal?

ActorBest for
Apple Podcasts ScraperApple Podcasts episodes by search, iTunes ID, or RSS feed, including full audio URLs
Podcast Directory ScraperFinding podcasts on Apple Podcasts and Spotify, with host contact emails and websites from RSS feeds
Spotify Play Count ScraperExact Spotify stream counts, monthly listeners, and discographies for artists, albums, and tracks
YouTube Transcript ScraperTranscripts of video podcasts published on YouTube
SoundCloud ScraperSoundCloud tracks, playlists, and artist profiles with play and like counts

FAQ

Do I need a Spotify account or API key?

No. The actor works without logging in, without a Spotify developer app, and without any Spotify credentials.

Can I scrape multiple podcasts in one run?

One show per run. This keeps each show's dataset, SHOW_INFO, and NEXT_PAGE_ID cursor separate. To scrape many shows, call the actor once per show through the API or set up an Apify task for each one.

What order are episodes returned in?

Spotify's default order, newest first. position 0 is the most recent episode.

How does pagination work?

NEXT_PAGE_ID is the absolute offset of the next episode to fetch. For example, 100 after a 100-episode first run. Paste it into Page ID to continue from there. When the actor reaches the end of the show, NEXT_PAGE_ID is empty or null.

Can I download full podcast episodes?

No. Spotify only gives logged-out visitors a ~30-second MP3 preview (audioPreviewUrl). Full audio requires a logged-in Spotify session, which this actor doesn't use. If you need full audio files for shows that also publish RSS feeds, use Apple Podcasts Scraper.

Why is audioPreviewUrl null for some episodes?

Spotify doesn't provide a preview clip for every episode. In our full run of the Joe Rogan Experience, 2 of 2,766 episodes had no preview.

What happens with geo-restricted or unavailable episodes?

The episode still gets a row with episodeId, url, and position, so your index stays complete. Spotify doesn't return its metadata, so those fields are null and isPlayable is false.

Does it return episode play counts or listener numbers?

No. Spotify doesn't show play counts for podcast episodes publicly. The show's star rating (averageRating) and number of ratings (totalRatings) are in SHOW_INFO.

Can I use Spotify Podcast Scraper as a Spotify podcast API?

Yes. Start runs and read the results through the Apify API, the Python or JavaScript clients, webhooks, or integrations.

Where can I report issues or request fields?

Open the Issues tab on the actor page and include the show URL, run ID, and what you expected.