Bookmark Mirrors @ STRMFREE.LINK | Join Our Discord

Don't Lose Us

Domains can go down or get seized without warning. Bookmark our mirror directory now so you can always find us, no matter what happens to this one.

strmfree.link

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.