Podcasts are typically distributed through RSS feeds, which is an extension onto XML. These will include episode titles, description, category, and more. Podcasts will submit their RSS feeds to different platforms like iTunes, Google Podcasts, and many independent sites.

The goal of this will be use the iTunes API and iTunes RSS Generator to get a list podcasts, then get the RSS feed for each.

To do this the R package jsonlite will be used to parse the JSON requests.

List of Podcasts

To get the list of podcasts, the iTunes RSS Generator is used. Setting the parameters on the site,

  • Country: United States
  • Media Type: Podcasts
  • Feed Type: Top Podcasts
  • Genre: All
  • Results limit: 100
  • Format: JSON
  • Allow explicit: Yes

produces the following:

Using this, we can start the process:

library(jsonlite) # load package

podcasts <- fromJSON("")

The results are a list containing the header information related to the query and a data frame of the results we want.

podcastList <- podcasts$feed$results
knitr::kable(head(podcastList), align = "c")
artistName id releaseDate name kind copyright artistId contentAdvisoryRating artistUrl artworkUrl100 genres url
Wondery 1421573955 2018-12-12 Dr. Death podcast © 2018 Wondery, Inc. 1134742667 Explicit list(genreId = c(“1315”, “26”, “1307”), name = c(“Science & Medicine”, “Podcasts”, “Health”), url = c(“”, “”, “”))
L.A. Times | Wondery 1272970334 2018-11-21 Dirty John podcast © 2017 All Rights Reserved. 1134742667 NA list(genreId = c(“1302”, “26”, “1324”), name = c(“Personal Journals”, “Podcasts”, “Society & Culture”), url = c(“”, “”, “”))
Joe Rogan 360084272 2018-12-12 The Joe Rogan Experience podcast Copyright © Talking Monkey Productions 974891224 Explicit list(genreId = c(“1303”, “26”, “1318”, “1450”, “1324”), name = c(“Comedy”, “Podcasts”, “Technology”, “Podcasting”, “Society & Culture”), url = c(“”, “”, “”, “”, “”))
This American Life 917918570 2018-11-15 Serial podcast © Copyright 2018 Serial Podcast 364380278 NA list(genreId = c(“1311”, “26”), name = c(“News & Politics”, “Podcasts”), url = c(“”, “”))
Barstool Sports 1418960261 2018-12-12 Call Her Daddy podcast © 2018 Barstool Sports 973114159 NA list(genreId = c(“1303”, “26”), name = c(“Comedy”, “Podcasts”), url = c(“”, “”))
HEAVY D SPARKS 1446780975 2018-12-16 HEAVY CHECKLIST podcast © All rights reserved NA NA NA list(genreId = c(“1321”, “26”), name = c(“Business”, “Podcasts”), url = c(“”, “”))

Podcast RSS Feeds from Podcast List

Now that we have the list of podcasts, we need to get the RSS feed for each one. To do this, we can use the iTunes API by using the id found in the url.

