BYTETOOLS

Radio Browser API

Free radio station API with no key: 50,000+ internet radio stations worldwide with stream URLs, tags, country, language, bitrate and logos. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the Radio Browser API?

Radio Browser is a free, key-free community database of more than 50,000 internet radio stations worldwide, providing stream URLs, station logos, country, language, tags, bitrate and click statistics.

Radio Browser is a community-maintained open database, and it is the standard source for internet radio station listings. Every entry has a directly playable stream URL, which makes building a working radio player genuinely straightforward.

It runs on multiple mirror servers for resilience, and the maintainers ask that clients send a descriptive User-Agent so they can identify traffic. Station availability is community-reported, so validating a stream before playing is worthwhile.

Quick facts

Base URL
https://de1.api.radio-browser.info/json
Authentication
No API key required. A descriptive User-Agent identifying your application is requested.
Rate limit
No published hard limit; the project asks for reasonable use and a proper User-Agent.
Pricing
Free and open source.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Radio Browser API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Search for radio stations

GET https://de1.api.radio-browser.info/json/stations/search?limit=1&name=bbc

curl
curl 'https://de1.api.radio-browser.info/json/stations/search?limit=1&name=bbc'
JavaScript (fetch)
const res = await fetch("https://de1.api.radio-browser.info/json/stations/search?limit=1&name=bbc");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://de1.api.radio-browser.info/json/stations/search?limit=1&name=bbc", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "changeuuid": "6dfb6520-8d52-4054-8d3e-c37a38b62872",
    "stationuuid": "f7fd408e-02a5-49a1-8c03-078727e97e8f",
    "serveruuid": null,
    "name": " BBC RADIO 1 - The biggest new pop and all-day vibes",
    "url": "http://a.files.bbci.co.uk/ms6/live/3441A116-B12E-4D2F-ACA8-C1984642FA4B/audio/simulcast/hls/nonuk/pc_hd_abr_v2/cf/bbc_radio_one.m3u8",
    "url_resolved": "http://a.files.bbci.co.uk/ms6/live/3441A116-B12E-4D2F-ACA8-C1984642FA4B/audio/simulcast/hls/nonuk/pc_hd_abr_v2/cf/bbc_radio_one.m3u8",
    "homepage": "https://www.bbc.co.uk/sounds/play/live/bbc_radio_one",
    "favicon": "https://cdn-profiles.tunein.com/s24939/images/logod.png",
    "tags": "97.1 fm,99.7 fm,bbc,bbc radio 1,dab,england,entertainment,entretenimiento,estación,europa,europe,fm,inglaterra,juvenil,london,londres,moi merino,music,música,música en inglés,música pop,pop,pop en inglés,pop music,pop rock,radio,rock,rock music",
    "country": "The United Kingdom Of Great Britain And Northern Ireland",
    "countrycode": "GB",
    "iso_3166_2": null,
    "state": "London",
    "language": "english",
    "languagecodes": "en",
    "votes": 124,
    "lastchangetime": "2026-04-18 08:43:08",
    "lastchangetime_iso8601": "2026-04-18T08:43:08Z",
    "codec": "AAC+",
    "bitrate": 101,
    "hls": 1,
    "lastcheckok": 1,
    "lastchecktime": "2026-04-18 08:43:09",
    "lastchecktime_iso8601": "2026-04-18T08:43:09Z",
    "lastcheckoktime": "2026-04-18 08:43:09",
    "lastcheckoktime_iso8601": "2026-04-18T08:43:09Z",
    "lastlocalchecktime": "2026-04-18 08:43:09",
    "lastlocalchecktime_iso8601":

Parameters

ParameterTypeRequiredDescription
stations/searchpathOptionalSearch stations by various criteria. stations/search
namestringOptionalStation name search. bbc
countrycodestringOptionalISO country code filter. GB
tagstringOptionalGenre or topic tag. jazz
limitintegerOptionalMaximum results. 20
orderstringOptionalSort field such as clickcount or votes. clickcount

Response fields

stationuuidstring
Stable station identifier.
namestring
Station name.
url / url_resolvedstring
Stream URL — use url_resolved, which follows redirects.
faviconstring
Station logo URL, often empty.
tagsstring
Comma-separated genre and topic tags.
country / languagestring
Broadcast country and language.
bitrateinteger
Stream bitrate in kbps.
lastcheckokinteger
1 when the stream was working at last check.

What you can build with the Radio Browser API

  • Build an internet radio player with global station search
  • Filter stations by genre, country or language
  • Create a radio discovery app sorted by popularity
  • Add background radio to a media application

Common errors and how to fix them

Dead stream URLs

Stations go offline and the database is community-maintained.

Fix: Filter on lastcheckok=1, and use url_resolved rather than url.

Blocked or throttled

Missing User-Agent.

Fix: Send a descriptive User-Agent naming your application, as the project requests.

Server unreachable

Individual mirrors go down.

Fix: The project runs several mirrors; resolve them via DNS SRV or fall back to another regional host.

Radio Browser API — frequently asked questions

Is the Radio Browser API free?

Yes, completely free and open source with no API key. The maintainers ask that you send a descriptive User-Agent identifying your app.

How many stations are there?

Over 50,000 internet radio stations worldwide, contributed and maintained by the community.

Should I use url or url_resolved?

url_resolved. It has already followed redirects to the actual stream, so it works directly in an audio player.

How do I avoid dead streams?

Filter on lastcheckok=1, which indicates the stream was working at the last automated check. Streams still fail occasionally, so handle playback errors gracefully.

Tools that pair with this API

Radio Browser is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.