OpenStations

A curated, free, and open list of internet radio stations — organized by genre, country, and language. Machine-readable JSON, plus auto-generated M3U and PLS for classic media players.

Use it in your own app, on your NAS, in your car, or wherever you play audio.

Formats

File Purpose
stations.json Master list — all stations with full metadata
by-genre.json Stations grouped by genre (Ambient, Jazz, Classical, etc.)
by-country.json Stations grouped by ISO 3166-1 country (US, HK, FR, GB, …)
by-language.json Stations grouped by BCP 47 language tag (en, zh-HK, fr, …)
stations.m3u Standard M3U playlist for VLC, iTunes, foobar2000, and most media players
stations.pls PLS playlist for older tools that prefer it

Auto-generated views regenerate from stations.json on every push, so all files stay in sync.

Quick start

Grab the raw JSON

https://niftyopen.github.io/OpenStations/stations.json

Grab the M3U (drop into VLC or iTunes)

https://niftyopen.github.io/OpenStations/stations.m3u

From your app

let url = URL(string: "https://niftyopen.github.io/OpenStations/stations.json")!
let (data, _) = try await URLSession.shared.data(from: url)
let catalog = try JSONDecoder().decode(RadioCatalog.self, from: data)

Station schema

Each station in stations.json:

{
  "id": "somafm-groove-salad",
  "name": "Groove Salad",
  "streamURL": "https://ice1.somafm.com/groovesalad-128-mp3",
  "genre": "Ambient",
  "country": "US",
  "language": "en",
  "bitrate": 128,
  "codec": "mp3",
  "homepage": "https://somafm.com/groovesalad/"
}

Optional availability flags. A station without them is usable. Apps should hide any station that carries either flag. The entries stay in the catalog so they can be restored later.

stations.m3u and stations.pls leave flagged stations out, because plain players can’t filter them. The by-*.json views include them with their flags.

License

This project is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).

You are free to use, adapt, and share this list — including commercially. In exchange, please credit OpenStations and link back to this repository.

Suggested attribution:

Radio station list from OpenStations, licensed under CC BY 4.0.

Contributing

Suggestions welcome. See CONTRIBUTING.md for how to submit a station or report a broken stream.

Apps using OpenStations

Using OpenStations in your project? Open a PR to add yourself here.

Support the maintainer

If OpenStations saves you time or helps your project, consider tipping via GitHub Sponsors or Ko-fi (links coming soon).