## Extract id
extractId <- function(appleLink) {
  id <- regmatches(appleLink, regexpr("(id\\d+)", appleLink)) # probably way to do this with gsub
  id <- gsub("id", "", id)

## Lookup by id
findRssById <- function(appleId) {
  apRes <- fromJSON(paste0("",appleId))

Now, we can extract the id and query the iTunes lookup and it will return the RSS feed of the podcast. To do this, we loop over the podcast list and create a new dataframe with a bit of info.

df <- NULL
for (k in 1:nrow(podcastList)) {
  df <- rbind(df, data.frame(podcast=podcastList$name[k], artist=podcastList$artistName[k], feed=findRssById(extractId(podcastList$url[k]))))

This will give us the RSS feeds for each of the top 100 podcasts found on iTunes.

knitr::kable(df, align="c")
podcast artist feed
Dr. Death Wondery
Dirty John L.A. Times | Wondery
The Joe Rogan Experience Joe Rogan
Serial This American Life
Call Her Daddy Barstool Sports
Bag Man MSNBC, Rachel Maddow
Broken Harts iHeartRadio & Glamour
Armchair Expert with Dax Shepard Armchair Umbrella
Phil in the Blanks Dr. Phil McGraw
The Daily The New York Times
This American Life This American Life
Up and Vanished Tenderfoot TV
Happy Face iHeartRadio
My Favorite Murder with Karen Kilgariff and Georgia Hardstark Exactly Right / Karen Kilgariff & Georgia Hardstark
TED Talks Daily TED
Stuff You Should Know iHeartRadio & HowStuffWorks
In the Dark APM Reports
Slow Burn Slate
Cold KSL Podcasts
Caliphate The New York Times
The Teacher’s Pet The Australian
Duolingo Spanish Podcast Duolingo
Hidden Brain NPR
Conan O’Brien Needs A Friend Team Coco & Earwolf
Revisionist History Malcolm Gladwell / Pushkin
Believed NPR
LeBatard and Friends - South Beach Sessions ESPN, Dan LeBatard, Stugotz
TED Radio Hour NPR
The Dave Ramsey Show Ramsey Solutions
Dan Carlin’s Hardcore History Dan Carlin
Bear Brook New Hampshire Public Radio
The Dream Little Everywhere & Stitcher
S-Town Serial & This American Life
How I Built This with Guy Raz NPR
Something You Should Know Mike Carruthers / OmniCast Media
Freakonomics Radio Dubner Productions and Stitcher
The Ben Shapiro Show The Daily Wire
Radiolab WNYC Studios
This Podcast Will Kill You Exactly Right / Erin Welsh & Erin Allmann Updyke
Kickass News Mathis Entertainment, Inc.
Planet Money NPR
Mythology Parcast Network
Wait Wait…Don’t Tell Me! NPR
The Corp Barstool Sports
A Very Fatal Murder The Onion
Sunday Sitdown with Willie Geist Willie Geist, Sunday TODAY
Dark Poutine - True Crime and Dark History Dark Poutine / Curiouscast
Oprah’s SuperSoul Conversations Oprah
Sword and Scale Wondery | Incongruity True Crime
Pod Save America Crooked Media
Gladiator: Aaron Hernandez and Football Inc. The Boston Globe | Wondery
Up First NPR
Fresh Air NPR
99% Invisible Roman Mars
The Moth The Moth
The Daily Show With Trevor Noah: Ears Edition Comedy Central
RISE podcast Rachel Hollis
Stuff You Missed in History Class iHeartRadio & HowStuffWorks
Wolverine: The Long Night Marvel and Stitcher
Oprah’s Master Class: The Podcast Oprah
VIEWS with David Dobrik and Jason Nash Cadence13
Ear Hustle Ear Hustle & Radiotopia
Lore Aaron Mahnke
The Tim Ferriss Show Tim Ferriss: Bestselling Author, Human Guinea Pig
Art of the Hustle iHeartRadio
The Tony Robbins Podcast Tony Robbins
Murderville The Intercept
Someone Knows Something CBC Podcasts
The Numberphile Podcast Brady Haran
Imagined Life Wondery
Criminal Criminal & Radiotopia
Post Reports The Washington Post
Why Won’t You Date Me? with Nicole Byer HeadGum
Where Should We Begin? with Esther Perel Audible
Monday Morning Podcast Bill Burr
Last Podcast On The Left The Last Podcast Network
Waking Up with Sam Harris Sam Harris
Aria Code WQXR & The Metropolitan Opera
Jocko Podcast Jocko DEFCOR Network
Everything is Alive Radiotopia
Impaulsive with Logan Paul Logan Paul
American Scandal Wondery
Conspiracy Theories Parcast Network
The Rachel Maddow Show Rachel Maddow, MSNBC
Pretty Basic with Alisha Marie and Remi Cruz Ramble
Woolie Will Figure It Out Woolie Versus
Trump, Inc. WNYC Studios
Invisibilia NPR
Casefile True Crime Casefile True Crime
Hell and Gone iHeartRadio
Business & Biceps Maurice Clarett, Cory Gregory & John Fosco
Pardon My Take Barstool Sports
The Jordan B. Peterson Podcast Dr. Jordan B. Peterson: Professor of Psychology
RISE Together Podcast Rachel Hollis & Dave Hollis
Broken Record with Malcolm Gladwell and Rick Rubin Pushkin Industries
My Dad Wrote A Porno My Dad Wrote A Porno
The GaryVee Audio Experience Gary Vaynerchuk
Homecoming Gimlet
On Being with Krista Tippett On Being Studios