← Back to TuneJourney

Developers

Add a lightweight, embeddable radio player to your website with the TuneJourney Widget. It streams live stations from around the globe and exposes rich metadata — current station, location, and now-playing info — so you can deeply integrate it into your own site experience.

Integration is free and unlimited. The only requirement is attribution via "Powered by TuneJourney.com," exactly as shown in the embed snippet below.

Widget Builder

Toggle settings below. The live preview and embed snippet update instantly.

Layout:
Mode:
Background:

Live Preview

<!-- TuneJourney Radio Widget -->
<div id="tunejourney-widget" style="display:inline-block;" data-theme="auto">
  <a href="https://tunejourney.com"
     target="_blank"
     title="TuneJourney - Explore the world through radio"
     rel="noopener"
     style="font-family:system-ui,sans-serif;font-size:11px;color:#4CB648;text-decoration:none;">
    Powered by TuneJourney.com
  </a>
</div>
<script src="https://tunejourney.com/widget/v1/embed.js" async></script>

Need a pure html/js static integration test page? See /widget/demo.html.

JavaScript API & Live Events

Use events for context updates (location, station metadata) and commands for control.

// Minimal host integration
window.TuneJourney.on("stationChanged", function (payload) {
  console.log("Journey:", payload.journey.name, payload.journey.coords);
  console.log("Station:", payload.station.name, payload.station.genres);
  console.log("Location:", payload.station.location);
});

window.TuneJourney.on("nowPlaying", function (payload) {
  console.log("Now playing metadata:", payload.nowPlaying);
});

window.TuneJourney.spin();
window.TuneJourney.pause();
window.TuneJourney.setVolume(0.5);
window.TuneJourney.getState();

Live Event Data

Play a station in the widget above. Events received via postMessage will appear here in real time.

No events yet — spin a station in the widget above to see live data here.

Troubleshooting

  • Ensure the script source is exactly https://tunejourney.com/widget/v1/embed.js.
  • Widget panels (volume, playlists, filters) expand inside iframe space, so the iframe must allow enough vertical room to expand.
  • Do not strip iframe sandbox attributes from the generated embed.