Radio Browser is a free, community-driven directory of internet radio stations. The project publishes a public REST API exposing the full catalog of stations along with category aggregates (countries, states, languages, tags, codecs), click counting, voting, and station submission. Mirrors are discovered through a round-robin DNS pool (all.api.radio-browser.info) and the canonical server software (radiobrowser-api-rust) is released under AGPL-3.0, so anyone can self-host an additional mirror.
Radio Browser publishes 4 API contracts indexed on the APIs.io network, including Categories API, Interactions API, Service API, and 1 more. Tagged areas include Music, Radio, Streaming, Open Source, and Open Data.
The Radio Browser catalog on APIs.io includes 1 JSON-LD context and 2 Spectral governance rulesets.
Radio Browser’s developer surface includes engineering blog, documentation, API reference, and 23 more developer resources.
Regulatory Posture applies to this provider. Its tags matched the
Government & Public Sector regime, so
Regulatory Posture carries 15 points of the composite.
If this regime is wrong for your business, say so on your
provider repo — the
applicability map is public and we will correct it.
Create-or-Update Ergonomics applies to this provider. This API accepts writes, so it
carries 10 points of the composite. It is scored from the published contracts
themselves: whether a caller can create-or-update in one call, whether the write accepts a key the caller already
holds, and whether the response says which branch ran. Without that, every write needs a search-and-branch in
front of it, and the first time that check is skipped a duplicate record is created.
Scored against the observed mean rather than raw — a provider at the catalog average is unchanged by this facet,
not penalised by it.
The six quality facets above are damped to 75 points between them,
because the conditional facet above carries the other
25. That is why each facet's contribution is shown against a damped
maximum: raising a quality facet moves the composite by 75% of its nominal
weight, not 100%. The full arithmetic is at apis.io/rating/.
Show this score on your site.
It updates itself when the score changes. Paste this where you link to your API docs:
<a href="https://apis.io/providers/radio-browser/"><img src="https://apis.io/badge/radio-browser/card.svg" alt="Radio Browser on APIs.io — Kin Score by API Evangelist"></a>
Other styles, a README pill and a shields.io endpoint are on the badge page.
Raise your score.
Agent readiness — checks not met, largest first (exact, from this profile):
MCP Server+12 pts — deployment.mode + probe verdict on the mcp/ manifest, not the pointer; an unprobed slug falls back to authorship
Idempotency+9 pts — OpenAPI mutating operations declare an idempotency key — a header, a request-body property, or a named de-duplication token whose own description says so (verified); else common[].type matches /idempoten/i (documented)
Stable Error Semantics+8 pts — OpenAPI $refs a shared error schema across 4xx/5xx responses (verified), else common[].type includes ErrorCatalog / ErrorCodes / DeclineCodes
A2A Agent Card+8 pts — a2a/-a2a.yml manifest, graded on conformance.grade against A2A 1.0.0
Delegated User Identity+6 pts — a served discovery document listing authorization_code in grant_types_supported (served), else an oauth2 authorizationCode flow or openIdConnect declared in an OpenAPI (documented)
9 more unmet checks in the Agent Readiness table above.
Kin Score — facets with the most composite points still available (weight × headroom):
The Kin Score Market layer reads a provider inside its market:
its position, and how deep its integrations go. Depth is only comparable within a position. Provisional and unweighted:
not part of the Kin Score or agent readiness.
Registered MCP server and declares compatibility are report only — not weighted.
Undeclared means we found nothing we can read, so there is no number: we never infer integrations.
Standards this provider implements or carries. De facto ones are profiled and measured by the API Commons; formal ones come from the standards directory and are linked by the provider's own tags. The evidence column says how each claim was established — not that it was made.
Not yet checked against Radio Browser's own pricing page. Compiled by API Evangelist on 2026-05-28; confirm before you rely on a figure. A free plan or tier is listed.
aid: radio-browser
name: Radio Browser
description: Radio Browser is a free, community-driven directory of internet radio stations. The project publishes a public
REST API exposing the full catalog of stations along with category aggregates (countries, states, languages, tags, codecs),
click counting, voting, and station submission. Mirrors are discovered through a round-robin DNS pool (all.api.radio-browser.info)
and the canonical server software (radiobrowser-api-rust) is released under AGPL-3.0, so anyone can self-host an additional
mirror.
type: Index
deliveryModel:
model: saas
license_evidence:
not_product:
- segler-alex/radiobrowser-api-rust
open_source: unknown
commercial: true
callable_host: true
label: Hosted service · you call their endpoint
confidence: low
source:
- openapi
- pricing
- repository-not-product
generated: '2026-09-25'
method: derived
accessModel:
pricing: free
onboarding: unknown
trial: false
try_now: false
public: false
label: Free
confidence: low
source:
- plans
- security
generated: '2026-11-06'
method: derived
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/icons/radio-browser.png
tags:
- Music
- Radio
- Streaming
- Open Source
- Open Data
- Community
- Public APIs
- AGPL
tags_raw:
- Music
- Radio
- Streaming
- Open Source
- Open Data
- Community
- Public APIs
- AGPL
- Open-Source
url: https://raw.githubusercontent.com/api-evangelist/radio-browser/refs/heads/main/apis.yml
created: '2026-05-28'
modified: '2026-10-06'
specificationVersion: '0.23'
x-source: public-apis/public-apis
x-category: Music
x-type: opensource
x-tier: 3
x-tier-reason: bulk-registered-from-public-apis
apis:
- aid: radio-browser:radio-browser-categories-api
name: Radio Browser Categories API
description: Aggregated counts of countries, languages, tags, codecs, and states.
humanURL: https://api.radio-browser.info/
baseURL: https://de1.api.radio-browser.info
tags:
- Categories
properties:
- type: OpenAPI
url: openapi/radio-browser-categories-api-openapi.yml
- type: Documentation
url: https://api.radio-browser.info/
- type: APIReference
url: https://docs.radio-browser.info/
- type: JSONSchema
url: json-schema/radio-browser-station-schema.json
- type: JSONSchema
url: json-schema/radio-browser-category-schema.json
- type: JSONSchema
url: json-schema/radio-browser-stats-schema.json
- type: JSONStructure
url: json-structure/radio-browser-station-structure.json
- type: JSONStructure
url: json-structure/radio-browser-category-structure.json
- type: JSONLD
url: json-ld/radio-browser-context.jsonld
- type: Examples
url: examples/radio-browser-list-stations-example.json
- type: Examples
url: examples/radio-browser-search-stations-example.json
- type: Examples
url: examples/radio-browser-list-countries-example.json
- type: Examples
url: examples/radio-browser-list-tags-example.json
- type: Examples
url: examples/radio-browser-click-station-example.json
- type: Examples
url: examples/radio-browser-vote-station-example.json
- type: Examples
url: examples/radio-browser-get-stats-example.json
- type: Authentication
url: https://docs.radio-browser.info/
- type: RateLimits
url: rate-limits/radio-browser-rate-limits.yml
- aid: radio-browser:radio-browser-interactions-api
name: Radio Browser Interactions API
description: Click counting, voting, and station submission.
humanURL: https://api.radio-browser.info/
baseURL: https://de1.api.radio-browser.info
tags:
- Interactions
properties:
- type: OpenAPI
url: openapi/radio-browser-interactions-api-openapi.yml
- type: Documentation
url: https://api.radio-browser.info/
- type: APIReference
url: https://docs.radio-browser.info/
- type: JSONSchema
url: json-schema/radio-browser-station-schema.json
- type: JSONSchema
url: json-schema/radio-browser-category-schema.json
- type: JSONSchema
url: json-schema/radio-browser-stats-schema.json
- type: JSONStructure
url: json-structure/radio-browser-station-structure.json
- type: JSONStructure
url: json-structure/radio-browser-category-structure.json
- type: JSONLD
url: json-ld/radio-browser-context.jsonld
- type: Examples
url: examples/radio-browser-list-stations-example.json
- type: Examples
url: examples/radio-browser-search-stations-example.json
- type: Examples
url: examples/radio-browser-list-countries-example.json
- type: Examples
url: examples/radio-browser-list-tags-example.json
- type: Examples
url: examples/radio-browser-click-station-example.json
- type: Examples
url: examples/radio-browser-vote-station-example.json
- type: Examples
url: examples/radio-browser-get-stats-example.json
- type: Authentication
url: https://docs.radio-browser.info/
- type: RateLimits
url: rate-limits/radio-browser-rate-limits.yml
- aid: radio-browser:radio-browser-service-api
name: Radio Browser Service API
description: Server stats, mirror discovery, and configuration.
humanURL: https://api.radio-browser.info/
baseURL: https://de1.api.radio-browser.info
tags:
- Services
tags_raw:
- Service
properties:
- type: OpenAPI
url: openapi/radio-browser-service-api-openapi.yml
- type: Documentation
url: https://api.radio-browser.info/
- type: APIReference
url: https://docs.radio-browser.info/
- type: JSONSchema
url: json-schema/radio-browser-station-schema.json
- type: JSONSchema
url: json-schema/radio-browser-category-schema.json
- type: JSONSchema
url: json-schema/radio-browser-stats-schema.json
- type: JSONStructure
url: json-structure/radio-browser-station-structure.json
- type: JSONStructure
url: json-structure/radio-browser-category-structure.json
- type: JSONLD
url: json-ld/radio-browser-context.jsonld
- type: Examples
url: examples/radio-browser-list-stations-example.json
- type: Examples
url: examples/radio-browser-search-stations-example.json
- type: Examples
url: examples/radio-browser-list-countries-example.json
- type: Examples
url: examples/radio-browser-list-tags-example.json
- type: Examples
url: examples/radio-browser-click-station-example.json
- type: Examples
url: examples/radio-browser-vote-station-example.json
- type: Examples
url: examples/radio-browser-get-stats-example.json
- type: Authentication
url: https://docs.radio-browser.info/
- type: RateLimits
url: rate-limits/radio-browser-rate-limits.yml
- aid: radio-browser:radio-browser-stations-api
name: Radio Browser Stations API
description: Browse, search, and list radio stations.
humanURL: https://api.radio-browser.info/
baseURL: https://de1.api.radio-browser.info
tags:
- Stations
properties:
- type: OpenAPI
url: openapi/radio-browser-stations-api-openapi.yml
- type: Documentation
url: https://api.radio-browser.info/
- type: APIReference
url: https://docs.radio-browser.info/
- type: JSONSchema
url: json-schema/radio-browser-station-schema.json
- type: JSONSchema
url: json-schema/radio-browser-category-schema.json
- type: JSONSchema
url: json-schema/radio-browser-stats-schema.json
- type: JSONStructure
url: json-structure/radio-browser-station-structure.json
- type: JSONStructure
url: json-structure/radio-browser-category-structure.json
- type: JSONLD
url: json-ld/radio-browser-context.jsonld
- type: Examples
url: examples/radio-browser-list-stations-example.json
- type: Examples
url: examples/radio-browser-search-stations-example.json
- type: Examples
url: examples/radio-browser-list-countries-example.json
- type: Examples
url: examples/radio-browser-list-tags-example.json
- type: Examples
url: examples/radio-browser-click-station-example.json
- type: Examples
url: examples/radio-browser-vote-station-example.json
- type: Examples
url: examples/radio-browser-get-stats-example.json
- type: Authentication
url: https://docs.radio-browser.info/
- type: RateLimits
url: rate-limits/radio-browser-rate-limits.yml
common:
- url: https://www.radio-browser.info/blog/
type: Blog
- type: IssueTracker
url: https://github.com/segler-alex/radiobrowser-api-rust/issues
- type: Releases
url: https://github.com/segler-alex/radiobrowser-api-rust/releases
- type: CodeOfConduct
url: https://github.com/segler-alex/radiobrowser-api-rust/blob/master/CODE_OF_CONDUCT.md
- type: AgenticAccess
url: agentic-access/radio-browser-agentic-access.yml
- type: DomainSecurity
url: security/radio-browser-domain-security.yml
- type: Website
url: https://www.radio-browser.info/
- type: Documentation
url: https://api.radio-browser.info/
- type: APIReference
url: https://docs.radio-browser.info/
- type: GitHubOrganization
url: https://github.com/segler-alex
- type: GitHubRepository
url: https://github.com/segler-alex/radiobrowser-api-rust
description: Archived GitHub mirror of the canonical Rust server (now on GitLab).
- type: SourceCode
url: https://gitlab.com/radiobrowser/radiobrowser-api-rust
description: Canonical AGPL-3.0 server (Rust). Self-host to run your own mirror.
- type: HelmCharts
url: https://gitlab.com/radiobrowser/helm-charts
- type: License
url: https://www.gnu.org/licenses/agpl-3.0.html
description: AGPL-3.0 for the server software. Database is community-contributed.
- type: SpectralRules
url: rules/radio-browser-rules.yml
- type: Vocabulary
url: vocabulary/radio-browser-vocabulary.yml
- type: Plans
url: plans/radio-browser-plans-pricing.yml
- type: RateLimits
url: rate-limits/radio-browser-rate-limits.yml
- type: PublicAPIsListing
url: https://github.com/public-apis/public-apis
- type: SDKs
url: https://github.com/ivandotv/radio-browser-api
description: JavaScript/TypeScript wrapper (ivandotv/radio-browser-api).
- type: SDKs
url: https://github.com/andreztz/pyradios
description: Python client (andreztz/pyradios).
- type: SDKs
url: https://github.com/sfuhrm/radiobrowser4j
description: Java client (sfuhrm/radiobrowser4j).
- type: SDKs
url: https://github.com/nepodev/radio-browser
description: Node.js client (nepodev/radio-browser).
- type: SDKs
url: https://github.com/tomassasovsky/radio-browser-api.dart
description: Dart client (tomassasovsky/radio-browser-api.dart).
- type: SDKs
url: https://github.com/adinan-cenci/radio-browser
description: PHP client (adinan-cenci/radio-browser).
- type: SDKs
url: https://hexdocs.pm/radio_browser/
description: Elixir client (RadioBrowser on Hex).
- type: Features
data:
- name: Round-Robin Mirror Pool
description: Servers discovered via DNS resolution of all.api.radio-browser.info; clients pick a healthy mirror and fall
back as needed.
- name: Multiple Response Formats
description: JSON, XML, CSV, M3U, PLS, XSPF, and TTL output for nearly every read endpoint.
- name: Faceted Browse
description: List stations by country, country code, state, language, tag, or codec with station counts per facet.
- name: Continuous Stream Health Checks
description: Stations are automatically pinged to verify their stream is reachable; results power lastcheckok and broken-station
endpoints.
- name: Community Curation
description: Anyone can submit a station via POST /json/add; clicks and votes feed station popularity rankings.
- name: Open Source Server (AGPL-3.0)
description: The radiobrowser-api-rust server is open source; operators can self-host an additional mirror.
- name: Geo Coordinates
description: Stations carry optional geo_lat/geo_long for map-based discovery.
- name: Prometheus Metrics
description: Each mirror exposes /metrics in Prometheus exposition format for operational observability.
- type: UseCases
data:
- name: Internet Radio Player Apps
description: Power desktop, mobile, and web players that let users browse the directory and play streams.
- name: Voice Assistant Skills
description: Back Alexa/Google/Home Assistant skills that play "play jazz radio from France" requests by searching the
directory.
- name: Smart Speaker Integrations
description: Embedded firmware (e.g. AirMusic, Hama, internet radio hardware) ships Radio Browser as a station source.
- name: Music Discovery Research
description: Researchers analyze the catalog to study global radio programming, language distribution, and genre tagging.
- name: Streaming Health Dashboards
description: Use the /json/checks data to build dashboards showing global radio stream uptime.
- name: Editorial Curation
description: Editors use vote/click data to surface trending stations by country, language, or genre.
- type: Integrations
data:
- name: Home Assistant
description: Multiple custom components and the built-in Radio Browser integration use the API for station selection.
- name: VLC / Media Players
description: Media player extensions consume the API to populate radio station catalogs.
- name: Self-Hosted Mirrors
description: Operators run radiobrowser-api-rust to add to the all.api.radio-browser.info pool.
- name: Public APIs Directory
description: Listed in public-apis/public-apis under the Music category.
- type: Solutions
data:
- name: Hosted Community API
description: The free, hosted, AGPL-licensed Radio Browser mirror network — the default for most apps.
- name: Self-Hosted Mirror
description: Run radiobrowser-api-rust on your own infrastructure for guaranteed throughput, isolated data, or private
catalogs.
maintainers:
- FN: Kin Lane
email: kin@apievangelist.com
Radio Browser API — frequently asked questions
Does Radio Browser have an API?
Yes. APIs.io lists 4 APIs from Radio Browser, including Radio Browser Categories API, Radio Browser Interactions API and Radio Browser Service API, and 1 more.
Is there an OpenAPI specification for the Radio Browser API?
Yes. APIs.io indexes 4 OpenAPI specifications for Radio Browser, each linked for download from this page.
How do I authenticate with the Radio Browser API?
Radio Browser uses bearer-token authentication.
How much does the Radio Browser API cost?
APIs.io lists 1 pricing plan for Radio Browser, with each plan's price, limits and inclusions under Pricing on this page.
Is the Radio Browser API ready for AI agents?
Radio Browser has a Kin Score of 37.6 out of 100 (thin) and an Agent Readiness score of 20.2 (agent-aware), scored by API Evangelist on 2026-11-06.
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.