Thousands of US and Mexico radio station profiles with audience metrics, streaming URLs, and real-time airplay tracking.
The iHeart dataset on Rebrowser is free β but GitHub has file size and storage limits, so this repo contains a limited sample. For the full dataset (188.7M records, updated daily), visit rebrowser.net/products/datasets/iheart.
This dataset contains 2 entities, each in its own folder: Radio Stations (stations), Station Plays (station-plays). See below for a full field breakdown, sample counts, and data distributions for each.
Found this useful? β Star this repo to help us keep publishing fresh data. Found an error? Let us know.
iHeart radio stations with call letters, frequencies, formats, market data, audience metrics, and streaming endpoints.
3,671 total records from 2025-12-28 to 2026-02-22, 3,667 rows in this sample (99.9% of full dataset). Exported as a single file, overwritten daily.
| Field | Type | Fill Rate | Description |
|---|---|---|---|
_primaryKey |
string |
100% | Unique identifier for this record |
_firstSeenAt |
datetime |
100% | First time this record was seen |
_lastSeenAt |
datetime |
100% | Last time this record was updated |
stationId |
string |
100% | iHeart station ID (numeric string) |
name |
string |
100% | Station display name |
description |
string |
100% | Station tagline or description |
callLetters |
string |
100% | FCC call letters with band suffix |
band |
string |
100% | Broadcast band (FM, AM, FL for digital, HD2/HD3/HD4 for HD radio) |
frequency |
string |
70% | Broadcast frequency. Null for digital-only stations |
format |
string |
78% | Station format |
provider |
string |
100% | Station owner or network |
cume π |
float |
64% | Cumulative weekly audience estimate |
country |
string |
100% | Country code |
marketId |
string |
100% | Primary market ID |
marketName |
string |
100% | Primary market name |
marketCity |
string |
100% | Primary market city |
marketState |
string |
100% | State abbreviation |
primaryGenreId |
float |
100% | Primary genre ID |
primaryGenreName |
string |
100% | Primary genre name |
genres |
array |
100% | All genres with id, name, and primary flag |
logoUrl π |
string |
100% | Station logo URL |
website |
string |
62% | Station website URL |
link |
string |
100% | iHeart direct play link |
fccFacilityId |
string |
26% | FCC facility ID for licensed broadcast stations |
rds |
string |
16% | RDS (Radio Data System) hex code for FM broadcast |
streamingPlatform |
string |
61% | Streaming platform (revma, triton) |
hlsStreamUrl π |
string |
42% | Secure HLS stream URL |
shoutcastStreamUrl π |
string |
78% | Secure Shoutcast/AAC stream URL |
plsStreamUrl π |
string |
22% | PLS playlist stream URL |
talkbackEnabled |
bool |
100% | Station supports talkback/listener interaction |
socialFacebook |
string |
46% | Facebook page handle |
socialTwitter |
string |
41% | Twitter/X handle |
socialInstagram |
string |
19% | Instagram handle |
socialTiktok |
string |
2% | TikTok handle |
primaryPronouncement |
string |
32% | Voice assistant pronunciation text for station name |
modifiedAt |
datetime |
100% | Last modification timestamp from iHeart |
π Premium fields are included in the data files but their values are replaced with
[PREMIUM]. To access real values, use our website.
Top Station Formats (format)
| Value | Count | Share |
|---|---|---|
| NEWSTALK | 413 | ββββββββββββββββββββ 18.7% |
| OTHER | 298 | ββββββββββββββββββββ 13.5% |
| COUNTRY | 294 | ββββββββββββββββββββ 13.3% |
| SPANISH | 210 | ββββββββββββββββββββ 9.5% |
| CHRPOP | 204 | ββββββββββββββββββββ 9.2% |
| Prov_Cumulus | 200 | ββββββββββββββββββββ 9.1% |
| SPORTS | 176 | ββββββββββββββββββββ 8.0% |
| ACMAINSTREAM | 148 | ββββββββββββββββββββ 6.7% |
| CLASSICHITS | 141 | ββββββββββββββββββββ 6.4% |
| ROCKCLASSIC | 125 | ββββββββββββββββββββ 5.7% |
Band Distribution (AM/FM/HD/Digital) (band)
| Value | Count | Share |
|---|---|---|
| FM | 1,930 | ββββββββββββββββββββ 52.6% |
| FL | 868 | ββββββββββββββββββββ 23.6% |
| AM | 603 | ββββββββββββββββββββ 16.4% |
| HD2 | 194 | ββββββββββββββββββββ 5.3% |
| HD3 | 61 | ββββββββββββββββββββ 1.7% |
| PR | 9 | ββββββββββββββββββββ 0.2% |
| HD4 | 6 | ββββββββββββββββββββ 0.2% |
Top Genres (primaryGenreName)
| Value | Count | Share |
|---|---|---|
| US Partner Digital | 428 | ββββββββββββββββββββ 15.2% |
| News & Talk | 423 | ββββββββββββββββββββ 15.0% |
| Country | 395 | ββββββββββββββββββββ 14.0% |
| Top 40 & Pop | 345 | ββββββββββββββββββββ 12.2% |
| Sports | 270 | ββββββββββββββββββββ 9.6% |
| Oldies | 237 | ββββββββββββββββββββ 8.4% |
| Spanish | 227 | ββββββββββββββββββββ 8.0% |
| Hip Hop and R&B | 176 | ββββββββββββββββββββ 6.2% |
| Classic Rock | 170 | ββββββββββββββββββββ 6.0% |
| Soft Rock | 152 | ββββββββββββββββββββ 5.4% |
Stations by State (marketState)
| Value | Count | Share |
|---|---|---|
| states/US-NAT | 713 | ββββββββββββββββββββ 34.5% |
| CA | 242 | ββββββββββββββββββββ 11.7% |
| TX | 231 | ββββββββββββββββββββ 11.2% |
| FL | 213 | ββββββββββββββββββββ 10.3% |
| OH | 156 | ββββββββββββββββββββ 7.6% |
| PA | 128 | ββββββββββββββββββββ 6.2% |
| NY | 119 | ββββββββββββββββββββ 5.8% |
| GA | 103 | ββββββββββββββββββββ 5.0% |
| TN | 82 | ββββββββββββββββββββ 4.0% |
| AL | 79 | ββββββββββββββββββββ 3.8% |
Real-time track play log for iHeart stations β every song played with artist, title, timestamp, and station.
188,714,349 total records from 2015-08-30 to 2026-02-22, up to 600,000 rows in this sample (0.32% of full dataset). Exported as one file per day, up to 10,000 rows each, last 60 days retained.
| Field | Type | Fill Rate | Description |
|---|---|---|---|
_primaryKey |
string |
100% | Unique identifier for this record |
playedAt |
datetime |
100% | Start time of track playback (UTC) |
_lastSeenAt |
datetime |
100% | Last time this record was updated |
stationId |
string |
100% | iHeart station ID (numeric string) |
title |
string |
100% | Track/song title |
artist |
string |
100% | Artist name(s), may include featured artists |
album |
string |
18% | Album title |
durationSeconds |
float |
18% | Track duration in seconds |
trackId |
float |
100% | iHeart track ID |
artistId |
float |
18% | iHeart artist ID |
albumId |
float |
18% | iHeart album ID |
stationName |
string |
β | Station name (from stations table) |
stationFormat |
string |
β | Station format (from stations table) |
stationState |
string |
β | Station state (from stations table) |
stationPrimaryGenreName |
string |
β | Station primary genre (from stations table) |
Rebrowser web viewer lets you filter, sort, and export any slice of this dataset interactively. These pre-built views are ready to open:
Radio Stations with Audience Metrics β 3,667 records
β³ [{"field":"cume","op":"gt","value":0},{"sort":"cume DESC"}]
Oldies Radio Stations β 237 records
β³ [{"field":"primaryGenreName","op":"is","value":"Oldies"},{"sort":"cume DESC"}]
News & Talk Radio Stations β 422 records
β³ [{"field":"primaryGenreName","op":"is","value":"News & Talk"},{"sort":"cume DESC"}]
Country Music Radio Stations β 395 records
β³ [{"field":"primaryGenreName","op":"is","value":"Country"},{"sort":"cume DESC"}]
Sports Radio Stations β 270 records
β³ [{"field":"primaryGenreName","op":"is","value":"Sports"},{"sort":"cume DESC"}]
Recent Radio Track Plays β 180,184,177 records
β³ [{"sort":"playedAt DESC"}]
Track Plays with Album Metadata β 25,972,070 records
β³ [{"field":"album","op":"isNotEmpty"},{"sort":"playedAt DESC"}]
Country Radio Airplay Data β 29,110,186 records
β³ [{"field":"stationPrimaryGenreName","op":"is","value":"Country"},{"sort":"playedAt DESC"}]
Rock Radio Airplay Data β 13,371,216 records
β³ [{"field":"stationPrimaryGenreName","op":"is","value":"Classic Rock"},{"sort":"playedAt DESC"}]
Long-Form Radio Content (5+ Min) β 2,689,988 records
β³ [{"field":"durationSeconds","op":"gt","value":300},{"sort":"playedAt DESC"}]
import pandas as pd
# ββ Stations ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
stations = pd.read_parquet('rebrowser/iheart-dataset/stations/data.parquet')
# Top 10 FM stations in Texas by weekly audience (cume)
texas_fm = stations[(stations['marketState'] == 'TX') & (stations['band'] == 'FM')]
print(texas_fm.nlargest(10, 'cume')[['callLetters', 'frequency', 'format', 'market', 'cume']]
.to_string(index=False))
# Count stations per format, sorted by frequency
print(stations['format'].value_counts().head(15).to_string())
# All Country-format stations with a cume above 500k
big_country = stations[(stations['format'] == 'COUNTRY') & (stations['cume'] > 500_000)]
print(big_country[['callLetters', 'market', 'cume']].sort_values('cume', ascending=False))
# ββ Station Plays ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
from pathlib import Path
# Load the last 7 days of airplay
files = sorted(Path('rebrowser/iheart-dataset/station-plays/data').glob('*.parquet'))[-7:]
plays = pd.concat([pd.read_parquet(f) for f in files])
# Most-played artists across the network
print(plays.groupby('artist').size().sort_values(ascending=False).head(20).to_string())
# Spin count for a specific song title
print(plays[plays['title'].str.contains('Blinding Lights', case=False, na=False)]
.groupby('artist')['title'].count())
# Stations that played the most unique songs
print(plays.groupby('stationId')['trackId'].nunique().sort_values(ascending=False).head(10).to_string())Filter stations by format, market, and audience size to build data-driven media plans. Compare reach across geographies to optimize ad spend.
Track spin counts for specific songs or artists across the iHeart network. Measure how quickly new releases enter rotation and which formats drive the most plays.
Analyze format distribution, ownership patterns, and station density across US markets. Detect format flips, ownership transfers, and programming trends over time.
This repo publishes free research data (14 days freshness lag Β· up to 10,000 rows per file Β· up to 1 year of history). The complete, real-time dataset is at rebrowser.net/products/datasets/iheart
On Rebrowser you can:
- Filter before you buy β use the web UI to apply filters on any field and sort by any column. Preview results before purchasing. You only pay for records that match your criteria.
- Export in your format β CSV, JSON, JSONL, or Parquet depending on your plan.
- Access via API β integrate dataset queries into your pipelines and workflows.
- Choose your freshness β plans range from a 14-day lag to real-time data with no delay.
- Select only the fields you need β keep exports lean. Premium fields with richer data are available on higher plans.
Pricing starts at $2 per 1,000 rows with volume discounts.
Free for research and non-commercial use with attribution. See license terms and how to cite.
@misc{rebrowser_iheart,
author = {Rebrowser},
title = {iHeart Radio Stations & Airplay Dataset},
year = {2026},
howpublished = {\url{https://rebrowser.net/products/datasets/iheart}},
note = {Accessed: YYYY-MM-DD}
}Commercial use requires a paid license β see pricing. Use of this data is governed by the Rebrowser Terms of Use, which may be updated at any time independently of this repository.
Rebrowser is an independent data provider and is not affiliated with, endorsed by, or sponsored by iHeart. Any trademarks are the property of their respective owners. This dataset is compiled from publicly available information; we do not request or collect iHeart user credentials. By using this dataset, you agree to comply with iHeart's Terms of Service and all applicable laws and regulations. Images, logos, descriptions, and other materials included in this dataset remain the intellectual property of their respective owners and are provided solely for informational purposes. Rebrowser makes no warranties regarding the accuracy, completeness, or legality of the data and assumes no liability for how the data is used. You are solely responsible for ensuring that your use of this dataset does not infringe on the rights of any third party.
You can also find this data on Kaggle, HuggingFace, Zenodo.