Spotify Podcast Scraper - Show Catalog, Episodes & Ratings avatar

Spotify Podcast Scraper - Show Catalog, Episodes & Ratings

Pricing

$12.00 / 1,000 podcast scrapeds

Go to Apify Store
Spotify Podcast Scraper - Show Catalog, Episodes & Ratings

Spotify Podcast Scraper - Show Catalog, Episodes & Ratings

Export public Spotify podcasts as JSON: publisher, rating and rating count, topics, cover art and the full episode list with titles, descriptions, release dates, durations and explicit flags. Paste show IDs, URIs or URLs. For podcast researchers, agencies and media analysts. $0.012 per show.

Pricing

$12.00 / 1,000 podcast scrapeds

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

11

Monthly active users

18 days ago

Last modified

Share

Spotify Podcast Scraper: Episodes and Show Catalog

This Spotify podcast scraper exports public show metadata and complete episode catalogs as structured JSON, for podcast research, media monitoring and content inventories. Supply Spotify show IDs, show URIs or public show URLs. Each successful show becomes one dataset row with its episodes nested inside it. You do not need a Spotify account to run it.

What the Spotify podcast scraper returns

A show row includes its name, publisher, plain and HTML descriptions, media and content types, consumption order, rating, topics, cover images and sharing URL. Its rating object contains the average rating, total rating count and visibility flag when Spotify provides them. topics and cover_art remain arrays, even when they contain no entries.

Every episode retains its position, Spotify URI and ID, title, descriptions, release date, duration in milliseconds, explicit-content flag, playability, sharing URL and cover images. Other episode fields remain present and nullable when Spotify does not provide them. episode_count_fetched tells you how many episodes are included in that show row. Shows are returned in the order you supplied them, and repeated shows remain separate rows.

The additional fields source, platform, profile_id, bio, fetched_at and profile_url help you combine shows with other creator data. profile_url is the canonical Spotify show URL; the existing share_url remains available as well.

How to scrape Spotify podcast episodes

  1. Open the Actor in the Apify Console and paste one or more show references into Spotify shows / podcasts. A show URL copied from the Spotify app or web player works as is.
  2. Optionally set Max episodes per show to fetch only the newest episodes, for example 10 for a weekly check. Leave it empty to export every episode of the show.
  3. Click Start. When the run finishes, open the dataset and download it as JSON, JSONL, CSV or Excel, or read it through the Apify API from your own code.

Input

shows is required and contains a list of show references. You can use a bare 22-character show ID, a spotify:show: URI, or an open.spotify.com/show/ URL. Localized show URLs, such as a URL containing intl-nl, and sharing query strings are accepted. Whitespace around references is removed, and blank entries are ignored.

maxEpisodes optionally caps the number of episodes for each show. Leave it out to retrieve the complete catalog. It has no default episode cap. pageSize retains its existing default of 50 and its accepted range of 1 to 100. It is a pagination preference and does not change which episodes belong in the requested result.

FieldTypeDefaultDescription
showsarray of stringsrequiredSpotify show IDs (22 characters), spotify:show: URIs or open.spotify.com/show/ URLs.
maxEpisodesintegernone (all episodes)Cap on episodes per show, minimum 1.
pageSizeinteger50Episodes per page while fetching, 1 to 100.

This input was used for the recorded ten-episode baseline:

{
"shows": ["spotify:show:5Hpc8qDcawOEf4ulCouPau"],
"maxEpisodes": 10
}

You can run that input in the Apify Console or send it through the Apify API. To collect more than one show, add more references to the same shows list. Each show receives its own episode cap when maxEpisodes is supplied.

Output and downloads

Successful results are written to the default dataset. A show and its episode array stay together in one row; episodes are not emitted as separate dataset records. Download JSON or JSONL to retain nested episode structures directly. CSV and spreadsheet exports are also available through Apify, although nested arrays may require additional processing in your destination tool.

