Where can you find reliable radio stream URLs?

Last updated: 2024-07-13

Recently I launched a radio stations directory on the AI Jingle Maker platform.


Radio owners have started signing up but some of them typed in a malfunctional streaming URL in the configuration of their entry, so I had to manually source proper streaming URLs.


FIND STREAMING URLs in THE SOURCE CODE


One of the best sources to find them in my experience has been onlineradiobox.com, especially for URLs not featured in the directories listed below.


Simply VIEW THE SOURCE CODE of the page of the radio for which you're looking for a functional stream, then search for "stream=" in the code and it will give you the direct streaming URL.


You can also search for the streaming URL in the source code of the website of the radio. Good indicators are "stream" or ".mp3".


WHERE CAN YOU FIND THE STREAM URL FOR A ZENO.FM RADIO STATION?


Open the page of the radio for which you want to find the stream URL.


For instance: https://zeno.fm/radio/ronimusicradio/ (one of the radios listed in our directory).


Start playing the stream.


Then right click and VIEW PAGE SOURCE.


Search for "stream=" in the code.


You'll then find a code snippet like this one:

content="https://zeno.fm/player.php/player.php?stream=https://stream.zeno.fm/c2afcra6obttv"


The URL I highlighted in yellow is the stream URL you can use for a direct access to the MP3 stream of the station.



USE A PROXY SERVER TO TRANSFORM HTTP URLs into HTTPs URLs


Sometimes you'll come across HTTP URLs which can't be forced to https (adding "s" to HTTP), e.g. http://91.121.59.45:10117/stream


If you want to integrate those streaming URLs into your own web app, you might need to create a PROXY SERVER, which will serve a HTTPS URL redirecting to the HTTP destination.


If you have some coding skills (and know how to leverage Generative AI to assist you), it's super easy.

You can create a Proxy Server with Flask in a few minutes.


I've just shared the full code of a Flask-based proxy server in the latest edition of my AI Coding Club newsletter.


Here's a copy. You can use it on Replit to create your own Proxy server. It works out of the box!


import os
from flask import Flask, request, Response
import requests
from flask_cors import CORS


app = Flask(__name__)
CORS(app)  # Enable CORS for all routes


@app.route('/')
def index():
        return '''
            <!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Adding responsiveness -->
                <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/tailwind.min.css" rel="stylesheet"> <!-- Adding Tailwind CSS via CDN -->
                <title>HTTP to HTTPS Stream Proxy</title>
            </head>
            <body class="p-8"> <!-- Adding some padding to the body -->
                <h1 class="text-4xl text-center mb-8">HTTP to HTTPS Stream Proxy</h1> <!-- Centering and increasing the size of the title -->
                <form action="/stream" method="get" class="mx-auto w-full max-w-xs"> <!-- Centering the form and limiting its width -->
                    <label for="url" class="block mb-2">Enter HTTP Stream URL:</label> <!-- Making the label a block element and adding some margin -->
                    <input type="text" id="url" name="url" required class="w-full p-2 mb-4 border border-gray-300 rounded"> <!-- Making the input full width, adding some padding, border and rounded corners -->
                    <button type="submit" class="w-full p-2 bg-blue-500 text-white rounded">Get HTTPS Stream</button> <!-- Making the button full width, adding some padding, blue background and white text -->
                </form>
            </body>
            </html>
        '''




@app.route('/stream')
def stream():
    url = request.args.get('url')
    if not url:
        return "No URL provided", 400
    response = requests.get(url, stream=True)
    return Response(response.iter_content(chunk_size=1024), content_type=response.headers['Content-Type'])


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))



STREAMING URLs DIRECTORIES


Other sources for radio streams include:



Help yourself & share your love for online radio!



ALL POSTS CREATE A JINGLE