Introduction
Server version:
This webservice can be used freely but without guarantee to work. I have been keeping it online since December, 2015, but downtimes are possible and I am not always home to fix it :) Please do not hesitate to send me ideas to improve the service at segler_alex AT web DOT de.
Using the API
Format
GET {path}
User-Agent: {user-agent}/{version}
Host: {root end-point}
Content-type: {MIME type}
GET request examples
GET /json/stations/search?tag=rock&codec=mp3&order=country&reverse=true&limit=1000
User-Agent: Cool Radio App/1.2
Host: https://de1.api.radio-browser.info
Content-type: application/json; charset=utf-8
GET /m3u/stations/bycountry/austria
User-Agent: Cool Radio App/1.2
Host: https://de1.api.radio-browser.info
Content-type: text/plain
Please send a descriptive User-Agent in your HTTP requests, which makes it easier for me to get in touch with developers to help with the usage of the API. Something like appname/appversion
, for example Cool Radio App/1.2
. This also helps me to know which apps are using this service, so I can keep the list of apps up to date and tell people in which ways they can use this service.
Content type should be specified as appropriate.
If you know an app that is using this service but not listed on www.radio-browser.info, please drop me a note.
Thank you! At the moment this service checks radio stations by connecting to them at least every day and marks them accordingly. (LastCheckOK=0/1
)
If you can't find what you are looking for here, please create a feature request on Github or if you are a programmer, fork it and make a pull request. Thanks for your help! Recent changes can be found in the Changelog.
Structs
Station
Results:
{
"changeuuid":"01234567-89ab-cdef-0123-456789abcdef",
"stationuuid":"01234567-89ab-cdef-0123-456789abcdef",
"serveruuid":"01234567-89ab-cdef-0123-456789abcdef",
"name":"Best Radio",
"url":"http://www.example.com/test.pls",
"url_resolved":"http://stream.example.com/mp3_128",
"homepage":"https://www.example.com",
"favicon":"https://www.example.com/icon.png",
"tags":"jazz,pop,rock,indie",
"country":"Switzerland",
"countrycode":"US",
"iso_3166_2": "US-NY",
"state":"",
"language":"german,english",
"languagecodes":"ger,eng",
"votes":0,
"lastchangetime":"2019-12-12 18:37:02",
"lastchangetime_iso8601":"2019-12-12T18:37:02Z",
"codec":"MP3",
"bitrate":128,
"hls":0,
"lastcheckok":1,
"lastchecktime":"2020-01-09 18:16:35",
"lastchecktime_iso8601":"2020-01-09T18:16:35Z",
"lastcheckoktime":"2020-01-09 18:16:35",
"lastcheckoktime_iso8601":"2020-01-09T18:16:35Z",
"lastlocalchecktime":"2020-01-08 23:18:38",
"lastlocalchecktime_iso8601":"2020-01-08T23:18:38Z",
"clicktimestamp":"",
"clicktimestamp_iso8601":null,
"clickcount":0,
"clicktrend":0,
"ssl_error": 0,
"geo_lat": 1.1,
"geo_long": -2.2,
"has_extended_info": false
}
<station
changeuuid="01234567-89ab-cdef-0123-456789abcdef"
stationuuid="01234567-89ab-cdef-0123-456789abcdef"
serveruuid="01234567-89ab-cdef-0123-456789abcdef"
name="Best radio"
url="http://www.example.com/test.pls"
url_resolved="http://stream.example.com/mp3_128"
homepage="https://www.example.com"
favicon="https://www.example.com/icon.png"
tags="jazz,pop,rock,indie"
country="Switzerland"
countrycode="US"
iso_3166_2="US-NY"
state=""
language="german,english"
languagecodes="ger,eng"
votes="0"
lastchangetime="2019-12-12 18:37:02"
lastchangetime_iso8601="2019-12-12T18:37:02Z"
codec="MP3"
bitrate="128"
hls="0"
lastcheckok="1"
lastchecktime="2020-01-09 18:16:35"
lastchecktime_iso8601="2020-01-09T18:16:35Z"
lastcheckoktime="2020-01-09 18:16:35"
lastcheckoktime_iso8601="2020-01-09T18:16:35Z"
lastlocalchecktime="2020-01-08 23:18:38"
lastlocalchecktime_iso8601="2020-01-08T23:18:38Z"
clicktimestamp=""
clickcount="0"
clicktrend="0"
ssl_error="0"
geo_lat="1.1"
geo_long="-2.2"
has_extended_info="false"/>
changeuuid,stationuuid,serveruuid,name,url,url_resolved,homepage,favicon,tags,country,countrycode,iso_3166_2,state,language,languagecodes,votes,lastchangetime,lastchangetime_iso8601,codec,bitrate,hls,lastcheckok,lastchecktime,lastchecktime_iso8601,lastcheckoktime,lastcheckoktime_iso8601,lastlocalchecktime,lastlocalchecktime_iso8601,clicktimestamp,clicktimestamp_iso8601,clickcount,clicktrend,ssl_error,geo_lat,geo_long,has_extended_info
01234567-89ab-cdef-0123-456789abcdef,01234567-89ab-cdef-0123-456789abcdef,01234567-89ab-cdef-0123-456789abcdef,Best radio,http://www.example.com/test.pls,http://stream.example.com/mp3_128,https://www.example.com,https://www.example.com/icon.png,"jazz,pop,rock,indie",Switzerland,US,US-NY,"german,english","ger,eng",0,
2019-12-12 18:37:02,2019-12-12T18:37:02Z,MP3,128,0,2020-01-09 18:16:35,2020-01-09T18:16:35Z,2020-01-09 18:16:35,2020-01-09T18:16:35Z,2020-01-08 23:18:38,2020-01-08T23:18:38Z,,0,0,0,1.1,-2.2,false
#EXTM3U
#RADIOBROWSERUUID:01234567-89ab-cdef-0123-456789abcdef
#EXTINF:-1,Best Radio
http://stream.example.com/mp3_128
#RADIOBROWSERUUID:01234567-89ab-cdef-0123-456789abcdef
#EXTINF:-1,Other Radio
http://stream.example2.com/mp3_256
[playlist]
NumberOfEntries=2
Title1=Best Radio
File1=http://stream.example.com/mp3_128
Title2=Other Radio
File2=http://stream.example2.com/mp3_256
<?xml version="1.0" encoding="UTF-8" ?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>
<track>
<title>Best Radio</title>
<location>http://stream.example.com/mp3_128</location>
<image>http://example.com/favicon.ico</image>
<identifier>radiobrowser:01234567-89ab-cdef-0123-456789abcdef</identifier>
</track>
<track>
<title>Other Radio</title>
<location>https://stream.example2.com/mp3_256</location>
<image>http://example2.com/favicon.ico</image>
<identifier>radiobrowser:11234567-89ab-cdef-0123-456789abcdef</identifier>
</track>
</trackList>
</playlist>
Fields:
Name | Possible value/Datatype | Description |
---|---|---|
changeuuid |
UUID | A globally unique identifier for the change of the station information |
stationuuid |
UUID | A globally unique identifier for the station |
name |
string | The name of the station |
url |
string, URL (HTTP/HTTPS) | The stream URL provided by the user |
url_resolved |
string, URL (HTTP/HTTPS) | An automatically "resolved" stream URL. Things resolved are playlists (M3U/PLS/ASX...), HTTP redirects (Code 301/302). This link is especially useful if you use this API from a platform that is not able to do a resolve on its own (e.g. JavaScript in browser) or you just don't want to invest the time in decoding playlists yourself. |
homepage |
string, URL (HTTP/HTTPS) | URL to the homepage of the stream, so you can direct the user to a page with more information about the stream. |
favicon |
string, URL (HTTP/HTTPS) | URL to an icon or picture that represents the stream. (PNG, JPG) |
tags |
string, multivalue, split by comma | Tags of the stream with more information about it |
country |
string | DEPRECATED: use countrycode instead, full name of the country. Currently it is autogenerated from the countrycode. |
countrycode |
2 letters, uppercase | Official countrycodes as in ISO 3166-1 alpha-2 |
state |
string | Full name of the entity where the station is located inside the country |
language |
string, multivalue, split by comma | Languages that are spoken in this stream. |
languagecodes |
string, multivalue, split by comma | Languages that are spoken in this stream by code ISO 639-2/B |
votes |
number, integer | Number of votes for this station. This number is by server and only ever increases. It will never be reset to 0. |
lastchangetime |
datetime, YYYY-MM-DD HH:mm:ss | Last time when the stream information was changed in the database |
lastchangetime_iso8601 |
datetime, ISO 8601 | Last time when the stream information was changed in the database |
codec |
string | The codec of this stream recorded at the last check. |
bitrate |
number, integer, bps | The bitrate of this stream recorded at the last check. |
hls |
0 or 1 |
Mark if this stream is using HLS distribution or non-HLS. |
lastcheckok |
0 or 1 |
The current online/offline state of this stream. This is a value calculated from multiple measure points in the internet. The test servers are located in different countries. It is a majority vote. |
lastchecktime |
datetime, YYYY-MM-DD HH:mm:ss | The last time when any radio-browser server checked the online state of this stream |
lastchecktime_iso8601 |
datetime, ISO 8601 | The last time when any radio-browser server checked the online state of this stream |
lastcheckoktime |
datetime, YYYY-MM-DD HH:mm:ss | The last time when the stream was checked for the online status with a positive result |
lastcheckoktime_iso8601 |
datetime, ISO 8601 | The last time when the stream was checked for the online status with a positive result |
lastlocalchecktime |
datetime, YYYY-MM-DD HH:mm:ss | The last time when this server checked the online state and the metadata of this stream |
lastlocalchecktime_iso8601 |
datetime, ISO 8601 | The last time when this server checked the online state and the metadata of this stream |
clicktimestamp |
datetime, YYYY-MM-DD HH:mm:ss | The time of the last click recorded for this stream |
clicktimestamp_iso8601 |
datetime, ISO 8601 | The time of the last click recorded for this stream |
clickcount |
number, integer | Clicks within the last 24 hours |
clicktrend |
number, integer | The difference of the click-counts within the last 2 days. Positive values mean an increase, negative a decrease of clicks. |
ssl_error |
number, integer | 0 means no error, 1 means that there was an ssl error while connecting to the stream url. |
geo_lat |
number, double | Latitude on earth where the stream is located. |
geo_long |
number, double | Longitude on earth where the stream is located. |
has_extended_info |
bool, optional | Is true , if the stream owner does provide extended information as HTTP headers which override the information in the database. |
Station check
This struct is used to represent an online check of a stream. Most of the information gets extracted by checking the http headers of the stream.
Results:
{
"stationuuid":"960e57c5-0601-11e8-ae97-52543be04c81",
"checkuuid":"18be4561-309a-11ea-b37a-0242ac120002",
"source":"de1.api.radio-browser.info",
"codec":"MP3",
"bitrate":128,
"hls":0,
"ok":1,
"timestamp_iso8601":"2020-01-06T15:34:58Z",
"timestamp":"2020-01-06 15:34:58",
"urlcache":"http://stream.example.com/mp3_128",
"metainfo_overrides_database":0,
"public":null,
"name":null,
"description":null,
"tags":null,
"countrycode":null,
"homepage":null,
"favicon":null,
"loadbalancer":null,
"do_not_index":null,
"countrysubdivisioncode": null,
"server_software": "Icecast 2.4.0",
"sampling": 44100,
"timing_ms": 495,
"languagecodes": null,
"ssl_error": 0,
"geo_lat": 1.1,
"geo_long": -2.2
}
<check
stationuuid="01234567-89ab-cdef-0123-456789abcdef"
checkuuid="01234567-89ab-cdef-0123-456789abcdef"
source="de1.api.radio-browser.info"
codec="MP3"
bitrate="128"
hls="0"
ok="1"
urlcache="http://stream.example.com/mp3_128"
timestamp_iso8601="2020-01-06T15:34:58Z"
timestamp="2020-01-06 15:34:58"
urlcache="http://stream.example.com/mp3_128"
metainfo_overrides_database="0"
public="0"
name=""
description=""
tags=""
countrycode=""
homepage=""
favicon=""
loadbalancer=""
do_not_index=""
countrysubdivisioncode=""
server_software="Icecast 2.4.2"
sampling="44100"
timing_ms="495"
languagecodes=""
ssl_error="0"
geo_lat="1.1"
geo_long="-2.2"/>
stationuuid,checkuuid,source,codec,bitrate,hls,ok,timestamp_iso8601,timestamp,urlcache,metainfo_overrides_database,public,name,description,tags,countrycode,homepage,favicon,loadbalancer,do_not_index,countrysubdivisioncode,server_software,sampling,timing_ms,languagecodes,ssl_error,geo_lat,geo_long
01234567-89ab-cdef-0123-456789abcdef,01234567-89ab-cdef-0123-456789abcdef,de1.api.radio-browser.info,MP3,192,0,1,2021-04-16T08:07:45Z,2021-04-16 08:07:45,http://stream.example.com/mp3_128,0,,,,,,,,,,,Icecast 2.4.2,,495,,0,,
Fields:
Name | Possible value/Datatype | Description | Nullable |
---|---|---|---|
checkuuid |
UUID | An unique id for this StationCheck | NO |
stationuuid |
UUID | An unique id for referencing a Station | NO |
source |
string | DNS Name of the server that did the stream check. | NO |
codec |
string | High level name of the used codec of the stream. May have the format AUDIO or AUDIO/VIDEO. | NO |
bitrate |
number, integer | Bitrate 1000 bits per second (kBit/s) of the stream. (Audio + Video) | NO |
hls |
number, integer | 1 means this is an HLS stream, otherwise 0 . |
NO |
ok |
number, integer | 1 means this stream is reachable, otherwise 0. | NO |
timestamp_iso8601 |
ISO-8601 datetime string | Date and time of check creation | NO |
timestamp |
datetime, YYYY-MM-DD HH:mm:ss | Date and time of check creation | NO |
urlcache |
string, URL (HTTP/HTTPS) | Direct stream url that has been resolved from the main stream url. HTTP redirects and playlists have been decoded. If hls is 1 then this is still a HLS-playlist. |
NO |
metainfo_overrides_database |
number, integer | 1 means this stream has provided extended information and it should be used to override the local database, otherwise 0 . |
NO |
public |
number, integer | 1 that this stream appears in the public shoutcast/icecast directory, otherwise 0. | YES |
name |
string | The name extracted from the stream header. | YES |
description |
string | The description extracted from the stream header. | YES |
tags |
string | Komma separated list of tags. (genres of this stream) | YES |
countrycode |
string | Official country-codes as in ISO 3166-1 alpha-2 | YES |
countrysubdivisioncode |
string | Official country subdivision codes as in ISO 3166-2 | YES |
homepage |
string | The homepage extracted from the stream header. | YES |
favicon |
string | The favicon extracted from the stream header. | YES |
loadbalancer |
string | The loadbalancer extracted from the stream header. | YES |
server_software |
string | The name of the server software used. | YES |
sampling |
number, unsigned integer | Audio sampling frequency in Hz | YES |
timing_ms |
number, unsigned integer | Timespan in miliseconds this check needed to be finished. | NO |
languagecodes |
string | The description extracted from the stream header. | YES |
ssl_error |
number, unsigned integer | 1 means that a ssl error occured while connecting to the stream, 0 otherwise. | NO |
geo_lat |
number, double | Latitude on earth where the stream is located. | YES |
geo_long |
number, double | Longitude on earth where the stream is located. | YES |
Station check step
This struct is used in a tree structure to represent all codepaths that were necessary to check an address of a single stream. Steps can cause multiple other steps for example playlists.
Results:
{
"stepuuid": "01234567-89ab-cdef-0123-456789abcdef",
"parent_stepuuid": "01234567-89ab-cdef-0123-456789abcdef",
"checkuuid": "01234567-89ab-cdef-0123-456789abcdef",
"stationuuid": "01234567-89ab-cdef-0123-456789abcdef",
"url": "http://stream.example.com:8000/streamname",
"urltype": "STREAM",
"error": "BadError",
"creation_iso8601": "2021-04-13T20:11:19Z"
}
<checkstep
stepuuid="01234567-89ab-cdef-0123-456789abcdef"
parent_stepuuid="01234567-89ab-cdef-0123-456789abcdef"
checkuuid="01234567-89ab-cdef-0123-456789abcdef"
stationuuid="01234567-89ab-cdef-0123-456789abcdef"
url="http://stream.example.com:8000/streamname"
urltype="STREAM"
error="BadError"
creation_iso8601="2021-04-13T20:11:19Z"/>
stepuuid,parent_stepuuid,checkuuid,stationuuid,url,urltype,error,creation_iso8601
01234567-89ab-cdef-0123-456789abcdef,01234567-89ab-cdef-0123-456789abcdef,01234567-89ab-cdef-0123-456789abcdef,01234567-89ab-cdef-0123-456789abcdef,http://stream.example.com:8000/streamname,STREAM,BadError,2021-04-13T20:11:19Z
Fields:
Name | Possible value/Datatype | Description | Nullable |
---|---|---|---|
stepuuid |
UUID | An unique id for this StationCheckStep | NO |
parent_stepuuid |
UUID | An unique id for referencing another StationCheckStep. Is set if this step has a parent. | YES |
checkuuid |
UUID | An unique id for referencing a StationCheck | NO |
stationuuid |
UUID | An unique id for referencing a Station | NO |
url |
string, URL (HTTP/HTTPS) | The url that this step of the checking process handled | NO |
urltype |
string | Does represent which kind of url it is. One of the following: STREAM, REDIRECT, PLAYLIST. | YES |
error |
string | URL to the homepage of the stream, so you can direct the user to a page with more information about the stream. | YES |
creation_iso8601 |
ISO-8601 datetime string | Date and time of step creation | NO |
Lists
List of radio stations
Syntax:
/json/stations/byuuid/{searchterm}
/json/stations/byname/{searchterm}
/json/stations/bynameexact/{searchterm}
/json/stations/bycodec/{searchterm}
/json/stations/bycodecexact/{searchterm}
/json/stations/bycountry/{searchterm}
/json/stations/bycountryexact/{searchterm}
/json/stations/bycountrycodeexact/{searchterm}
/json/stations/bystate/{searchterm}
/json/stations/bystateexact/{searchterm}
/json/stations/bylanguage/{searchterm}
/json/stations/bylanguageexact/{searchterm}
/json/stations/bytag/{searchterm}
/json/stations/bytagexact/{searchterm}
/xml/stations/byuuid/{searchterm}
/xml/stations/byname/{searchterm}
/xml/stations/bynameexact/{searchterm}
/xml/stations/bycodec/{searchterm}
/xml/stations/bycodecexact/{searchterm}
/xml/stations/bycountry/{searchterm}
/xml/stations/bycountryexact/{searchterm}
/xml/stations/bycountrycodeexact/{searchterm}
/xml/stations/bystate/{searchterm}
/xml/stations/bystateexact/{searchterm}
/xml/stations/bylanguage/{searchterm}
/xml/stations/bylanguageexact/{searchterm}
/xml/stations/bytag/{searchterm}
/xml/stations/bytagexact/{searchterm}
/csv/stations/byuuid/{searchterm}
/csv/stations/byname/{searchterm}
/csv/stations/bynameexact/{searchterm}
/csv/stations/bycodec/{searchterm}
/csv/stations/bycodecexact/{searchterm}
/csv/stations/bycountry/{searchterm}
/csv/stations/bycountryexact/{searchterm}
/csv/stations/bycountrycodeexact/{searchterm}
/csv/stations/bystate/{searchterm}
/csv/stations/bystateexact/{searchterm}
/csv/stations/bylanguage/{searchterm}
/csv/stations/bylanguageexact/{searchterm}
/csv/stations/bytag/{searchterm}
/csv/stations/bytagexact/{searchterm}
/m3u/stations/byuuid/{searchterm}
/m3u/stations/byname/{searchterm}
/m3u/stations/bynameexact/{searchterm}
/m3u/stations/bycodec/{searchterm}
/m3u/stations/bycodecexact/{searchterm}
/m3u/stations/bycountry/{searchterm}
/m3u/stations/bycountryexact/{searchterm}
/m3u/stations/bycountrycodeexact/{searchterm}
/m3u/stations/bystate/{searchterm}
/m3u/stations/bystateexact/{searchterm}
/m3u/stations/bylanguage/{searchterm}
/m3u/stations/bylanguageexact/{searchterm}
/m3u/stations/bytag/{searchterm}
/m3u/stations/bytagexact/{searchterm}
/pls/stations/byuuid/{searchterm}
/pls/stations/byname/{searchterm}
/pls/stations/bynameexact/{searchterm}
/pls/stations/bycodec/{searchterm}
/pls/stations/bycodecexact/{searchterm}
/pls/stations/bycountry/{searchterm}
/pls/stations/bycountryexact/{searchterm}
/pls/stations/bycountrycodeexact/{searchterm}
/pls/stations/bystate/{searchterm}
/pls/stations/bystateexact/{searchterm}
/pls/stations/bylanguage/{searchterm}
/pls/stations/bylanguageexact/{searchterm}
/pls/stations/bytag/{searchterm}
/pls/stations/bytagexact/{searchterm}
Results:
Details at struct 'Station'
[
{
"name": "..",
...
},
{
...
},
{
...
},
...
]
<result>
<station name=".." ... >
<station name=".." ... >
<station name=".." ... >
...
</result>
changeuuid,stationuuid,serveruuid,name,url,url_resolved,homepage,favicon,tags,country,countrycode,iso_3166_2,state,language,languagecodes,votes,lastchangetime,lastchangetime_iso8601,codec,bitrate,hls,lastcheckok,lastchecktime,lastchecktime_iso8601,lastcheckoktime,lastcheckoktime_iso8601,lastlocalchecktime,lastlocalchecktime_iso8601,clicktimestamp,clicktimestamp_iso8601,clickcount,clicktrend,ssl_error,geo_lat,geo_long,has_extended_info
...
...
#EXTM3U
#RADIOBROWSERUUID:...
#EXTINF:...
...
...
[playlist]
NumberOfEntries=...
Title1=...
File1=...
...
Example:
/json/stations/byname/jazz
/json/stations/bycountry/austria
/json/stations/bycountryexact/austria
/json/stations/bycountrycodeexact/at
/json/stations/bytagexact/320kbps
/json/stations/bytagexact/320kbps
/xml/stations/byname/jazz
/xml/stations/bycountry/austria
/xml/stations/bycountryexact/austria
/xml/stations/bycountrycodeexact/at
/xml/stations/bytagexact/320kbps
/xml/stations/bytagexact/320kbps
/csv/stations/byname/jazz
/csv/stations/bycountry/austria
/csv/stations/bycountryexact/austria
/csv/stations/bycountrycodeexact/at
/csv/stations/bytagexact/320kbps
/csv/stations/bytagexact/320kbps
/m3u/stations/byname/jazz
/m3u/stations/bycountry/austria
/m3u/stations/bycountryexact/austria
/m3u/stations/bycountrycodeexact/at
/m3u/stations/bytagexact/320kbps
/m3u/stations/bytagexact/320kbps
/pls/stations/byname/jazz
/pls/stations/bycountry/austria
/pls/stations/bycountryexact/austria
/pls/stations/bycountrycodeexact/at
/pls/stations/bytagexact/320kbps
/pls/stations/bytagexact/320kbps
A list of radio stations that match the search. The variants with "exact" will only search for perfect matches, and others will search for the station whose attribute contains the search term.
Please use 'station click counter' API call to let the click be counted, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
order |
name |
name , url , homepage , favicon , tags , country , state , language , votes , codec , bitrate , lastcheckok , lastchecktime , clicktimestamp , clickcount , clicktrend , changetimestamp , random |
name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
reverse the result list if set to true |
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
hidebroken |
false |
true , false |
do list/not list broken stations |
List of all radio stations
Syntax:
/json/stations
/xml/stations
/csv/stations
/m3u/stations
/pls/stations
Results:
An array of struct 'Station'
Example:
/json/stations
/xml/stations
/csv/stations
/m3u/stations
/pls/stations
A list of all radio stations. Please use the 'station click counter' API call to let the click be counted, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
order |
name |
name , url , homepage , favicon , tags , country , state , language , votes , codec , bitrate , lastcheckok , lastchecktime , clicktimestamp , clickcount , clicktrend , changetimestamp , random |
name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
reverse the result list if set to true |
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
hidebroken |
false |
true , false |
do list/not list broken stations |
List of codecs
Syntax:
/json/codecs
/json/codecs/<filter>
/xml/codecs
/xml/codecs/<filter>
/csv/codecs
/csv/codecs/<filter>
Results:
[
{
"name": "AAC",
"stationcount": "34"
},
{
"name": "AAC+",
"stationcount": "367"
},
...
]
<result>
<codec name="AAC" stationcount="34"/>
<codec name="AAC+" stationcount="367"/>
...
</result>
name,stationcount
AAC,2202
AAC+,5487
"AAC+,H.264",6
...
Example:
/json/codecs
/json/codecs/aac
/xml/codecs
/xml/codecs/aac
/csv/codecs
/csv/codecs/aac
A JSON-encoded list of all codecs in the database. If a filter is given, it will only return the ones containing the filter as substring, supported output formats: JSON, XML, CSV
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
order |
name |
name , stationcount |
name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
reverse the result list if set to true |
hidebroken |
false |
true , false |
do not count broken stations |
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,.... |
number of returned datarows (stations) starting with offset |
List of countries
Syntax
/json/countries
/json/countries/<filter>
/xml/countries
/xml/countries/<filter>
/csv/countries
/csv/countries/<filter>
Result
[
{
"name": "Albania",
"stationcount": "1"
},
{
"name": "Argentina",
"stationcount": "5"
},
...
]
<result>
<country name="Albania" stationcount="1"/>
<country name="Argentina" stationcount="5"/>
...
</result>
name,stationcount
Albania,1
Argentina,5
...
Example:
/json/countries
/json/countries/aus
/xml/countries
/xml/countries/aus
/csv/countries
/csv/countries/aus
A JSON-encoded list of all countries in the database. If a filter is given, it will only return the ones containing the filter as substring, supported output formats: JSON, XML, CSV.
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
order |
name |
name , stationcount |
name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
reverse the result list if set to true |
hidebroken |
false |
true , false |
do not count broken stations |
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
List of country codes
Syntax:
/json/countrycodes
/json/countrycodes/<filter>
/xml/countrycodes
/xml/countrycodes/<filter>
/csv/countrycodes
/csv/countrycodes/<filter>
Result:
[
{
"name": "AT",
"stationcount": "1"
},
{
"name": "DE",
"stationcount": "5"
},
...
]
<result>
<country name="AT" stationcount="1"/>
<country name="DE" stationcount="5"/>
...
</result>
name,stationcount
AT,1
DE,5
...
Example:
/json/countrycodes
/json/countrycodes/at
/xml/countrycodes/
/xml/countrycodes/at
/csv/countrycodes/
/csv/countrycodes/at
A JSON-encoded list of all countries in the database. If a filter is given, it will only return the ones containing the filter as substring, supported output formats: JSON, XML, CSV
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
order |
name |
name , stationcount |
name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
reverse the result list if set to true |
hidebroken |
false |
true , false |
do not count broken stations |
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned data rows (stations) starting with offset |
List of states
Syntax:
/json/states
/json/states/<filter>
/json/states/<country>/<filter>
/xml/states
/xml/states/<filter>
/xml/states/<country>/<filter>
/csv/states
/csv/states/<filter>
/csv/states/<country>/<filter>
Results:
[
{
"name": "Alabama",
"country": "United States of America",
"stationcount": "6"
},
{
"name": "Alberta",
"country": "Canada",
"stationcount": "2"
},
...
]
<result>
<state name="Alabama" country="United States of America" stationcount="6"/>
<state name="Alberta" country="Canada" stationcount="2"/>
...
</result>
name,country,stationcount
Alabama,United States of America,6
Alberta,Canada,2
Example:
/json/states
/json/states/ber
/json/states/Germany/ber
/xml/states
/xml/states/ber
/xml/states/Germany/ber
/csv/states
/csv/states/ber
/csv/states/Germany/ber
A JSON-encoded list of all states in the database. Countries are divided into states. If a filter is given, it will only return the ones containing the filter as substring. If a country is given, it will only display states in this country, supported output formats: JSON, XML, CSV
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
order |
name |
name , stationcount |
name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
reverse the result list if set to true |
hidebroken |
false |
true , false |
do not count broken stations |
country |
string | OPTIONAL, filter states by country name | |
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,.... |
number of returned datarows (stations) starting with offset |
List of languages
Syntax:
/json/languages
/json/languages/<filter>
/xml/languages
/xml/languages/<filter>
/csv/languages
/csv/languages/<filter>
Results:
[
{
"name": "albanian",
"iso_639": "sq",
"stationcount": "1"
},
{
"name": "american english",
"iso_639": null,
"stationcount": "8"
},
...
]
<result>
<language name="albanian" iso_639="sq" stationcount="1"/>
<language name="american english" stationcount="8"/>
...
</result>
name,iso_639,stationcount
albanian,sq,1
american english,,8
...
Example:
/json/languages
/json/languages/ger
/xml/languages
/xml/languages/ger
/csv/languages
/csv/languages/ger
A JSON-encoded list of all languages in the database. If a filter is given, it will only return the ones containing the filter as substring, supported output formats: JSON, XML, CSV
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
order |
name |
name , stationcount |
name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
reverse the result list if set to true |
hidebroken |
false |
true , false |
do not count broken stations |
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
List of tags
Syntax:
/json/tags
/json/tags/<filter>
/xml/tags
/xml/tags/<filter>
/csv/tags
/csv/tags/<filter>
Results:
[
{
"name": "00s",
"stationcount": "3"
},
{
"name": "10s",
"stationcount": "1"
},
..
]
<result>
<tag name="00s" stationcount="3"/>
<tag name="10s" stationcount="1"/>
...
</result>
name,stationcount
00s,3
10s,1
Example:
/json/tags
/json/tags/jazz
/xml/tags
/xml/tags/jazz
/csv/tags
/csv/tags/jazz
A JSON-encoded list of all tags in the database. If a filter is given, it will only return the ones containing the filter as substring, supported output formats: JSON, XML, CSV
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
order |
name |
name , stationcount |
name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
reverse the result list if set to true |
hidebroken |
false |
true , false |
do not count broken stations |
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 | 0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
List of station clicks
Syntax:
/json/clicks
/json/clicks/stationuuid
/xml/clicks
/xml/clicks/stationuuid
/csv/clicks
/csv/clicks/stationuuid
Results:
[
{
"stationuuid":"963134e8-0601-11e8-ae97-52543be04c81",
"clickuuid":"ce9ad7bd-34bf-11ea-ac52-52543be04c81",
"clicktimestamp_iso8601":"2020-01-11T23:14:58Z",
"clicktimestamp":"2020-01-11 23:14:58"
},
{
"stationuuid":"2a70c205-4850-11e8-b1b0-52543be04c81",
"clickuuid":"cf49f517-34bf-11ea-ac52-52543be04c81",
"clicktimestamp_iso8601":"2020-01-11T23:15:00Z"
"clicktimestamp":"2020-01-11 23:15:00"
},
...
]
<click
stationuuid="961fa288-0601-11e8-ae97-52543be04c81"
clickuuid="87a69149-34c1-11ea-ac52-52543be04c81"
clicktimestamp_iso8601="2020-01-11T23:27:18Z"
clicktimestamp="2020-01-11 23:27:18"
/>
<click
stationuuid="7a25bf68-1dbe-11ea-a955-52543be04c81"
clickuuid="a25e5fb6-34c1-11ea-ac52-52543be04c81"
clicktimestamp_iso8601="2020-01-11T23:28:03Z"
clicktimestamp="2020-01-11 23:28:03"
/>
stationuuid,clickuuid,clicktimestamp_iso8601,clicktimestamp
961fa288-0601-11e8-ae97-52543be04c81,87a69149-34c1-11ea-ac52-52543be04c81,2020-01-11T23:27:18Z,2020-01-11 23:27:18
7a25bf68-1dbe-11ea-a955-52543be04c81,a25e5fb6-34c1-11ea-ac52-52543be04c81,2020-01-11T23:28:03Z,2020-01-11 23:28:03
Example:
/json/clicks
/json/clicks?seconds=3600
/xml/clicks
/xml/clicks?seconds=3600
/csv/clicks
/csv/clicks?seconds=3600
A list of station clicks. If a station UUID is provided, only clicks of the station will be returned. If a station UUID is not provided, a list of all clicks of all stations will be sent (chunksize 10000), supported output formats: JSON, XML, CSV
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
stationuuid |
UUID | If set, only list check result of the matching station. | |
lastclickuuid |
UUID | If set, only list clicks after the click with the given uuid. Use this to continue chunked retrieval to get the next 10000 clicks. | |
seconds |
0 |
positive integer values | if >0 , it will only return history entries from the last 'seconds' seconds. |
List of station check results
Syntax:
/json/checks
/json/checks/stationuuid
/xml/checks
/xml/checks/stationuuid
/csv/checks
/csv/checks/stationuuid
Results:
Details at struct 'Station check'
Example:
/json/checks
/xml/checks
/csv/checks
A list of station check results. If a station UUID is provided, the whole history will be returned. If a station ID is not provided, a list of all last checks of all stations will be sent (without older check results), supported output formats: JSON, XML, CSV
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
stationuuid |
UUID | If set, only list check result of the matching station. | |
lastcheckuuid |
UUID | If set, only list checks after the check with the given check. | |
seconds |
0 |
positive integer values | if >0 , it will only return history entries from the last 'seconds' seconds. |
limit |
999999 |
0 ,1 ,2 ,3 ... |
number of returned datarows (checks) |
List of station check steps
Syntax:
/json/checksteps
/xml/checksteps
/csv/checksteps
Results:
Details at struct 'Check step'
<result>
<checkstep stepuuid=".." ... >
<checkstep stepuuid=".." ... >
...
</result>
stepuuid
...
...
Example:
/json/checksteps
/json/checksteps?uuids=01234567-89ab-cdef-0123-456789abcdef
/xml/checksteps
/xml/checksteps?uuids=01234567-89ab-cdef-0123-456789abcdef
/csv/checksteps
/csv/checksteps?uuids=01234567-89ab-cdef-0123-456789abcdef
A list of steps that needed to be done to finish a station check.
Supported output formats: JSON, XML, CSV
Parameters:
Name | Example | Description |
---|---|---|
uuids | 01234567-89ab-cdef-0123-456789abcdef,01234567-89ab-cdef-0123-456789abcdef |
MANDATORY, comma-separated list of UUIDs of stations, may be array in JSON |
Advanced station search
Syntax:
/json/stations/search
/xml/stations/search
/csv/stations/search
/m3u/stations/search
/pls/stations/search
Results:
Array of struct Station
Example:
/json/stations/search
/xml/stations/search
/csv/stations/search
/m3u/stations/search
/pls/stations/search
A list of radio stations that match the search. It will search for the station whose attribute contains the search term. Please use 'Count station click' API call to let the click be counted, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
name |
string | OPTIONAL, name of the station | |
nameExact |
false |
true , false |
OPTIONAL. True: only exact matches, otherwise all matches. |
country |
string | OPTIONAL, country of the station | |
countryExact |
false |
true , false |
OPTIONAL. True: only exact matches, otherwise all matches. |
countrycode |
string | OPTIONAL, 2-digit countrycode of the station (see ISO 3166-1 alpha-2). | |
state |
string | OPTIONAL, state of the station | |
stateExact |
false |
true , false |
OPTIONAL. True: only exact matches, otherwise all matches. |
language |
string | OPTIONAL, language of the station | |
languageExact |
false |
true , false |
OPTIONAL. True: only exact matches, otherwise all matches. |
tag |
string | OPTIONAL, a tag of the station | |
tagExact |
false |
true , false |
OPTIONAL. True: only exact matches, otherwise all matches. |
tagList |
string, string, ... | OPTIONAL. , a comma-separated list of tag. It can also be an array of string in JSON HTTP POST parameters. All tags in list have to match. | |
codec |
string | OPTIONAL, codec of the station | |
bitrateMin |
0 |
POSITIVE INTEGER | OPTIONAL, minimum of kbps for bitrate field of stations in result |
bitrateMax |
1000000 |
POSITIVE INTEGER | OPTIONAL, maximum of kbps for bitrate field of stations in result |
has_geo_info |
both | not set, true , false |
OPTIONAL, not set=display all, true =show only stations with geo_info, false =show only stations without geo_info |
has_extended_info |
both | not set, true , false |
OPTIONAL, not set=display all, true =show only stations which do provide extended information, false =show only stations without extended information |
is_https |
both | not set, true , false |
OPTIONAL, not set=display all, true =show only stations which have https url, false =show only stations that do stream unencrypted with http |
order |
name |
name , url , homepage , favicon , tags , country , state , language , votes , codec , bitrate , lastcheckok , lastchecktime , clicktimestamp , clickcount , clicktrend , changetimestamp , random |
OPTIONAL, name of the attribute the result list will be sorted by |
reverse |
false |
true , false |
OPTIONAL, reverse the result list if set to true |
offset |
0 |
POSITIVE INTEGER | OPTIONAL, starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
OPTIONAL, number of returned datarows (stations) starting with offset |
hidebroken |
false |
true , false |
do list/not list broken stations |
Search radio stations by URL
Syntax:
/json/stations/byurl
/xml/stations/byurl
/csv/stations/byurl
/m3u/stations/byurl
/pls/stations/byurl
Results:
Array of struct 'station'
Example:
/json/stations/byurl
/xml/stations/byurl
/csv/stations/byurl
/m3u/stations/byurl
/pls/stations/byurl
A list of radio stations that have an exact URL match, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Example value | Description |
---|---|---|
url |
http://this.is.a.link/test.mp3 |
MANDATORY, URL of the station |
Search radio stations by UUIDs
Syntax:
/json/stations/byuuid
/xml/stations/byuuid
/csv/stations/byuuid
/m3u/stations/byuuid
/pls/stations/byuuid
Results:
Array of struct 'station'
Example:
/json/stations/byuuid
/xml/stations/byuuid
/csv/stations/byuuid
/m3u/stations/byuuid
/pls/stations/byuuid
A list of radio stations that have an exact UUID match, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Example value | Description |
---|---|---|
uuids |
110e57c5-0601-11e8-ae97-52543be04c81,220e57c5-0601-11e8-ae97-52543be04c81,330e57c5-0601-11e8-ae97-52543be04c81 |
MANDATORY, comma-separated list of UUIDs |
Server config
Syntax:
/json/config
/xml/config
Results:
{
"check_enabled": false,
"prometheus_exporter_enabled": true,
"pull_servers": [
"http://www.radio-browser.info/webservice",
"http://de1.api.radio-browser.info"
],
"tcp_timeout_seconds": 10,
"broken_stations_never_working_timeout_seconds": 259200,
"broken_stations_timeout_seconds": 2592000,
"checks_timeout_seconds": 2592000,
"click_valid_timeout_seconds": 86400,
"clicks_timeout_seconds": 2592000,
"mirror_pull_interval_seconds": 300,
"update_caches_interval_seconds": 300,
"server_name": "gaia",
"server_location": "Datacenter 2 in coolstreet",
"server_country_code": "DE",
"check_retries": 5,
"check_batchsize": 100,
"check_pause_seconds": 60,
"api_threads": 5,
"cache_type": "redis",
"cache_ttl": 60
}
<config>
<check_enabled>false</check_enabled>
<prometheus_exporter_enabled>true</prometheus_exporter_enabled>
<pull_servers>
<url>http://www.radio-browser.info/webservice</url>
<url>http://de1.api.radio-browser.info</url>
</pull_servers>
<tcp_timeout_seconds>10</tcp_timeout_seconds>
<broken_stations_never_working_timeout_seconds>259200</broken_stations_never_working_timeout_seconds>
<broken_stations_timeout_seconds>2592000</broken_stations_timeout_seconds>
<checks_timeout_seconds>2592000</checks_timeout_seconds>
<click_valid_timeout_seconds>86400</click_valid_timeout_seconds>
<clicks_timeout_seconds>2592000</clicks_timeout_seconds>
<mirror_pull_interval_seconds>300</mirror_pull_interval_seconds>
<update_caches_interval_seconds>300</update_caches_interval_seconds>
<server_name>gaia</server_name>
<server_location>Datacenter 2 in coolstreet</server_location>
<server_country_code>DE</server_country_code>
<check_retries>5</check_retries>
<check_batchsize>100</check_batchsize>
<check_pause_seconds>60</check_pause_seconds>
<api_threads>5</api_threads>
<cache_type>redis</cache_type>
<cache_ttl>60</cache_ttl>
</config>
Example:
/json/config
/xml/config
The current active server config, supported output formats: JSON, XML
Server mirrors
Syntax:
/json/servers
Results:
[
{
"ip": "95.179.139.106",
"name": "nl1.api.radio-browser.info"
},
{
"ip": "188.68.62.16",
"name": "de1.api.radio-browser.info"
},
{
"ip": "2a03:4000:6:8077::1",
"name": "de1.api.radio-browser.info"
},
{
"ip": "2001:19f0:5001:32a4:5400:2ff:fe37:75c2",
"name": "nl1.api.radio-browser.info"
}
]
Example:
/json/servers
A list of server mirrors. A DNS look-up of all.api.radio-browser.info is performed followed by a reverse one for every result getting from the first request. This should be done on the client. ONLY USE THIS if your client is not able to do DNS look-ups, supported output formats: JSON
Prometheus monitoring
Syntax:
/metrics
Results:
# HELP radio_browser_clicks_last_hour Clicks in the last hour
# TYPE radio_browser_clicks_last_hour gauge
radio_browser_clicks_last_hour 0
# HELP radio_browser_stations_broken Count of stations that are broken
# TYPE radio_browser_stations_broken gauge
radio_browser_stations_broken 740
# HELP radio_browser_stations_working Count of stations that are working/usable
# TYPE radio_browser_stations_working gauge
radio_browser_stations_working 26514
# HELP radio_browser_stations_todo Count of stations that need are in the queue for checking
# TYPE radio_browser_stations_todo gauge
radio_browser_stations_todo 27254
# HELP radio_browser_stations_deletable_never_worked Count of stations that are in the list for deletion and which never worked
# TYPE radio_browser_stations_deletable_never_worked gauge
radio_browser_stations_deletable_never_worked 0
# HELP radio_browser_stations_deletable_were_working Count of stations that are in the list for deletion and which worked at some point
# TYPE radio_browser_stations_deletable_were_working gauge
radio_browser_stations_deletable_were_working 0
Example:
/metrics
Exporter for prometheus. It renders internal data about the server in a specific format that is readable by the time series database prometheus.
Server stats
Syntax:
/json/stats
/xml/stats
Results:
{
"supported_version": 1,
"software_version": "0.5.0",
"status": "OK",
"stations": 4047,
"stations_broken": 45,
"tags": 677,
"clicks_last_hour": 65,
"clicks_last_day": 1822,
"languages": 59,
"countries": 81
}
<result>
<stats
supported_version="1"
software_version="0.5.0"
status="OK"
stations="4047"
stations_broken="45"
tags="677"
clicks_last_hour="66"
clicks_last_day="1824"
languages="59"
countries="81"
/>
</result>
Example:
/json/stats
/xml/stats
Web service stats, supported output formats: JSON, XML
Modify
Add radio station
Syntax:
/json/add
/xml/add
Results:
{
"ok": true,
"message": "station was added",
"uuid": "550e8400-e29b-11d4-a716-446655440000"
}
<result>
<status ok="true"
message="station was added"
uuid="550e8400-e29b-11d4-a716-446655440000"
</result>
Example:
/json/add
/xml/add
Add a radio station to the database, supported output formats: JSON, XML
Parameters:
Name | Example value | Description |
---|---|---|
name |
Station Name |
MANDATORY, the name of the radio station. Max 400 chars. |
url |
http://this.is.an.url/stream.mp3 |
MANDATORY, the URL of the station |
homepage |
http://this.is.an.url/ |
the homepage URL of the station |
favicon |
http://this.is.an.url/favicon.ico |
the URL of an image file (jpg or png) |
countrycode |
AT |
The 2 letter countrycode of the country where the radio station is located |
state |
Vienna |
The name of the part of the country where the station is located |
language |
English |
The main language used in spoken text parts of the radio station |
tags |
pop,rock |
A list of tags separated by commas to describe the station |
geo_lat |
12.3456 |
The latitude of the stream location. Nullable. |
geo_long |
-12.3456 |
The longitude of the stream location. Nullable. |
Station click counter
Syntax:
/json/url/stationuuid
/xml/url/stationuuid
/m3u/url/stationuuid
/pls/url/stationuuid
Results:
{
"ok": "true",
"message": "retrieved station url",
"stationuuid": "9617a958-0601-11e8-ae97-52543be04c81",
"name": "Station name",
"url": "http://this.is.an.url"
}
<result>
<status
ok="true"
message="retrieved station url"
stationuuid="9617a958-0601-11e8-ae97-52543be04c81"
name="Station name"
url="http://this.is.an.url"
/>
</result>
#EXTM3U
#RADIOBROWSERUUID:9617a958-0601-11e8-ae97-52543be04c81
#EXTINF:1,Station name
http://this.is.an.url
[playlist]
NumberOfEntries=1
Title1=Station name
File1=http://this.is.an.url
Example:
/json/url/123
/xml/url/123
/m3u/url/123
/pls/url/123
Increase the click count of a station by one. This should be called everytime when a user starts playing a stream to mark the stream more popular than others. Every call to this endpoint from the same IP address and for the same station only gets counted once per day. The call will return detailed information about the stream, supported output formats: JSON, XML, PLS, M3U
Vote for a station
Syntax:
/json/vote/stationuuid
/xml/vote/stationuuid
Results:
{
"ok": true,
"message": "voted for station successfully"
}
<result>
<status ok="true" message="voted for station successfully"/>
</result>
Example:
/json/vote/123
/xml/vote/123
Increase the vote count for the station by one. Can only be done by the same IP address for one station every 10 minutes. If it works, the changed station will be returned as result, supported output formats: JSON, XML
Stations
Broken stations
/json/stations/broken
/json/stations/broken/rowcount
/xml/stations/broken
/xml/stations/broken/rowcount
/csv/stations/broken
/csv/stations/broken/rowcount
/m3u/stations/broken
/m3u/stations/broken/rowcount
/pls/stations/broken
/pls/stations/broken/rowcount
Results:
Array of struct 'station'
Example:
/json/stations/broken?limit=5
/json/stations/broken/5
/xml/stations/broken?limit=5
/xml/stations/broken/5
/csv/stations/broken?limit=5
/csv/stations/broken/5
/m3u/stations/broken?limit=5
/m3u/stations/broken/5
/pls/stations/broken?limit=5
/pls/stations/broken/5
A list of the stations that did not pass the connection test, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
Stations by clicks
Syntax:
/xml/stations/topclick
/xml/stations/topclick/rowcount
/json/stations/topclick
/json/stations/topclick/rowcount
/csv/stations/topclick
/csv/stations/topclick/rowcount
/m3u/stations/topclick
/m3u/stations/topclick/rowcount
/pls/stations/topclick
/pls/stations/topclick/rowcount
Results:
Array of struct 'station'
Example:
/json/stations/topclick
/json/stations/topclick/5
/xml/stations/topclick
/xml/stations/topclick/5
/csv/stations/topclick
/csv/stations/topclick/5
/m3u/stations/topclick
/m3u/stations/topclick/5
/pls/stations/topclick
/pls/stations/topclick/5
A list of the stations that are clicked the most. You can add a parameter with the number of wanted stations, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
hidebroken |
false |
true , false |
do list/not list broken stations |
Stations by recent clicks
Syntax:
/json/stations/lastclick
/json/stations/lastclick/rowcount
/xml/stations/lastclick
/xml/stations/lastclick/rowcount
/csv/stations/lastclick
/csv/stations/lastclick/rowcount
/m3u/stations/lastclick
/m3u/stations/lastclick/rowcount
/pls/stations/lastclick
/pls/stations/lastclick/rowcount
Results:
Array of struct 'station'
Example:
/json/stations/lastclick
/json/stations/lastclick/5
/xml/stations/lastclick
/xml/stations/lastclick/5
/csv/stations/lastclick
/csv/stations/lastclick/5
/m3u/stations/lastclick
/m3u/stations/lastclick/5
/pls/stations/lastclick
/pls/stations/lastclick/5
A list of stations that were clicked recently, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
hidebroken |
false |
true , false |
do list/not list broken stations |
Stations by recently changed
Syntax:
/json/stations/lastchange
/json/stations/lastchange/rowcount
/xml/stations/lastchange
/xml/stations/lastchange/rowcount
/csv/stations/lastchange
/csv/stations/lastchange/rowcount
/m3u/stations/lastchange
/m3u/stations/lastchange/rowcount
/pls/stations/lastchange
/pls/stations/lastchange/rowcount
Results:
Array of struct 'station'
Example:
/json/stations/lastchange
/json/stations/lastchange/5
/xml/stations/lastchange
/xml/stations/lastchange/5
/csv/stations/lastchange
/csv/stations/lastchange/5
/m3u/stations/lastchange
/m3u/stations/lastchange/5
/pls/stations/lastchange
/pls/stations/lastchange/5
A list of stations that were added or changed recently, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
hidebroken |
false |
true , false |
do list/not list broken stations |
Stations by votes
Syntax:
/json/stations/topvote
/json/stations/topvote/rowcount
/xml/stations/topvote
/xml/stations/topvote/rowcount
/csv/stations/topvote
/csv/stations/topvote/rowcount
/m3u/stations/topvote
/m3u/stations/topvote/rowcount
/pls/stations/topvote
/pls/stations/topvote/rowcount
Results:
Array of struct 'station'
Example:
/json/stations/topvote
/json/stations/topvote/5
/xml/stations/topvote
/xml/stations/topvote/5
/csv/stations/topvote
/csv/stations/topvote/5
/m3u/stations/topvote
/m3u/stations/topvote/5
/pls/stations/topvote
/pls/stations/topvote/5
A list of the highest-voted stations. You can add a parameter with the number of wanted stations, supported output formats: JSON, XML, CSV, M3U, PLS, XSPF, TTL
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
offset |
0 |
0 ,1 ,2 ,3 ,... |
starting value of the result list from the database. For example, if you want to do paging on the server side. |
limit |
100000 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (stations) starting with offset |
hidebroken |
false |
true , false |
do list/not list broken stations |
Old versions of stations
Syntax:
/json/stations/changed
/json/stations/changed/stationuuid
/xml/stations/changed
/xml/stations/changed/stationuuid
/csv/stations/changed
/csv/stations/changed/stationuuid
Example:
/json/stations/changed?lastchangeuuid=123&limit=10
/json/stations/changed/123
/xml/stations/changed?lastchangeuuid=123&limit=10
/xml/stations/changed/123
/csv/stations/changed?lastchangeuuid=123&limit=10
/csv/stations/changed/123
A list of old versions of stations from the last 30 days, and you can also retrieve the history of a single station by its ID. They are not visible through any other API calls. Station ID can be an ID or a station UUID, supported output formats: JSON, XML, CSV
Parameters:
Name | Default value | Possible value | Description |
---|---|---|---|
lastchangeuuid |
valid UUID | If defined, only show changes that happened after the one with this UUID. Is ignored if uuids is set. | |
limit |
999999 |
0 ,1 ,2 ,3 ,... |
number of returned datarows (changes) |