The default key-value store contains a summary record. itemCount counts successful show rows, and errorCount counts error rows. When a reference cannot be parsed or a show cannot be retrieved, the dataset includes an error row with input, optionally id, and an English error message. Those rows also appear in the errors record. An unavailable or unknown show does not become a billable empty catalog.

The OUTPUT record includes run counts, billing information and any warnings. A run that reaches its overall time limit may report incomplete collection there. Check those warnings before treating a run as a complete catalog export. Large catalogs are continued automatically within the available run time.

Example output

This is a real dataset row from the baseline input above (run on 2 October 2026). To keep it readable, only the first of the ten fetched episodes and the first of each set of cover images are shown here; the values themselves are unchanged.

{
"uri": "spotify:show:5Hpc8qDcawOEf4ulCouPau",
"id": "5Hpc8qDcawOEf4ulCouPau",
"name": "AI Report",
"publisher": "Alexander Klöpping en Wietse Hage",
"description": "Alexander Klöpping en Wietse Hage maken AI begrijpelijk en houden je op de hoogte. Eens in de week bespreken ze niet alleen de laatste ontwikkelingen, maar vertalen ze ook grote AI-doorbraken naar praktische toepassingen. www.aireport.email",
"html_description": "<p>Alexander Klöpping en Wietse Hage maken AI begrijpelijk en houden je op de hoogte. Eens in de week bespreken ze niet alleen de laatste ontwikkelingen, maar vertalen ze ook grote AI-doorbraken naar praktische toepassingen. www.aireport.email</p>",
"media_type": "AUDIO",
"content_type": "CONTENT_TYPE_PODCAST",
"music_and_talk": false,
"consumption_order": "EPISODIC",
"show_types": [],
"playable": true,
"playability_reason": "PLAYABLE",
"rating": {
"average": 4.814041745730551,
"total_ratings": 527,
"show_average": true
},
"topics": [
{
"title": "Culture",
"uri": "spotify:genre:0JQ5DAqbMKFLFBJyefzcxG"
},
{
"title": "News & Politics",
"uri": "spotify:genre:0JQ5DAqbMKFCPUu8dFgVaC"
},
{
"title": "Technology",
"uri": "spotify:genre:tech_interviews_podcasts"
}
],
"cover_art": [
{
"url": "https://i.scdn.co/image/ab6765630000f68d5e6baacf7117d9a4d8b032ac",
"width": 64,
"height": 64
}
],
"trailer_uri": null,
"share_url": "https://open.spotify.com/show/5Hpc8qDcawOEf4ulCouPau?si=Zi_5sn_3Qs2xyefciLXIqA",
"episodes": [
{
"position": 0,
"uri": "spotify:episode:6aQcTL60eb6UMncUItGQkT",
"id": "6aQcTL60eb6UMncUItGQkT",
"name": "Zo gebruik je ChatGPT Dots in Nederland + nieuw AI-abo kost 500 euro",
"description": "Alexander moest bijna huilen. Niet om het nieuws, maar om een voorwoord dat Opus 5.5 voor hem schreef na een lang gesprek. Voor het eerst had hij het gevoel dat de tekst beter verwoordde wat hij bedoelde dan hij zelf had gekund. Wietse liet ondertussen...",
"html_description": "<p>Alexander moest bijna huilen. Niet om het nieuws, maar om een voorwoord dat Opus 5.5 voor hem schreef na een lang gesprek. Voor het eerst had hij het gevoel dat de tekst beter verwoordde wat hij bedoelde dan hij zelf had gekund. Wietse liet ondertussen vanuit de mobiele app een complete animatiefilm maken over een auto-immuunziekte, inclusief zelfgebouwd animatieframework en getimede voice-over en Jeroen bouwde een tool die elk Kamerdebat meeluistert en inmiddels door honderden journalisten en de Rijksoverheid wordt gebruikt.</p> <p>En toen kwam OpenAI met Dot. Een assistent die eruitziet als een badspons, een eigen computer in de cloud heeft en doorwerkt als jij je laptop dichtklapt. Alexander belde hem live op tafel om het draaiboek te laten factchecken. Dot miste een nieuwsitem. Terecht. Tegelijk hield OpenAI het nieuwe topmodel tegen omdat het niet aligned genoeg was en lanceerde het een abonnement van 500 dollar voor acht keer snellere output.</p> <p>Ondertussen is Google terug met Gemini 4 en zette Anthropic een Chinees open model naast zijn eigen Mythos: net zo goed in hacken en voor 4500 dollar van zijn beveiliging te ontdoen. Dat kleurt het grasveld van het Witte Huis waar twintig techbazen zelfregulering beloofden, met een ongemakkelijk knikkende Amodei aan het eind van de tafel. Bill Gates en Jensen Huang staan lijnrecht tegenover elkaar en Wietse legt uit waarom de vraag over open modellen in Europa nog nergens gesteld wordt.</p> <p>Agents van je klanten gaan je servicedesk een overvloed aan vragen opleveren. <a href=\"https://CM.com\" rel=\"nofollow\">CM.com</a> loopt door wat je nu moet regelen om te voorkomen dat die eronder bezwijkt. Kijk de verdieping en lees de blog: <a href=\"https://www.cm.com/aireport\" rel=\"nofollow\">https://www.cm.com/aireport</a></p> <p>Note: voor Dot heb je in Nederland niet alleen een VPN nodig, maar ook minimaal een Pro 100-abonnement.</p>",
"release_date": "2026-10-01T15:01:00Z",
"duration_ms": 4429326,
"media_type": null,
"content_type": null,
"explicit": false,
"is_trailer": null,
"is_19_plus": null,
"is_paywalled": null,
"has_video": null,
"playable": true,
"audio_preview_url": null,
"share_url": "https://open.spotify.com/episode/6aQcTL60eb6UMncUItGQkT?si=jUgJl_XfRKeEg0HT328stA",
"cover_art": [
{
"url": "https://i.scdn.co/image/ab6765630000f68d5e6baacf7117d9a4d8b032ac",
"width": 64,
"height": 64
}
]
}
],
"episode_count_fetched": 10,
"source": "spotify-podcast-catalog",
"platform": "spotify",
"profile_id": "5Hpc8qDcawOEf4ulCouPau",
"bio": "Alexander Klöpping en Wietse Hage maken AI begrijpelijk en houden je op de hoogte. Eens in de week bespreken ze niet alleen de laatste ontwikkelingen, maar vertalen ze ook grote AI-doorbraken naar praktische toepassingen. www.aireport.email",
"fetched_at": "2026-10-02T22:45:49.251Z",
"profile_url": "https://open.spotify.com/show/5Hpc8qDcawOEf4ulCouPau"
}

