Radioplayer Developer Reference
Recommendation Endpoints
Technical reference for Radioplayer partner integrations.
Available factors
Recommendation Endpoints
- /{countryCode}/metadata/api/v2/recommendation
- /{countryCode}/metadata/api/v2/recommendation/aggregate
- /{countryCode}/metadata/api/v2/recommendation/services
- /{countryCode}/metadata/api/v4/recommendation/series
- Recommendations for Germany (countryCode = 276)
Available factors
To perform a recommendation request, at least one factor must be specified. If no factors or invalid factors are provided, an empty response will be returned.
Currently, the supported factors are:
- GEO : Recommends stations based on the user's location using predefined coverage areas. If in Germany (country code 276) , stations are selected based on PUBLICVALUE for the corresponding district, ignoring other factors. For other countries, stations are ranked by geographical relevance. More details on PUBLICVALUE are discussed in the section below: Recommendations for Germany).
- TRENDING : Suggests stations that have seen a recent increase in listeners. It identifies trending content by analyzing listener growth over a period of 15 minutes.
- AFFINITY : Recommends stations based on the user’s favourite stations and similarities with other users. By analyzing what similar users listen to, it provides personalized station suggestions that match user preferences.
- ONDEMAND : Provides recommendations for popular on-demand content , including podcasts and shows. It ranks content based on listener engagement trends , ensuring the most relevant and widely consumed episodes are suggested.
- PODCASTAFFINITY : Suggests podcasts based on the user’s favorite stations and past podcast interactions. It finds users with similar podcast preferences and recommends content aligned with their interests.
- TOP: Suggest the top stations and top podcasts for a brand/product type on the base of its listening sessions. If data available isn’t enough, the system will take data from TRENDING or in the third choice in random way.
Recommendation Endpoints
/{countryCode}/metadata/api/v2/recommendation
Description
This endpoint provides personalized recommendations for live radio stations and on-demand episodes (podcasts) based on the specified factors.
The recommendations are filtered based on the client's access permissions and the provided country code. Factors like trending stations, geographic location, and user preferences influence the results.
The response includes:
- Live radio stations: recommended based on specified factors that can be
TRENDING,GEO,AFFINITY. - On-demand episodes: recommended podcasts if
ONDEMANDis included as a factor.
Request Parameters
The request consists of a path parameter , a header parameter , and a request body.
Path ParametersName| Type| Required| Description
---|---|---|--- countryCode| string| Yes| The country code used to filter recommendations.
Header ParametersName| Type| Required| Description
---|---|---|--- Radioplayer-Client| string| Yes| A unique identifier for the client making the request. The response will be filtered to include only content that the client has access to.
Request Body Parameters
The request body is a JSON structure containing filters and preferences for generating recommendations.
| Name | Type | Required | Description |
|---|---|---|---|
guid | string | No | Used for backward compatibility but does not affect the recommendation results. |
rpId | string orinteger | No | The radio station ID to base recommendations on. |
presetRpIds | string orinteger | No | A list of station IDs to prioritize in recommendations. |
latitude | float | No | The latitude of the user (for geo-based recommendations). |
longitude | float | No | The longitude of the user (for geo-based recommendations). |
factors | string | Yes | A list of factors influencing recommendations (e.g., TRENDING, GEO, AFFINITY, ONDEMAND). |
artistPlayCounts | string | No | Currently not used in the recommendation engine. |
facebookArtists | string | No | Currently not used in the recommendation engine. |
Notes
- The
countryCodeparameter is required and must be included in the request. - The
Radioplayer-Clientheader is required to filter results based on client access. - The
factorslist is mandatory and determines what influences the recommendations. - If
ONDEMANDis included infactors, podcast episodes will be included in the response. - The
guidparameter is included for backward compatibility but does not affect recommendations. - Artist play counts and Facebook artists are currently not used in the recommendation engine.
Use case request body
{
"guid": "default-guid",
"latitude": 51.521129,
"longitude": -0.16768,
"factors": [
"GEO",
"TRENDING",
"AFFINITY",
"ONDEMAND"
],
"rpId":347
}
Response Format
The response includes recommended live radio stations and on-demand episodes (if ONDEMAND is specified as a factor).
Sample Response
{
"recommendations": [
{
"type": "SERVICE",
"id": "237",
"factors": [
"GEO",
"AFFINITY"
]
},
{
"type": "SERVICE",
"id": "500",
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"type": "SERVICE",
"id": "1478",
"factors": [
"GEO"
]
},
{
"id": "da6af5183bd0e873c663bcb09903b130944fbefe65be0666fd25a83b4f5b1115",
"factors": [
"GEO",
"TRENDING",
"AFFINITY",
"ONDEMAND"
],
"type": "ONDEMAND",
"rpId": "344",
"name": "Nibble Some Nuts",
"description": "Nuts are a rich source of fibre and polyphenols. They are also very high in fats and calories, but studies have shown that eating these bite-sized snacks won’t add to your waistline. These nutrient powerhouses could also help slow-down the ageing process. Research has found that walnut eaters live, on average, over a year longer than those who don’t. What’s more, adding nuts to your diet can help your brain! Michael Mosley is joined by Dr Sze-Yen Tan from Deakin University in Australia who reveals how eating nuts can benefit the brain, and why eating moderate amounts of nuts won’t add to your waistline. A recent study of his found that people who ate nuts performed better in cognitive tests and had improved short-term memory. Meanwhile, our volunteer Emma swaps out her usual snack for a handful of mixed nuts!",
"longDescriptions": [
{
"value": "Nuts are a rich source of fibre and polyphenols. They are also very high in fats and calories, but studies have shown that eating these bite-sized snacks won’t add to your waistline. These nutrient powerhouses could also help slow-down the ageing process. Research has found that walnut eaters live, on average, over a year longer than those who don’t. What’s more, adding nuts to your diet can help your brain! Michael Mosley is joined by Dr Sze-Yen Tan from Deakin University in Australia who reveals how eating nuts can benefit the brain, and why eating moderate amounts of nuts won’t add to your waistline. A recent study of his found that people who ate nuts performed better in cognitive tests and had improved short-term memory. Meanwhile, our volunteer Emma swaps out her usual snack for a handful of mixed nuts!",
"language": "en"
}
],
"onDemandStreams": [
{
"player": "http://www.bbc.co.uk/programmes/m001jkq4",
"audioStreams": [
{
"streamSource": {
"url": "http://open.live.bbc.co.uk/mediaselector/6/redir/version/2.0/mediaset/audio-nondrm-download-rss/proto/http/vpid/p0f48wqs.mp3",
"mimeValue": "audio/mpeg"
},
"bitRate": {
"target": 0,
"variable": false
}
}
],
"duration": 874000,
"availableStart": "2023-02-22T09:00:00Z",
"availableStop": "2025-02-11T16:00:10Z"
}
],
"genres": [],
"series": {
"id": "8288"
},
"serviceName": "BBC Radio 4",
"multimedia": [
{
"type": "logo_unrestricted",
"url": "http://ichef.bbci.co.uk/images/ic/3000x3000/p0hzv911.jpg",
"width": 1400,
"height": 1400,
"language": "en",
"mimeValue": "image/jpeg",
"index": 0
}
],
"alphanumericKey": "j",
"mediumNames": [
{
"value": "Nibble Some Nuts",
"language": "en"
}
],
"longNames": [
{
"value": "Nibble Some Nuts",
"language": "en"
}
],
"links": [
{
"url": "http://open.live.bbc.co.uk/mediaselector/6/redir/version/2.0/mediaset/audio-nondrm-download-rss/proto/http/vpid/p0f48wqs.mp3",
"mimeValue": "audio/mpeg",
"index": 0,
"language": "en"
}
],
"keywords": []
}
]
}
/{countryCode}/metadata/api/v2/recommendation/aggregate
Description
This endpoint provides aggregated recommendations for live radio stations and on-demand episodes (podcasts), including a list of trending station IDs.
The recommendations are filtered based on the client's access permissions and the provided country code. Factors such as trending stations, geographic location, and user preferences influence the results.
Request Parameters
The request consists of a path parameter , a header parameter , and a request body.
Path ParametersName| Type| Required| Description
---|---|---|--- countryCode| string| Yes| The country code used to filter recommendations.
Header ParametersName| Type| Required| Description
---|---|---|--- Radioplayer-Client| string| Yes| A unique identifier for the client making the request. The response will be filtered to include only content that the client has access to.
Request Body
The request body is a JSON structure containing filters and preferences for generating recommendations.
| Name | Type | Required | Description |
|---|---|---|---|
guid | string | No | Used for backward compatibility , but does not affect the recommendation results. |
rpId | string orinteger | No | The radio station ID to base recommendations on. |
presetRpIds | string orinteger | No | A list of station IDs to prioritize in recommendations. |
latitude | float | No | The latitude of the user (for geo-based recommendations). |
longitude | float | No | The longitude of the user (for geo-based recommendations). |
factors | string | Yes | A list of factors influencing recommendations (TRENDING, GEO, AFFINITY, ONDEMAND). |
artistPlayCounts | string | No | Currently not used in the recommendation engine. |
facebookArtists | string | No | Currently not used in the recommendation engine. |
Notes
- The
countryCodeparameter is required and must be included in the request. - The
Radioplayer-Clientheader is required to filter results based on client access. - The request format is identical to
/metadata/api/v2/recommendation. - The
factorslist is mandatory and determines what influences the recommendations. - If
ONDEMANDis included infactors, podcast episodes will be included in the response. - Artist play counts and Facebook artists are currently not used in the recommendation engine.
- The
guidparameter is included for backward compatibility but does not affect recommendations.
Response Format
The response includes recommended live radio stations, on-demand episodes , and a list of trending station IDs.
Sample Response
{
"trending": [
"500",
"260",
"516",
"258",
"255",
"100",
"257",
"521",
"232",
"291",
"1541",
"1257",
"101",
"405",
"550"
],
"recommendations": [
{
"type": "SERVICE",
"id": "237",
"factors": [
"GEO",
"AFFINITY"
]
},
{
"type": "SERVICE",
"id": "500",
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"type": "SERVICE",
"id": "1478",
"factors": [
"GEO"
]
},
{
"id": "da6af5183bd0e873c663bcb09903b130944fbefe65be0666fd25a83b4f5b1115",
"factors": [
"GEO",
"TRENDING",
"AFFINITY",
"ONDEMAND"
],
"type": "ONDEMAND",
"rpId": "344",
"name": "Nibble Some Nuts",
"description": "Nuts are a rich source of fibre and polyphenols. They are also very high in fats and calories, but studies have shown that eating these bite-sized snacks won’t add to your waistline. These nutrient powerhouses could also help slow-down the ageing process. Research has found that walnut eaters live, on average, over a year longer than those who don’t. What’s more, adding nuts to your diet can help your brain! Michael Mosley is joined by Dr Sze-Yen Tan from Deakin University in Australia who reveals how eating nuts can benefit the brain, and why eating moderate amounts of nuts won’t add to your waistline. A recent study of his found that people who ate nuts performed better in cognitive tests and had improved short-term memory. Meanwhile, our volunteer Emma swaps out her usual snack for a handful of mixed nuts!",
"longDescriptions": [
{
"value": "Nuts are a rich source of fibre and polyphenols. They are also very high in fats and calories, but studies have shown that eating these bite-sized snacks won’t add to your waistline. These nutrient powerhouses could also help slow-down the ageing process. Research has found that walnut eaters live, on average, over a year longer than those who don’t. What’s more, adding nuts to your diet can help your brain! Michael Mosley is joined by Dr Sze-Yen Tan from Deakin University in Australia who reveals how eating nuts can benefit the brain, and why eating moderate amounts of nuts won’t add to your waistline. A recent study of his found that people who ate nuts performed better in cognitive tests and had improved short-term memory. Meanwhile, our volunteer Emma swaps out her usual snack for a handful of mixed nuts!",
"language": "en"
}
],
"onDemandStreams": [
{
"player": "http://www.bbc.co.uk/programmes/m001jkq4",
"audioStreams": [
{
"streamSource": {
"url": "http://open.live.bbc.co.uk/mediaselector/6/redir/version/2.0/mediaset/audio-nondrm-download-rss/proto/http/vpid/p0f48wqs.mp3",
"mimeValue": "audio/mpeg"
},
"bitRate": {
"target": 0,
"variable": false
}
}
],
"duration": 874000,
"availableStart": "2023-02-22T09:00:00Z",
"availableStop": "2025-02-11T16:00:10Z"
}
],
"genres": [],
"series": {
"id": "8288"
},
"serviceName": "BBC Radio 4",
"multimedia": [
{
"type": "logo_unrestricted",
"url": "http://ichef.bbci.co.uk/images/ic/3000x3000/p0hzv911.jpg",
"width": 1400,
"height": 1400,
"language": "en",
"mimeValue": "image/jpeg",
"index": 0
}
],
"alphanumericKey": "j",
"mediumNames": [
{
"value": "Nibble Some Nuts",
"language": "en"
}
],
"longNames": [
{
"value": "Nibble Some Nuts",
"language": "en"
}
],
"links": [
{
"url": "http://open.live.bbc.co.uk/mediaselector/6/redir/version/2.0/mediaset/audio-nondrm-download-rss/proto/http/vpid/p0f48wqs.mp3",
"mimeValue": "audio/mpeg",
"index": 0,
"language": "en"
}
],
"keywords": []
}
]
}
/{countryCode}/metadata/api/v2/recommendation/services
Description
This endpoint provides recommended live radio stations based on specified factors such as geographical relevance, user preferences, and trending stations.
The recommendations are filtered based on the client's access permissions and the provided country code.
Request Parameters
The request consists of a path parameter , a header parameter , and a request body.
Path ParametersName| Type| Required| Description
---|---|---|--- countryCode| string| Yes| The country code used to filter recommendations.
Header ParametersName| Type| Required| Description
---|---|---|--- Radioplayer-Client| string| Yes| A unique identifier for the client making the request. The response will be filtered to include only content that the client has access to.
Request Body
The request body is a JSON structure containing filters and preferences for generating recommendations.
| Name | Type | Required | Description |
|---|---|---|---|
guid | string | No | Used for backward compatibility , but does not affect the recommendation results. |
rpId | string or integer | No | The radio station ID to base recommendations on. |
presetRpIds | string orinteger | No | A list of station IDs to prioritize in recommendations. |
latitude | float | No | The latitude of the user (for geo-based recommendations). |
longitude | float | No | The longitude of the user (for geo-based recommendations). |
factors | string | Yes | A list of factors influencing recommendations (TRENDING, GEO, AFFINITY). ONDEMANDis automatically excluded. Update 03/02/2026: a new factor has been added: TOP. This works only if, at least, carmaker parameter is set. |
artistPlayCounts | string | No | Currently not used in the recommendation engine. |
product_type | string | No | Used for “TOP” factor. It can be one of: |
- RENAULT
- VOLVO
- BMW
- POLESTAR
- AUDI
05/02/2026 - New feature in production but works are in progress: the list of product types will be updated in the next future. interval| int| No| Used for “TOP” factor. It can be 7 (for the top retrieved from the last 7 days available from insights) or 30. Default: 30 limit| int| No| Used for “TOP” factor. It’s the number of results to be retrieved for “TOP”. Default: 10.
Notes
- The
countryCodeparameter is required and must be included in the request. - The
Radioplayer-Clientis required to filter results based on client access. - The request format remains the same as
/metadata/api/v2/recommendation. - The
factorslist is mandatory and determines what influences the recommendations. - The
ONDEMANDfactor is automatically removed from the request if provided, ensuring only live stations are returned. - Artist play counts and Facebook artists are currently not used in the recommendation engine.
- The
guidparameter is included for backward compatibility but does not affect recommendations. - The new “TOP ” factor works only if a Radioplayer-Client is associated to a product in the CMS or if product_type is specified.
Response Format
The response includes recommended live radio stations with their calculated scores and the factors influencing the recommendation.
Sample Response
{
"services": [
{
"id": "232",
"score": 1.0,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "210",
"score": 1.0,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "204",
"score": 1.0,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "101",
"score": 1.0,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "217",
"score": 1.0,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "205",
"score": 1.0,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "102",
"score": 1.0,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "221",
"score": 0.83,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "218",
"score": 0.79,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "206",
"score": 0.77,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "213",
"score": 0.77,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "212",
"score": 0.74,
"factors": [
"TRENDING",
"AFFINITY"
]
},
{
"id": "195",
"score": 0.71,
"factors": [
"AFFINITY"
]
},
{
"id": "215",
"score": 0.64,
"factors": [
"AFFINITY"
]
},
{
"id": "211",
"score": 0.64,
"factors": [
"AFFINITY"
]
},
{
"id": "114",
"score": 0.11,
"factors": [
"TRENDING"
]
},
{
"id": "186",
"score": 0.08,
"factors": [
"TRENDING"
]
},
{
"id": "229",
"score": 0.07,
"factors": [
"TRENDING"
]
}
]
}
/{countryCode}/metadata/api/v4/recommendation/series
Description
This endpoint provides recommended podcast series based on the PODCASTAFFINITY factor. If no valid recommendations are found, or if factors other than PODCASTAFFINITY (or additional factors alongside it) are provided, the API will return a random selection of podcasts from the database.
The recommendations are filtered based on the client's access permissions and the provided country code.
Request Parameters
The request consists of a path parameter , a header parameter , and a request body.
Path ParametersName| Type| Required| Description
---|---|---|--- countryCode| string| Yes| The country code used to filter recommendations.
Header ParametersName| Type| Required| Description
---|---|---|--- Radioplayer-Client| string| Yes| A unique identifier for the client making the request. The response will be filtered to include only content that the client has access to.
Request Body
The request body is a JSON structure containing filters and preferences for generating podcast recommendations.
| Name | Type | Required | Description |
|---|---|---|---|
guid | string | No | Used for backward compatibility , but does not affect the recommendation results. |
rpId | string , int | No | The radio station ID to base recommendations on. |
latitude | float | No | The latitude of the user (for geo-based recommendations). |
longitude | float | No | The longitude of the user (for geo-based recommendations). |
factors | string | Yes | The only accepted factors for this request is PODCASTAFFINITY and TOP. If other factors are provided, recommendations will be empty. |
series | array | No | This field accepts either a list of strings representing the podcast series IDs or a list of series objects. Each series object contains: |
- rpId (string) → The station ID that owns the series. - seriesId (string) → The unique identifier of the podcast series. presetRpIds | array of str, int | No | A list of station IDs to prioritize in recommendations. |
artistPlayCounts | string | No | Currently not used in the recommendation engine. |
product_type | string | No | Used for “TOP” factor. It can be one of: |
- RENAULT
- VOLVO
- BMW
- POLESTAR
- AUDI
05/02/2026 - New feature in production but works are in progress: the list of product types will be updated in the next future. interval| int| No| Used for “TOP” factor. It can be 7 (for the top retrieved from the last 7 days available from insights) or 30. Default: 30 limit| int| No| Used for “TOP” factor. It’s the number of results to be retrieved for “TOP”. Default: 10.
Sample request body
{
"guid": "string",
"latitude": 0,
"longitude": 0,
"factors": [
"string"
],
"rpId": "string",
"presetRpIds": [
"string",
0
],
"series": [
{
"rpId": "string",
"seriesId": "string"
}
]
}
Notes
- The
countryCodeparameter is required and must be included in the request. - The
Radioplayer-Clientheader is required to filter results based on client access. - The only accepted factor is
PODCASTAFFINITY. If other factors are included or no relevant podcasts are found, a list of random podcasts available to the user will be returned. - The
seriesattribute contains a list of objects representing therpIdandseriesIdof the user’s favorited series. - Artist play counts and Facebook artists are currently not used in the recommendation engine.
- The
guidparameter is included for backward compatibility but does not affect recommendations.
Use case request body
{
"guid": "F47BB9AC-0ED8-432D-8CBE-93EB1891E91E",
"rpId": "228",
"latitude": "51.6126875",
"longitude": "-0.2079375",
"factors": ["PODCASTAFFINITY"],
"presetRpIds": ["228", "1162", "1396"],
"series": [ { "rpId": "1004", "seriesId" : "1604"}]
}
Response Format
The response includes recommended podcast series with their service, genre, and image details.
Sample Response
{
"series": [
{
"type": "SERIES",
"factors": [
"PODCASTAFFINITY"
],
"id": "8604",
"rpId": "350",
"name": "Witness History: Archive 2014",
"description": "The story of our times told by the people who were there.",
"series": {
"id": "8604"
},
"service": {
"id": "350",
"name": "BBC World Service"
},
"genre": [],
"image": {
"url": "http://ichef.bbci.co.uk/images/ic/3000x3000/p02q2n27.jpg",
"width": 1400,
"height": 1400,
"language": "en",
"mimeValue": "image/jpeg",
"index": 0,
"mediaType": "logo_unrestricted"
}
}
]
}
Recommendations for Germany (countryCode = 276)
When a recommendation request is made with countryCode set to 276 (Germany) and valid _latitude_ and _longitude_ values corresponding to a location in Germany, specific handling applies.
Description
If the GEO factor is included in the request, latitude and longitude are provided and define a point in Germany, station recommendations will be determined exclusively based on the PUBLICVALUE associated with the administrative district of the provided location.
Other factors such as TRENDING or AFFINITY will not be considered for station recommendations.
However, if the request includes on-demand content , all specified factors (e.g., TRENDING, AFFINITY, ONDEMAND) will still be applied for on-demand recommendations.
The PUBLICVALUE criteria ensure that station recommendations align with regionally relevant public broadcasting priorities.
Notes
If no valid latitude and longitude values are provided, the request will be processed using standard recommendation logic without applying PUBLICVALUE-based filtering.
The same request format as /metadata/api/v2/recommendation applies, but response content will be adjusted accordingly: station recommendations will be based solely on PUBLICVALUE, while on-demand content recommendations will consider all requested factors.
For more details on PUBLICVALUE , refer to the official page: Radioplayer PUBLICVALUE.
Use Case
Example request
If a request is sent to /276/metadata/api/v2/recommendation with the following body:
{
"guid": "1234abcd",
"latitude": 52.5,
"longitude": 13.4,
"factors": [
"GEO",
"TRENDING",
"AFFINITY",
"ONDEMAND"
]
}
Example response
The response will include station recommendations based solely on PUBLICVALUE, while on-demand recommendations will still consider all specified factors:
{
"recommendations": [
{
"type": "SERVICE",
"id": "25",
"factors": ["PUBLICVALUE"]
},
{
"type": "SERVICE",
"id": "1661",
"factors": ["PUBLICVALUE"]
},
// ...
{
"id": "815af063006faf9e2fee7af2bf64f0d76d442dc5a176d17ff8f0a0a30d7978ef",
"factors": [
"GEO",
"TRENDING",
"AFFINITY",
"ONDEMAND"
],
"type": "ONDEMAND",
"rpId": "2568",
"name": "Oma 24.01.2025",
"description": "",
"onDemandStreams": [
{
"player": "https://podcast.funkhaus-rosenheim.de/podcast/oma-24-01-2025/",
"audioStreams": [
{
"streamSource": {
"url": "https://podcast.funkhaus-rosenheim.de/podcast-download/7913/oma-24-01-2025.mp3",
"mimeValue": "audio/mpeg"
}
}
]
}
]
}
]
}