Apple Podcasts Scraper - Podcasts, Episodes & Reviews
Pricing
from $1.50 / 1,000 results
Apple Podcasts Scraper - Podcasts, Episodes & Reviews
Scrape Apple Podcasts without an API key: podcast details, episodes, and reviews by keyword or podcast ID, in any country. Export JSON/CSV/Excel.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Apple Podcasts Scraper โ Podcasts, Episodes & Reviews API (No API Key)
Extract structured data from Apple Podcasts without an API key: full podcast (show) details, episodes, and reviews โ by keyword or numeric podcast ID, in any country storefront. Export to JSON, CSV, or Excel.
This Apple Podcasts scraper is built for podcast publishers, media researchers, marketers, and data teams who want clean, reliable Apple Podcasts data without fighting HTML, browser automation, or rate limits. Use it as a key-free Apple Podcasts API to power discovery research, episode catalogs, and review analysis.
Pairs with the Apple App Store Scraper and Google Play Scraper for full app + podcast intelligence across the Apple and Google ecosystems.
What it does
- ๐ Search podcasts by keyword and get every matching show.
- ๐๏ธ Podcast details โ complete metadata by numeric podcast ID (lookup batches up to 100 IDs per call).
- ๐ง Episodes โ title, release date, duration, audio URL, description, artwork, and more (optional).
- โญ Reviews โ reviewer, star rating, title, text, helpful votes, and date from the public review feed (optional).
- ๐ Any country & language โ choose the storefront via
country. - ๐งฑ Deeper back catalog (optional) โ when the iTunes episode cap (~200) isn't enough, the show's RSS feed is parsed for older episodes too (still bounded by
maxEpisodes). - ๐ค Export anywhere โ download as JSON, CSV, or Excel, or pull via the Apify API / dataset.
Why this scraper
Uses Apple's official iTunes endpoints (search, lookup, the episode lookup, and the customer-reviews feed) โ so it's fast, reliable, and key-free, with none of the blocking that plagues HTML scrapers. There is no login and no API key to manage. Episodes beyond Apple's cached cap are pulled straight from the show's own RSS feed, so you can reach deeper into the podcast dataset and pull older episodes (up to your maxEpisodes limit).
How discovery works
Apple's Search API is keyword-based for podcasts. Provide searchTerms (each term is URL-encoded and sent to the search endpoint) and/or podcastIds (numeric collection IDs, batched up to 100 per lookup). There is no reliable genre-browse endpoint, so genre IDs are returned only as a passthrough output field โ they are not used as an input filter.
Example input
{"searchTerms":["true crime"],"podcastIds":["1200361736"],"country":"us","maxPodcastsPerSearch":50,"maxItems":200,"scrapeEpisodes":true,"maxEpisodes":100,"scrapeFullEpisodeFeed":false,"scrapeReviews":true,"maxReviewsPerPodcast":100,"proxyConfiguration":{"useApifyProxy":true}}
Example podcast output
{"type":"podcast","id":1200361736,"name":"The Daily","artist":"The New York Times","artistId":121664449,"url":"https://podcasts.apple.com/us/podcast/the-daily/id1200361736","feedUrl":"https://feeds.simplecast.com/54nAGcIl","genre":"Daily News","genres":["News","Podcasts"],"genreIds":["1489","26"],"episodeCount":2637,"rating":null,"ratingCount":null,"contentAdvisoryRating":"Clean","explicit":"cleaned","country":"USA","releaseDate":"2026-06-20T09:00:00Z","artwork":"https://.../600x600bb.jpg","artworkUrl30":"https://.../30x30bb.jpg","scrapedAt":"2026-06-20T12:00:00.000Z"}
Note:
ratingandratingCountare frequentlynullfor podcasts โ Apple does not expose aggregate star ratings in the search/lookup responses. Per-review star ratings are available viascrapeReviews.
Example episode output
{"type":"episode","podcastId":1200361736,"podcastName":"The Daily","id":1000659912345,"title":"Friday's Episode","episodeGuid":"gid://art19-episode-locator/V0/...","releaseDate":"2026-06-20T09:00:00Z","durationMs":1620000,"description":"Today on the show...","shortDescription":"Today on the show...","audioUrl":"https://.../episode.mp3","previewUrl":"https://.../episode.mp3","fileExtension":"mp3","contentType":"audio","contentAdvisoryRating":"clean","closedCaptioning":"none","feedUrl":"https://feeds.simplecast.com/54nAGcIl","artwork":"https://.../600x600bb.jpg","trackViewUrl":"https://podcasts.apple.com/us/podcast/.../id1000659912345","episodeNumber":null,"seasonNumber":null,"scrapedAt":"2026-06-20T12:00:00.000Z"}
episodeNumberandseasonNumberarenullfor episodes from the iTunes lookup; they are only populated for episodes pulled from the RSS feed (whenscrapeFullEpisodeFeedis on). RSS-sourced episodes also carry an extra"source": "rss"field and haveid: null,shortDescription: null, andtrackViewUrl: null(no iTunes track data).
Example review output
{"type":"review","podcastId":1200361736,"reviewId":"1234567890","userName":"podfan_99","userUrl":"https://itunes.apple.com/us/reviews/id...","title":"Essential listening","text":"I start every morning with this show.","score":5,"voteSum":3,"voteCount":4,"updated":"2026-06-19T08:12:00-07:00","scrapedAt":"2026-06-20T12:00:00.000Z"}
Output fields
Each item carries a type discriminator: podcast, episode, or review. Use it to split the mixed dataset into three clean tables (see the dataset views: Podcasts, Episodes, Reviews).
Podcast (type: "podcast")
| Field | Type | Description |
|---|---|---|
type | string | Always "podcast". |
id | number | iTunes collection ID (falls back to track ID). |
name | string | Podcast (show) name. |
artist | string | Publisher / author name. |
artistId | number | Publisher iTunes artist ID. |
url | string | Apple Podcasts page URL. |
feedUrl | string | The show's real RSS feed URL. |
genre | string | Primary genre name. |
genres | array | All genre names. |
genreIds | array | All genre IDs (passthrough only; not an input filter). |
episodeCount | number | Track count reported by Apple. |
rating | number | Aggregate star rating (often null for podcasts). |
ratingCount | number | Number of ratings (often null for podcasts). |
contentAdvisoryRating | string | Content advisory, e.g. "Clean" / "Explicit". |
explicit | string | Explicitness flag, e.g. "cleaned" / "explicit" / "notExplicit". |
country | string | Storefront country of the result (e.g. "USA"). |
releaseDate | string | Latest episode date reported by Apple (ISO 8601). |
artwork | string | Highest-resolution artwork available (600 โ 100 โ 60 px). |
artworkUrl30 | string | 30px thumbnail artwork. |
scrapedAt | string | ISO 8601 timestamp of the scrape. |
Episode (type: "episode")
| Field | Type | Description |
|---|---|---|
type | string | Always "episode". |
podcastId | number | Parent podcast collection ID. |
podcastName | string | Parent podcast name. |
id | number | Episode track ID (null for RSS-sourced episodes). |
title | string | Episode title. |
episodeGuid | string | Episode GUID. |
releaseDate | string | Publish date. |
durationMs | number | Duration in milliseconds. |
description | string | Episode notes / show notes. |
shortDescription | string | Short description (null for RSS-sourced episodes). |
audioUrl | string | Direct media URL. |
previewUrl | string | Preview/media URL (usually identical to audioUrl). |
fileExtension | string | Media file extension, e.g. mp3 / m4a / mp4. |
contentType | string | Media content type, e.g. audio / video. |
contentAdvisoryRating | string | Episode advisory flag (e.g. clean / explicit). |
closedCaptioning | string | Closed-captioning flag from the iTunes lookup. |
feedUrl | string | The show's RSS feed URL. |
artwork | string | Highest-resolution episode/show artwork (600 โ 160 โ 60 px). |
trackViewUrl | string | Apple Podcasts episode URL (null for RSS-sourced episodes). |
episodeNumber | number | Episode number โ only populated from the RSS feed fallback. |
seasonNumber | number | Season number โ only populated from the RSS feed fallback. |
source | string | Present and equal to "rss" only for episodes pulled from the RSS feed; absent for iTunes-lookup episodes. |
scrapedAt | string | ISO 8601 timestamp of the scrape. |
Review (type: "review")
| Field | Type | Description |
|---|---|---|
type | string | Always "review". |
podcastId | number | Podcast the review belongs to. |
reviewId | string | Review ID. |
userName | string | Reviewer display name. |
userUrl | string | Reviewer profile URL. |
title | string | Review title. |
text | string | Review body. |
score | number | Star rating (1โ5). |
voteSum | number | Sum of helpful votes. |
voteCount | number | Number of helpful votes cast. |
updated | string | Review date (ISO 8601 with offset). |
scrapedAt | string | ISO 8601 timestamp of the scrape. |
Common use cases
- Discovery & competitive research โ see which shows rank for your target keywords in any storefront.
- Episode catalogs โ build a dataset of episodes with audio URLs, durations, and artwork.
- Review analysis & sentiment โ export reviews and star ratings to JSON/CSV for sentiment and topic analysis.
- Catalog monitoring โ track publish cadence, episode counts, and metadata over time.
- Podcast data feeds โ power dashboards, BI tools, or your own database with a clean podcast dataset.
- Lead & PR research โ find shows and publishers in a niche for outreach and advertising.
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
searchTerms | array | โ | Keywords to search Apple Podcasts (each must be non-empty). |
podcastIds | array | โ | Numeric iTunes collection IDs to scrape directly (batched 100 per lookup). |
country | string | us | Two-letter storefront country code. |
maxPodcastsPerSearch | integer | 50 | Max podcasts per search term (1โ200). |
maxItems | integer | 200 | Max podcasts in total (0 = no limit). |
scrapeEpisodes | boolean | false | Also fetch episodes for every podcast found. |
maxEpisodes | integer | 100 | Cap on episodes per podcast (only when scrapeEpisodes is on). |
scrapeFullEpisodeFeed | boolean | false | Parse the show's RSS feed for older episodes when the lookup cap (~200) isn't enough. Total per podcast is still bounded by maxEpisodes, so raise maxEpisodes to actually pull more. |
scrapeReviews | boolean | false | Also scrape reviews for every podcast found. |
maxReviewsPerPodcast | integer | 100 | Cap on reviews per podcast (only when scrapeReviews is on). |
proxyConfiguration | object | Apify proxy | Proxy settings (the default Apify proxy is plenty). |
FAQ
Do I need an Apple/iTunes API key? No. This Apple Podcasts scraper uses Apple's public iTunes endpoints โ there is no API key and no login required.
How do I find a podcast ID? It's the number in the Apple Podcasts URL, e.g. podcasts.apple.com/us/podcast/the-daily/id1200361736 โ 1200361736.
Why are rating and ratingCount empty? Apple does not expose aggregate star ratings for podcasts in the search/lookup responses. Enable scrapeReviews to get per-review star ratings (score) instead.
How many episodes can I get? The iTunes lookup returns up to ~200 most-recent episodes โ and for some shows fewer, because it reflects Apple's cached copy of the feed. To reach older episodes, enable scrapeFullEpisodeFeed (which parses the show's own RSS feed) and raise maxEpisodes above the lookup count โ the total per podcast is always capped by maxEpisodes, so leave it at the default 100 and the RSS fallback won't add anything.
How many reviews can I get? Apple's public review feed exposes up to ~500 most-recent reviews per podcast (about 10 pages ร ~50), per storefront.
Can I scrape other countries? Yes โ set country to gb, de, jp, ca, au, etc. The storefront also affects the review feed and availability.
How does pagination work? Search results are capped per term by maxPodcastsPerSearch (Apple's max is 200). Reviews are auto-paginated through the customer-reviews feed up to 10 pages (the ~500-review ceiling) and your maxReviewsPerPodcast cap; episodes come from the iTunes lookup and, optionally, the show's RSS feed for older episodes โ always bounded by maxEpisodes. You never manage page tokens manually.
Do I need a proxy? Apple's iTunes endpoints are open and rarely block, so the default Apify proxy is sufficient. You can supply your own proxyConfiguration if you prefer.
What export formats are supported? Results are stored in an Apify dataset and can be exported to JSON, CSV, or Excel, or pulled programmatically via the Apify API.
Are new episodes always present? Episodes published on Apple Podcasts can lag in the iTunes API due to a known sync delay, so "most recent" is best-effort. The RSS fallback (scrapeFullEpisodeFeed) reflects the publisher's feed directly.
Looking for app data too? Pair this with the Apple App Store Scraper and Google Play Scraper for end-to-end app + podcast intelligence.