Output fields

FieldTypeMeaning
uri, idstringSpotify show URI and 22-character show ID
name, publisherstringShow title and publisher as shown on Spotify
description, html_descriptionstringShow description, plain and as HTML
media_type, content_typestringFor example AUDIO and CONTENT_TYPE_PODCAST
music_and_talk, playablebooleanMusic-and-talk format, show playable
consumption_order, playability_reasonstringFor example EPISODIC and PLAYABLE
show_typesarrayShow type labels, often empty
ratingobjectaverage (number), total_ratings (integer), show_average (boolean)
topicsarrayObjects with title and uri
cover_artarrayObjects with url, width and height
trailer_uristring or nullTrailer episode URI when the show has one
share_urlstringSpotify sharing link
episodesarrayEpisode objects, see below
episode_count_fetchedintegerNumber of episodes in episodes
source, platform, profile_id, bio, fetched_at, profile_urlstringJoin fields for creator data

Each episode has position (integer), uri, id, name, description, html_description, release_date (ISO timestamp), duration_ms (integer), explicit and playable (boolean), share_url, cover_art (array), and the nullable fields media_type, content_type, is_trailer, is_19_plus, is_paywalled, has_video and audio_preview_url.

Pricing

The price remains $0.012 per successfully scraped podcast show. The event is podcast, and each complete show is charged once after its dataset row is delivered. There is no separate event for an episode. Requesting ten episodes or the complete catalog does not change the per-show price. Error rows are free, and a run that delivers no successful show rows has no podcast-event charge.

