StreamFree API
No account or API key needed.
Embedding a stream
Every stream can be dropped straight into an iframe pointed at /embed/{category}/{stream_key},
like this:
<iframe
src="https://streamfree.top/embed/soccer/ghana-vs-england"
width="100%"
height="480"
allow="fullscreen; picture-in-picture"
allowfullscreen
frameborder="0">
</iframe>
Don't try to sandbox it.
Finding what's live
If you don't want to hardcode stream keys, GET /api/v1/streams returns everything that's
currently up, each one already carrying an embed_url. Add ?category=soccer to
filter it down to one category:
fetch("https://streamfree.top/api/v1/streams?category=soccer")
.then(r => r.json())
.then(data => {
data.streams.forEach(stream => {
console.log(stream.name, stream.embed_url);
});
});
{
"count": 1,
"streams": [
{
"name": "Ghana vs England",
"category": "soccer",
"league": "FIFA World Cup",
"stream_key": "ghana-vs-england",
"match_timestamp": 1782244800,
"embed_url": "https://streamfree.top/embed/soccer/ghana-vs-england",
"thumbnail_url": "https://streamfree.top/thumbnails/soccer_ghana-vs-england"
}
]
}
Already know the key you're looking for? GET /api/v1/streams/{stream_key} does the same
thing for a single stream, and returns a 404 if it's not live:
fetch("https://streamfree.top/api/v1/streams/ghana-vs-england")
.then(r => r.json())
.then(stream => console.log(stream.embed_url));
{
"name": "Ghana vs England",
"category": "soccer",
"league": "FIFA World Cup",
"stream_key": "ghana-vs-england",
"match_timestamp": 1782244800,
"embed_url": "https://streamfree.top/embed/soccer/ghana-vs-england",
"thumbnail_url": "https://streamfree.top/thumbnails/soccer_ghana-vs-england"
}
And if you just need the list of category names to filter by, that's GET /api/v1/categories:
fetch("https://streamfree.top/api/v1/categories")
.then(r => r.json())
.then(data => console.log(data.categories));
{
"categories": ["soccer", "basketball", "hockey", "combat", "baseball", "football", "racing", "tennis", "cricket"]
}
A couple of notes
match_timestamp is a unix timestamp. A stream goes up shortly before it and comes back
down once the event ends, so a stream that embedded fine yesterday might 404 today. Also please don't
poll this on every page load, cache it for a bit on your end, my server will thank you.