Apple Podcasts Top Charts Scraper (All Countries & Genres)
Pricing
from $1.50 / 1,000 podcast results
Apple Podcasts Top Charts Scraper (All Countries & Genres)
Scrape Apple Podcasts top charts for any country and genre, plus podcast search and lookup. Get rank, publisher, RSS feed URL, episode count, latest episode date and recent episodes. Official Apple data, no login.
Pricing
from $1.50 / 1,000 podcast results
Rating
0.0
(0)
Developer
Echo Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
What it does
An easy Apple Podcasts API alternative: scrape the Apple Podcasts top charts (iTunes podcast rankings) for any country and genre, search for shows, or look up known podcast IDs. Get each show's chart rank, publisher, RSS feed URL, episode count, latest episode date and recent episodes, exported to JSON, CSV or Excel. Built by Echo Lab for repeatable daily podcast chart tracking; each dataset item represents one podcast result.
- Country-specific overall and genre charts, up to 200 entries per chart.
- Batch iTunes lookup enrichment (up to 100 IDs per request).
- Public publisher, feed URL, artwork, genre, episode count and latest release metadata.
- Optional latest episode summaries and audio URLs without fetching podcast feeds.
- Search and lookup modes; no login or proxy required.
Use cases
Podcast PR agencies can measure campaign chart movement. Networks and ad buyers can discover shows by market and category. Researchers can schedule daily snapshots and compare rank by podcastId, chartCountry, chartGenreId and scrapedAt. This Actor outputs snapshots, not computed historical rank changes.
Input
| Field | Default | Description |
|---|---|---|
| mode | charts | charts, search or lookup |
| countries | ["us"] | Explicit ISO-2 codes for charts; UI prefill us and gb. No "all" country shortcut. |
| genres | ["all"] | Genre IDs or case-insensitive names; all means overall (26). Subgenre IDs are also accepted. |
| limit | 100 | 1–200 results per chart or search term |
| country | us | Storefront for search / lookup |
| searchTerms | [] | Non-empty string array required in search mode |
| podcastIds | [] | Non-empty array of numeric IDs or podcasts.apple.com URLs required in lookup mode |
| includeLatestEpisodes | 0 | 0–20 episodes attached to each result |
| requestDelayMs | 2500 | Global minimum request interval, 2500–60000 ms; includes retries and chart calls |
{"mode":"charts","countries":["us","gb"],"genres":["all","Technology"],"limit":10,"includeLatestEpisodes":2}
Search example: {"mode":"search","searchTerms":["science"],"country":"us","limit":5}.
Lookup example: {"mode":"lookup","podcastIds":["https://podcasts.apple.com/us/podcast/the-joe-budden-podcast/id1535809341"],"country":"us"}.
Verified main Apple Podcasts genre IDs
Verified against Apple's genre service.
| ID | Genre |
|---|---|
| 26 | Podcasts (all / overall) |
| 1301 | Arts |
| 1321 | Business |
| 1303 | Comedy |
| 1304 | Education |
| 1483 | Fiction |
| 1511 | Government |
| 1512 | Health & Fitness |
| 1487 | History |
| 1305 | Kids & Family |
| 1502 | Leisure |
| 1310 | Music |
| 1489 | News |
| 1314 | Religion & Spirituality |
| 1533 | Science |
| 1324 | Society & Culture |
| 1545 | Sports |
| 1309 | TV & Film |
| 1318 | Technology |
| 1488 | True Crime |
Output
{"mode":"lookup","chartCountry":"us","chartGenreId":null,"chartGenreName":null,"chartRank":null,"scrapedAt":"2026-11-04T00:00:00Z","podcastId":"1535809341","name":"The Joe Budden Podcast","publisher":"The Joe Budden Network","appleUrl":"https://podcasts.apple.com/us/podcast/the-joe-budden-podcast/id1535809341","feedUrl":"https://rss.libsyn.com/shows/128607/destinations/2422538.xml","primaryGenre":"Music","genres":["Music","Podcasts"],"episodeCount":775,"latestEpisodeDate":"2026-10-28T09:00:00Z","contentAdvisoryRating":"Explicit","artworkUrl":"https://is1-ssl.mzstatic.com/image/thumb/Podcasts113/v4/f2/21/fa/f221fabd-017f-5125-633b-f1fe4f39802a/mza_182995249085044287.jpg/600x600bb.jpg"}
Illustrative lookup item; tests/sample_output.json holds a live chart result.
| Fields | Meaning |
|---|---|
| mode, scrapedAt | Mode and UTC collection timestamp |
| chartCountry | Requested ISO-2 storefront (not Apple's ISO-3 metadata country) |
| chartGenreId, chartGenreName | Chart category; null for search / lookup |
| chartRank | 1-based chart / search position; null for lookup |
| searchTerm | Present only for search |
| podcastId | Apple collection ID as a string |
| name, publisher | Show title and publicly listed publisher / brand |
| appleUrl, feedUrl, artworkUrl | Apple page, feed address (not fetched) and 600px artwork when available |
| primaryGenre, genres | Apple genre labels |
| episodeCount, latestEpisodeDate | Apple's track count and releaseDate; may be stale |
| contentAdvisoryRating | Apple's public rating |
| latestEpisodes | Only when requested: trackName, releaseDate, durationSeconds, episodeUrl, shortDescription (max 300 characters) |
| error, errorMessage | Only per-podcast failures: not_found, lookup_failed or episodes_failed |
Unavailable fields are null. A show appearing in multiple chart combinations creates separate items with independent ranks. Lookup inputs are deduplicated. Enrichment is always batched; optional episodes are cached per storefront / podcast within a run.
Pricing
Pay per result. You pay only for podcasts saved to the dataset, plus a tiny per-run start fee; Apify platform usage is included in the price. The current price per 1,000 podcasts is shown on the Pricing tab of this page.
One podcast chart entry, search result or lookup result is one billed item. Attached episodes do not create extra items or charges. Per-podcast error items are also results and are billed. The Actor stops normally when the dataset event charge limit is reached. No synthetic error items are billed for failed charts or failed search queries without an identified podcast; these are logged.
Tips / limits
- Apple's iTunes API is approximately limited to 20 requests/minute per shared IP. Default global spacing is 2.5 seconds; increase requestDelayMs to 3000 or higher if needed. Maximum three retries on 403/429/5xx/timeouts, with backoff and Retry-After support.
- Country codes are validated as ISO-2, but not every ISO country has an Apple storefront or charts. An unsupported country/chart may return no results or fail; check run logs. "All Countries" means explicit selection of available countries, not a bulk shortcut.
- The legacy RSS chart endpoint was verified to return 200 genre-specific entries and 200 overall entries. The marketing RSS v2 endpoint works for overall charts but has no genre selector. It is used only as an overall fallback; it may support fewer entries. Genre chart failures never fall back to an incorrectly labelled overall chart.
- The descriptive Echo Lab User-Agent worked in live verification; no browser impersonation was required.
- Charts may contain fewer results than requested. Apple's Search API may reorder or cap results. Storefront lookup availability and latest-episode metadata can differ from the current chart. Empty charts/searches yield no dataset rows.
- Optional episodes can significantly increase runtime. Public publisher labels are returned as listed by Apple; no private identity inference is performed.
Compliance & data source
Uses only official public Apple RSS, iTunes Search and Lookup endpoints. No login, cookies, browser, proxy, CAPTCHA solving or anti-bot bypass. Does not fetch or parse podcast feeds and does not output owner emails, phone numbers or private contact records. Episode descriptions are allowlisted, truncated and have email / phone patterns redacted. Publisher strings may be the public professional name of a creator, as displayed by Apple; no private individual data is gathered. Users are responsible for complying with Apple's terms and applicable laws.
Support
Open an issue on the Actor's Issues tab.
Local development
Install requirements-dev.txt, then run python -m pytest -q. Supply storage/key_value_stores/default/INPUT.json and run APIFY_LOCAL_STORAGE_DIR=./storage python -m src. Local storage is gitignored and excluded from the Docker build. Tests use small recorded Apple responses and never call the network.
More real output, worked pricing examples and a comparison with alternatives: https://echolab-tools.pages.dev/apple-podcasts-charts-api/