For example, exporting the full episode lists of 100 shows costs 100 × $0.012 = $1.20 in podcast events, whether those shows have 20 episodes or 2,000.

Users without a paid Apify plan receive at most ten dataset rows per run. Error rows count toward that delivery cap, but they are not billed as podcasts. The episode count inside a successfully delivered show is not limited by that ten-row policy. Users on a paid Apify plan retain the requested show volume, subject to the run's available time and normal storage limits.

Uses for a Spotify podcast scraper

Use the catalog to inventory a publisher's shows, inspect episode release dates, prepare a research dataset, or track changes in public show metadata. Preserve show and episode IDs when joining exports from different dates. Episode positions can change when new episodes are published, so use the episode ID for identity across runs.

Descriptions and release dates can support a content inventory or an internal editorial dashboard. Ratings and topics describe the public information Spotify returns; missing values remain missing. The scraper does not infer listener counts, revenue or sales.

  • Podcast agencies and networks: keep an up-to-date list of every episode of the shows you produce or pitch to, with release dates and durations.
  • Advertisers and sponsorship buyers: compare shows by rating, rating count, topics and publishing cadence before you book a placement.
  • Researchers and journalists: build a dataset of episode titles and show notes to study topics, guests or publishing patterns across shows.
  • Monitoring: schedule a daily run with a small maxEpisodes and get new episodes of the shows you follow as soon as they appear.

Spotify podcast scraper compared with other options

No Spotify account or API keyFull episode list per showRating and topicsHosted, pay per show
This ActorYesYes, nested in one rowYesYes
Spotify Web API (official)No, developer app and tokenYes, paginated callsNoFree, you write and run the code
Open-source Spotify scraper librariesYesVariesVariesFree, you host and maintain it
Manual copy from the Spotify appYesOne page at a timeVisible onlyFree, but slow

The official Spotify Web API returns shows and episodes once you register a developer app, but it does not include the show rating or topic labels, and you handle tokens and pagination yourself. This Actor returns those fields in one JSON row per show.

FAQ

Do I need a Spotify account?

No. The scraper collects the public show and episode information available without a Spotify login. Private information and content requiring an account are not included.

How do I retrieve every episode?

Omit maxEpisodes. The scraper retrieves the available catalog and keeps all fetched episodes inside the show row. Review OUTPUT warnings if the overall run time is reached.

Why are some episode fields null?

Spotify does not always return a value for every existing field. Null values are retained so that the same output fields and JSON types remain available to existing integrations. They do not mean a value was guessed or a field was silently removed.

Are invalid references charged?

No. A reference that produces an error row does not count as a successfully scraped podcast and does not trigger a podcast charge. You can inspect the error row and correct the input before running it again.

Can I monitor the same shows repeatedly?

Yes. Schedule the same input in Apify and compare exports using stable show and episode IDs. New episodes and updated public metadata may change the results between runs.

Does it return Spotify podcast stats such as plays or listeners?

No. Spotify does not publish play or listener counts for podcasts. The scraper returns the public rating (average and number of ratings), topics and the episode catalog. It does not estimate audience size, and it does not scrape the Spotify podcast charts.

Can I download the audio of Spotify podcast episodes?

No. The scraper exports metadata only: titles, descriptions, release dates, durations and links. It does not download or store audio files.

Can I use it as a Spotify podcast API?

Yes. Start the Actor through the Apify API with the same JSON input and read the dataset items from the run, or use one of the Apify client libraries. The response is the same JSON shown in the example above.