📡 Free Streams Embed API
Embed live sports streams on your website for free. Get access to all our live matches through a simple API and iframe embed.
🔗 API Endpoint
GET https://v3.velcuri.io/api/matches.json
Returns all live and upcoming matches with embed URLs. Updated in real-time. Cached for 2 minutes.
Example Response
{
"success": true,
"count": 15,
"matches": [
{
"id": 107,
"teams": "Real Madrid vs Barcelona",
"league": "LaLiga",
"start_time": "2026-03-10T20:00:00+00:00",
"status": "live",
"match_url": "https://v3.velcuri.io/match/107-real-madrid-vs-barcelona",
"channels": [
{
"channel_id": "1",
"language": "EN",
"embed_url": "https://v3.velcuri.io/embed/107/123"
},
{
"channel_id": "2",
"language": "ES",
"embed_url": "https://v3.velcuri.io/embed/107/124"
}
]
}
]
}
Response Fields
| Field | Type | Description |
|---|---|---|
id | integer | Unique match ID |
teams | string | Match title (Team A vs Team B) |
league | string | League / tournament name |
start_time | ISO 8601 | Match start time (UTC) |
status | string | live, upcoming, or finished |
match_url | URL | Full match page link |
channels[].embed_url | URL | Embed this on your site |
channels[].language | string | Stream language (EN, ES, etc.) |
📺 How to Embed
Copy the embed_url from the API response and use it in an iframe:
Step 1 — Fetch matches from the API
fetch('https://v3.velcuri.io/api/matches.json')
.then(r => r.json())
.then(data => {
data.matches.forEach(match => {
console.log(match.teams, match.channels[0].embed_url);
});
});
Step 2 — Embed the stream on your page
<iframe
src="https://v3.velcuri.io/embed/107/123"
width="100%"
height="500"
frameborder="0"
allowfullscreen
></iframe>
Step 3 — That's it!
The stream will play inside your website. Multiple channels are available per match — use different embed_url values for different languages or backup streams.
⚡ Quick Start (Full Example)
<!DOCTYPE html>
<html>
<head><title>Live Streams</title></head>
<body>
<h1>Live Matches</h1>
<div id="matches"></div>
<script>
fetch('https://v3.velcuri.io/api/matches.json')
.then(r => r.json())
.then(data => {
const container = document.getElementById('matches');
data.matches.forEach(match => {
if (match.channels.length === 0) return;
container.innerHTML += '<h2>' + match.teams + '</h2>'
+ '<p>' + match.league + ' | ' + match.status + '</p>'
+ '<iframe src="' + match.channels[0].embed_url
+ '" width="100%" height="500" frameborder="0" allowfullscreen></iframe>';
});
});
</script>
</body>
</html>
⚠️ Ads Notice: Our free embeds contain only 1 popup ad per session in the stream player. This is how we keep the service free for everyone.
🏆 Want Ad-Free Embeds?
$50/month
- ✅ Zero ads in all embed streams
- ✅ Priority support
- ✅ Unlimited embed usage
- ✅ All channels & languages
📋 Rules
- Do not attempt to remove or block the popup ad in the free embed.
- Do not hotlink or reverse-engineer the original stream URLs.
- Credit is appreciated but not required.
- We reserve the right to block abusive usage.