FIFA World Cup 2026 - Real-Time Events Notifications 🔥 Free
Pricing
Pay per usage
FIFA World Cup 2026 - Real-Time Events Notifications 🔥 Free
Free ⚽ World Cup 2026 live alerts straight to your webhook! Goals 🎯 (scorer + assist when available), cards, subs, kickoff/HT/FT & more!. One setup, real-time JSON POSTs all tournament long - no polling, no F5. Paste your webhook URL & never miss a moment! 🏆
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Azzouzana
Maintained by CommunityActor stats
3
Bookmarked
36
Total users
9
Monthly active users
9 days ago
Last modified
Categories
Share
⚽ World Cup 2026 — Real-Time Events Notifications
Hook up your app, bot, or automation to live match pings for World Cup 2026. This setup actor is the one-time “where should we send stuff?” step.
What you get 🔔
Once you’re in, your webhook gets instant POST notifications when the action hits the pitch:
- ⚽ Goals (scorer + assist when available)
- 🟨🟥 Cards (Red/Yellow)
- 🔄 Substitutions
- ⏱️ Match phases — kickoff, HT, 2nd half, FT, stoppage time
No polling. No F5 spam. Events land on your URL as they happen.
Discord? Paste a channel webhook URL — the stream actor formats each update as a ready-to-post content message (goals, cards, subs, HT/FT).
Live examples on Webhook.site
Real POSTs from the delivery service during live WC26 — open the inbox to inspect full JSONs: https://webhook.site/#!/view/01b18b65-2625-4129-88f1-3ca2cdfe0615
Each notification is a separate POST.
How it works (5 seconds setup)
- Create a free Apify account
- Run this actor with your webhook URL
- Optional: check Send test payload — dummy goal POST to confirm delivery
- We save it next to your Apify account
- Our delivery service fires live JSON during live matches
One setup run → notifications in the background all tournament long. Free. Easy.
Input
The Apify form has two sections: Webhook delivery (URL + test ping) and Notification events (what to send).
| Field | Default | Description |
|---|---|---|
webhookUrl | — | HTTPS endpoint — Discord, Webhook.site, or your API (required) |
testWebhook | true | Send a dummy goal POST now to verify whether your endpoint is reachable |
subscribeGoals | true | Goals (scorer + assist when available) |
subscribeYellowCards | false | Yellow cards |
subscribeRedCards | false | Red cards |
subscribePeriods | false | Match phases — kickoff, HT, 2nd half, FT, stoppage time |
subscribeSubstitutions | false | Substitutions |
{"webhookUrl": "https://your-server.com/notifications/wc26","testWebhook": true,"subscribeGoals": true,"subscribeYellowCards": false,"subscribeRedCards": true,"subscribePeriods": false,"subscribeSubstitutions": true}
Node, Python, Zapier, Make, n8n — if it accepts POST, you’re good. Discord works too — paste a channel webhook URL and the stream actor formats messages for you.
Setup test ping
When testWebhook is checked (default on), the setup actor POSTs one dummy notification — A similar shape to a real goal, marked test: true:
{"test": true,"message": "Ready to receive World Cup chaos!","channel": "test","match": "Test Home FC vs Test Away FC","summary": {"kind": "test","type": "goal","text": "Ready to receive World Cup chaos! — Test Player 0' (assist Test Assist) (1-0)","score": { "home": 1, "away": 0 }}}
Discord receives { "content": "⚽ Ready to receive World Cup chaos! — …" }. Setup still succeeds if the ping fails — check run output testWebhook.ok.
Output (dataset)
Successful run = one confirmation row:
{"subscriptionId": "uuid","apifyUserId": "your-apify-user-id","webhookUrl": "https://your-server.com/notifications/wc26","eventTypes": {"goals": true,"yellowCards": false,"redCards": true,"periods": false,"substitutions": true},"updatedAt": "2026-06-11T12:00:00.000Z","testWebhook": {"sent": true,"ok": true,"status": 200}}
Changing your URL
- One slot per Apify user
- Run again with a new URL → we swap it in
- No duplicate subscriptions cluttering things
What a notification looks like 📬
During live World Cup matches, the delivery service POSTs to your webhookUrl.
- Discord (
discord.com/api/webhooks/...) →{ "content": "..." }— formatted. - Everything else → full JSON payload below
HTTP request
POST /notifications/wc26 HTTP/1.1Host: your-server.comContent-Type: application/json{ ... body below ... }
You only receive event types you enabled at setup (subscribeGoals, subscribeYellowCards, etc.). If you left only Goals checked, you will not get cards or subs.
Below: JSON shapes from live delivery. For raw POSTs with timestamps, see the Webhook.site inbox.
Goal (with scorer + assist)
Live delivery — Canada vs Bosnia & Herzegovina (event 15186836):
{"ts": "2026-06-12T20:59:02.379Z","eventId": 15186836,"subject": "event.15186836","channel": "incidents","incidentId": 351558696,"homeTeam": "Canada","awayTeam": "Bosnia & Herzegovina","match": "Canada vs Bosnia & Herzegovina","summary": {"kind": "goal","type": "goal","class": "regular","side": "away","team": "Bosnia & Herzegovina","minute": 21,"player": "J. Lukić","assist": "S. Kolašinac","text": "Goal — J. Lukić 21' (assist S. Kolašinac) (0-1)","score": { "home": 0, "away": 1 }},"team": "Bosnia & Herzegovina","player": "J. Lukić","assist": "S. Kolašinac"}
Earlier WC26 example — Mexico vs South Africa (event 15186710):
{"ts": "2026-06-11T19:14:50.813Z","eventId": 15186710,"subject": "event.15186710","channel": "score","homeTeam": "Mexico","awayTeam": "South Africa","match": "Mexico vs South Africa","summary": {"kind": "goal","side": "home","team": "Mexico","score": "1-0","player": "J. Quiñones","assist": "E. Lira","minute": 9,"text": "Goal — J. Quiñones 9' (assist E. Lira) (1-0)"},"patch": {"homeScore.current": 1,"awayScore.current": 0},"incidentId": 351455858,"player": "J. Quiñones","assist": "E. Lira"}
summary.text is ready to forward to Discord, Slack, or SMS as-is.
Red card
{"ts": "2026-06-11T20:16:38.921Z","eventId": 15186710,"subject": "event.15186710","channel": "incidents","incidentId": 125277734,"homeTeam": "Mexico","awayTeam": "South Africa","match": "Mexico vs South Africa","summary": {"kind": "red","type": "card","class": "red","side": "away","team": "South Africa","minute": 49,"player": "S. Sithole","text": "red — S. Sithole 49'"},"team": "South Africa","player": "S. Sithole"}
Yellow card
Live delivery — Canada vs Bosnia & Herzegovina:
{"ts": "2026-06-12T19:46:42.144Z","eventId": 15186836,"subject": "event.15186836","channel": "incidents","incidentId": 125279344,"homeTeam": "Canada","awayTeam": "Bosnia & Herzegovina","match": "Canada vs Bosnia & Herzegovina","summary": {"kind": "yellow","type": "card","class": "yellow","side": "away","team": "Bosnia & Herzegovina","minute": 45,"player": "E. Demirović","text": "yellow — E. Demirović 45'"},"team": "Bosnia & Herzegovina","player": "E. Demirović"}
Substitution
playerIn / playerOut appear only on substitutions. Live delivery — Canada vs Bosnia & Herzegovina:
{"ts": "2026-06-12T20:22:12.251Z","eventId": 15186836,"subject": "event.15186836","channel": "incidents","incidentId": 126397427,"homeTeam": "Canada","awayTeam": "Bosnia & Herzegovina","match": "Canada vs Bosnia & Herzegovina","summary": {"kind": "substitution","type": "substitution","class": "regular","side": "home","team": "Canada","minute": 61,"text": "Sub — L. Millar → J. Shaffelburg 61'","playerIn": "J. Shaffelburg","playerOut": "L. Millar"},"team": "Canada","playerIn": "J. Shaffelburg","playerOut": "L. Millar"}
Match phases (kickoff → HT → 2H → FT)
Enable subscribePeriods for whistle-to-whistle milestones. One POST per phase change. Same top-level shape as goals and cards: homeTeam, awayTeam, match, and a readable summary.text.
| Moment | summary.phase | summary.text example |
|---|---|---|
| First half | first_half | First half — Mexico vs South Africa (0-0) |
| Halftime | halftime | Halftime — Mexico vs South Africa (1-0) |
| Second half | second_half | Second half — Mexico vs South Africa (1-0) |
Full time — webhook JSON sample:
{"ts": "2026-06-17T22:00:37.794Z","eventId": 15186504,"subject": "event.15186504","channel": "score","summary": {"kind": "status","type": "period","phase": "full_time","text": "Full time — England vs Croatia (4-2)","score": {"home": 4,"away": 2},"status": {"code": 100,"description": "Ended"}},"homeTeam": "England","awayTeam": "Croatia","match": "England vs Croatia"}
Halftime — webhook JSON sample:
{"ts": "2026-06-11T19:55:00.676Z","eventId": 15186710,"subject": "sport.football","channel": "score","homeTeam": "Mexico","awayTeam": "South Africa","match": "Mexico vs South Africa","summary": {"kind": "status","type": "period","phase": "halftime","text": "Halftime — Mexico vs South Africa (1-0)","score": { "home": 1, "away": 0 },"status": { "code": 31, "description": "Halftime" }}}
Stoppage time uses summary.kind: "stoppage_time" with minutes and period (1 or 2).
Other phases use the same shape: first_half, second_half, extra_time, penalties.
Field cheat sheet
| Field | Meaning |
|---|---|
ts | When we sent the notification (ISO 8601) |
eventId | Match id — stable for the whole game |
channel | score (live socket) or incidents (API enrich for cards/subs) |
summary.kind | goal, yellow, red, substitution, status, stoppage_time, … |
summary.type | goal, card, substitution, or period for match phases |
summary.phase | Period only: first_half, halftime, second_half, full_time, stoppage_time, … |
summary.text | Human-readable one-liner |
summary.score | { "home": 1, "away": 0 } on goals and periods |
player / assist | Scorer and assist on goals; player on cards |
playerIn / playerOut | Substitution only |
You’re live when…
Delivery kicks in once your URL is on the notification service. Changed URL or event toggles? Picked up within about 5 minutes (no restart needed).
Want to try it? Plug in your webhook, open your logs, and wait for the beautiful chaos of live World Cup football. 🏆
📬 Contact & Support
Need a custom solution? Have a feature request, a collaboration beyond the FIFA 2026 World Cup or just want to chat? We'd love to hear from you!
- 💬 Discord:
@azzouzana - 📧 Email: labs@azzouzana.com