Overview
The StationFeed XML schema defines a common format that allows stations to keep their information up to date in the RadioTime database. It is ideal for submitting data for a large batch of stations or for stations that have frequent (daily or weekly) updates.
Basics
The StationFeed XSD can be found at the bottom of this page.
The XSD defines the schema for the StationFeed and can be used to validate your XML before submitting it. More documentation and some examples are also included below.
Once you’ve created the StationFeed XML detailing your stations send the URL of the document support@radiotime.com. We’ll process and apply your feed and can also add it to a periodic schedule to automatically pick up future changes.
Basic Station Fields
| Element |
Required |
Purpose |
| StationId |
Yes |
Owner assigned unique identifier for the station. It should not change over the lifetime of the station |
| Name |
Yes |
Name of the station |
| Slogan |
No |
Slogan or short description |
| Description |
No |
Full description |
| CallSign |
No |
Call letters (primarily for terrestrial broadcast stations) |
| Band |
Yes |
Identifies type of station (AM/FM/Stream/DAB/VHF/UHF). Use stream for internet only. |
| Frequency |
Yes (except for DAB or Stream) |
Broadcast frequency of the station |
| WebUrl |
No |
Website for the station |
| LastModifiedDate |
No |
Last time station info was updated |
| Location |
Yes |
Country is required (ISO 3166-2). City is required for terrestrial stations but is optional for internet only stations (may be used if the station is primarily focused on local content). |
| Genres |
No |
Supply your own genre names and we will try and map them to the appropriate RadioTime genre. Or use the RadioTime genre names |
Auxiliary Ids
Auxiliary ids are optional but can help us match your data to existing RadioTime stations.
| Type |
Description |
Purpose |
| FCC |
FCC Facility ID |
If we already have a station associated with the FCC Facility we can match it to your data |
| RadioTime |
RadioTime Station Id |
If the station already exists in RadioTime you can provide the RadioTime station id to help us match it |
Streams
| Element |
Required |
Purpose |
| MediaType |
Yes |
Identifies audio codec used by the stream (MP3,WM,AAC,OGG,Real,etc) |
| BitRate |
Yes |
Bitrate of the stream |
| StreamUrl |
Yes |
Url of the stream |
| Restrictions |
No |
Specify restrictions that apply to the stream |
Stream Restrictions
| Type |
Description |
| Location |
Stream is only available to users in the same country as the station |
| DeviceOnly |
Stream is not available on RadioTime.com but is available to media devices. Used in conjunction with the WebPlayer element of the station |
WebPlayer
| Element |
Required |
Purpose |
| PlayerUrl |
Yes |
URL of web player |
| Height |
Yes |
Window height in pixels of the web player |
| Width |
Yes |
Window width in pixels of the web player |
Logos
Generally only one logo needs to be provided and we will automatically resize it to the standard RadioTime logo dimensions. If you would rather submit your own sized logos you can include links to each.
| Element |
Required |
Purpose |
| LogoUrl |
Yes |
URL to the logo |
| LastModifiedDate |
No |
Not required but necessary to notify us that a logo has changed and needs to be updated |
Contact Info
| Element |
Required |
Purpose |
| ContactType |
Yes |
Identifies type type of contact. “General” is what we provide to users to contact the station. |
| Email |
No |
|
| PhoneNumber |
No |
|
| MailingAddress |
No |
|
| Twitter |
No |
Twitter id |
| Facebook |
No |
URL to facebook page |
Examples
- E1 – Internet streaming radio station (no AM/FM broadcast)
<Stations>
<Station>
<StationId>ABC123</StationId>
<Name>AB Radio</Name>
<Slogan>Best Of everything</Slogan>
<Description>Playing the best music of all time.</Description>
<Language>en</Language>
<Band>Stream</Band>
<TimeZone>America/Chicago</TimeZone>
<WebUrl>http://www.ab2513.net/</WebUrl>
<Location>
<Country>us</Country>
</Location>
<Genres>
<Genre>60s</Genre>
<Genre>70s</Genre>
<Genre>Oldies</Genre>
</Genres>
<Logos>
<Logo>
<LogoUrl>http://www.ab2513.net/logo/logo.png</LogoUrl>
<LastModifiedDate>2009-05-30T09:30:10Z</LastModifiedDate>
</Logo>
</Logos>
<Streams>
<Stream>
<MediaType>MP3</MediaType>
<BitRate>32</BitRate>
<StreamUrl>http://www.ab2513.net/low.pls</StreamUrl>
</Stream>
<Stream>
<MediaType>MP3</MediaType>
<BitRate>64</BitRate>
<StreamUrl>http://www.ab2513.net/med.pls</StreamUrl>
</Stream>
</Streams>
<Contacts>
<Contact type="General">
<Name>Request Line</Name>
<Phone>555-555-1234</Phone>
<Email>Joe@ab2513.net</Email>
<Twitter>abradio</Twitter>
<Facebook>http://facebook.com/abradio</Facebook>
</Contact>
</Contacts>
</Station>
</Stations>
- E2 – A FCC tracked FM station:
<Stations>
<Station>
<StationId>ABC123</StationId>
<Name>AB Radio</Name>
<Slogan>Best Of everything</Slogan>
<Description>Playing the best music of all time.</Description>
<Language>en</Language>
<CallSign>ABCD-FM</CallSign>
<Band>FM</Band>
<Frequency>107.1</Frequency>
<TimeZone>America/Chicago</TimeZone>
<WebUrl>http://www.ab2513.net/</WebUrl>
<AuxiliaryIds>
<AuxiliaryId type="FCC">123456</AuxiliaryId>
<AuxiliaryId type="RadioTime">10001</AuxiliaryId>
</AuxiliaryIds>
<Location>
<City>Dallas</City>
<State>TX</State>
<Country>us</Country>
</Location>
<Genres>
<Genre>60s</Genre>
<Genre>70s</Genre>
<Genre>Oldies</Genre>
</Genres>
<Logos>
<Logo>
<LogoUrl>http://www.ab2513.net/logo/logo.png</LogoUrl>
<LastModifiedDate>2009-05-30T09:30:10Z</LastModifiedDate>
</Logo>
</Logos>
<Streams>
<Stream>
<MediaType>MP3</MediaType>
<BitRate>32</BitRate>
<StreamUrl>http://www.ab2513.net/low.pls</StreamUrl>
</Stream>
<Stream>
<MediaType>MP3</MediaType>
<BitRate>64</BitRate>
<StreamUrl>http://www.ab2513.net/med.pls</StreamUrl>
</Stream>
</Streams>
<Contacts>
<Contact type="General">
<Name>Request Line</Name>
<Phone>555-555-1234</Phone>
<Email>Joe@ab2513.net</Email>
<Twitter>abradio</Twitter>
<Facebook>http://facebook.com/abradio</Facebook>
<MailingAddress>
<AddressLine1>AB Radio</AddressLine1>
<AddressLine2>123 Fake St.</AddressLine2>
<PostalCode>75231</PostalCode>
<Location>
<City>Dallas</City>
<State>TX</State>
<Country>us</Country>
</Location>
</MailingAddress>
</Contact>
</Contacts>
</Station>
</Stations>
- E3 – Station with a custom player for web users. Streams are also restricted to users in the US.
<Stations>
<Station>
<StationId>ABC123</StationId>
<Name>AB Radio</Name>
<Band>Stream</Band>
<Location>
<Country>us</Country>
</Location>
<Streams>
<Stream>
<MediaType>MP3</MediaType>
<BitRate>32</BitRate>
<StreamUrl>http://www.ab2513.net/low.pls</StreamUrl>
<Restrictions>
<Restriction type="DeviceOnly" />
<Restriction type="Location" />
</Restrictions>
</Stream>
<Stream>
<MediaType>MP3</MediaType>
<BitRate>64</BitRate>
<StreamUrl>http://www.ab2513.net/med.pls</StreamUrl>
<Restrictions>
<Restriction type="DeviceOnly" />
<Restriction type="Location" />
</Restrictions>
</Stream>
</Streams>
<WebPlayer>
<PlayerUrl>http://www.ab1513.net/player.html</PlayerUrl>
<Height>640</Height>
<Width>480</Width>
</WebPlayer>
</Station>
</Stations>
XSD
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2008 rel. 2 sp2 (http://www.altova.com) by David McIntosh (RadioTime) -->
<xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema" id="Stations">
<xs:element name="Location">
<xs:complexType>
<xs:sequence>
<xs:element name="City" type="xs:string" minOccurs="0" />
<xs:element name="State" type="xs:string" minOccurs="0" />
<xs:element name="Country" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en">ISO 3166-2 (2 char country code)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Stations">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Station">
<xs:complexType>
<xs:sequence>
<xs:element name="StationId" type="xs:string">
<xs:annotation>
<xs:documentation>Your unique station identifier</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Name" type="xs:string" />
<xs:element name="Slogan" type="xs:string" minOccurs="0" />
<xs:element name="Description" type="xs:string" minOccurs="0" />
<xs:element name="Language" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>ISO 639-1 2 char language code. Defaults is english if not specified.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CallSign" type="xs:string" minOccurs="0" />
<xs:element name="Band" type="Band">
<xs:annotation>
<xs:documentation>Method of station broadcast.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Frequency" type="xs:decimal" minOccurs="0">
<xs:annotation>
<xs:documentation>Optional for streaming stations. Required for broadcast.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TimeZone" type="xs:string" minOccurs="0" />
<xs:element name="WebUrl" type="xs:string" minOccurs="0" />
<xs:element name="LastModifiedDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="AuxiliaryIds" minOccurs="0">
<xs:annotation>
<xs:documentation>Extra identifying information to help map your station to other data sources or to an existing radiotime station.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="AuxiliaryId" nillable="false" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="AuxilliaryIdType" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="Location">
<xs:annotation>
<xs:documentation>Station source location or target market.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Genres" minOccurs="0">
<xs:annotation>
<xs:documentation>Genres you associate with your station.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Genre" nillable="false" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Name of genre</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="key" type="xs:string">
<xs:annotation>
<xs:documentation>Your internal genre identifier (optional for mapping reference if genre names will not be consistent)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Logos" minOccurs="0">
<xs:annotation>
<xs:documentation>Logos assosicated with the station. Logos will be converted to standard radiotime.com sizes: 145x145 , 145x70, 70x50</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Logo" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="LogoUrl" type="xs:string" />
<xs:element name="ImageType" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>png,gif,jpg,etc</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Height" type="xs:int" minOccurs="0"/>
<xs:element name="Width" type="xs:int" minOccurs="0" />
<xs:element name="LastModifiedDate" type="xs:dateTime" minOccurs="0">
<xs:annotation>
<xs:documentation>Optionally provide so we know when to update a station's existing logo.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Streams" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Stream" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="MediaType" type="MediaType" />
<xs:element name="BitRate" type="xs:int" />
<xs:element name="StreamUrl" type="xs:string" />
<xs:element name="Restrictions" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Restriction" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="type" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Contacts" minOccurs="0">
<xs:annotation>
<xs:documentation>List of contacts. Contact of type "General" is listed on the radiotime.com station page for users to contact the station.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Contact" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0" />
<xs:element name="Email" type="xs:string" minOccurs="0" />
<xs:element name="PhoneNumber" type="xs:string" minOccurs="0" />
<xs:element name="MailingAddress" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="AddressLine1" type="xs:string" minOccurs="0" />
<xs:element name="AddressLine2" type="xs:string" minOccurs="0" />
<xs:element name="AddressLine3" type="xs:string" minOccurs="0" />
<xs:element name="PostalCode" type="xs:string" minOccurs="0" />
<xs:element ref="Location" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Twitter" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Twitter Id</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Facebook" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Path to facebook page (omit domain and protocol)</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="type" type="ContactType" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="WebPlayer" minOccurs="0">
<xs:annotation>
<xs:documentation>Popup web player for web users. Specify if you don't want to use the default RadioTime web player. Height/Width control the size of the popup window</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="PlayerUrl" type="xs:string" />
<xs:element name="Height" type="xs:int" />
<xs:element name="Width" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:simpleType name="Band">
<xs:restriction base="xs:string">
<xs:enumeration value="FM" />
<xs:enumeration value="AM" />
<xs:enumeration value="VHF" />
<xs:enumeration value="UHF" />
<xs:enumeration value="Stream">
<xs:annotation>
<xs:documentation>For internet-only stations</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MediaType">
<xs:restriction base="xs:string">
<xs:enumeration value="MP3" />
<xs:enumeration value="FLV" />
<xs:enumeration value="WM" />
<xs:enumeration value="WMPro" />
<xs:enumeration value="WMVoice" />
<xs:enumeration value="WMVideo" />
<xs:enumeration value="Real" />
<xs:enumeration value="AAC" />
<xs:enumeration value="OGG" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AuxilliaryIdType">
<xs:restriction base="xs:string">
<xs:enumeration value="FCC">
<xs:annotation>
<xs:documentation>FCC Facility Id for broadcast stations tracked by the FCC.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="RadioTime">
<xs:annotation>
<xs:documentation>RadioTime station id for initial mapping of your station to an existing station in the RadioTime db. Specifying the first time will reduce delays in mapping your data to the correct RadioTime stations.</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ContactType">
<xs:restriction base="xs:string">
<xs:enumeration value="Administrative" />
<xs:enumeration value="Technical" />
<xs:enumeration value="General">
<xs:annotation>
<xs:documentation>Displayed to users wishing to contact the station.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Sales" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StreamRestriction">
<xs:restriction base="xs:string">
<xs:enumeration value="DeviceOnly">
<xs:annotation>
<xs:documentation>Stream is only available to device partners and not on the radiotime.com website. Use in conjunction with a WebPlayer to give radiotime.com users a listening option.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Location">
<xs:annotation>
<xs:documentation>Stream is restricted to users in the same country as the station.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="AuthRequired">
<xs:annotation>
<xs:documentation>User needs an authorized account to access the stream.</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:schema>