FIFA World Cup 2026 — Results, Fixtures & Standings
Pricing
from $5.00 / 1,000 group standings
FIFA World Cup 2026 — Results, Fixtures & Standings
Scrape FIFA World Cup 2026 data: live scores, match results, upcoming fixtures, group standings, the knockout bracket, goal scorers, cards, venues, and attendance. Filter by stage, match status, or team.
Pricing
from $5.00 / 1,000 group standings
Rating
0.0
(0)
Developer
Veronica
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
5
Monthly active users
8 hours ago
Last modified
Categories
Share
FIFA World Cup 2026 Scraper — Results, Fixtures, Standings & Bracket
Overview
This Apify Actor scrapes the entire FIFA World Cup 2026 — all 104 matches across the USA, Canada, and Mexico — in a single run, returning structured, deduplicated results. Get live scores, final results, upcoming fixtures, the full knockout bracket, group standings, goal scorers, cards, venues, and attendance without any API keys or coding.
Data updates live during matches, so a run started mid-game returns the latest available scoreline, scorers, and cards.
At a glance:
- ⚽ All 104 matches — group stage through the final
- 📊 All 12 group tables (48 teams)
- 🏆 Full knockout bracket, including placeholder fixtures before teams qualify
- 🔄 Auto-deduplicated across overlapping stage windows
- 💾 Export to JSON, CSV, Excel, or XML
- 🔌 No API key required
✨ Core Features
- Complete coverage — Group Stage, Round of 32, Round of 16, Quarterfinals, Semifinals, Third-Place Match, and Final
- Live scores & results — scoreline, status (scheduled / live / full-time), and winner, updated in real time
- Upcoming fixtures — kickoff times, venues, and broadcasters for games not yet played
- Knockout bracket — every knockout tie, with placeholders like Group A Winner vs Group B Runner-up until teams are confirmed
- Group standings — rank, played, W/D/L, goals for/against, goal difference, points, and qualification status
- Goal scorers & cards — every goal (with minute, own goals, penalties) and every yellow/red card
- Match context — stadium, city, country, attendance, TV/streaming networks, and a recap headline
- Powerful filters — by stage, match status, or specific team
- Auto-deduplication — each match appears exactly once, even across stage boundaries
📥 Input Parameters
All parameters are optional. Run with empty input to scrape the whole tournament plus standings.
| Field | Type | Default | Notes |
|---|---|---|---|
stages | array | all stages | Stages to scrape: group-stage, round-of-32, round-of-16, quarterfinals, semifinals, 3rd-place-match, final |
matchStatus | string | all | Filter by status: all, completed (results), upcoming (fixtures), live |
team | string | — | Only matches involving this team. Accepts a name or 3-letter code (e.g. Mexico, USA, BRA) |
includeMatchDetails | boolean | true | Include goal scorers, cards, attendance, broadcasts, and recap |
includeStandings | boolean | true | Also output the 12 group tables (one row per team) |
📤 Output Fields
Results are stored in the default dataset. Each item has a recordType of either match or standing.
Match records (recordType: "match")
Identity: id, stage, stageSlug, group, name, shortName, url
Schedule & status: date (ISO kickoff), status (scheduled / in / post), statusDetail, completed
Teams (homeTeam & awayTeam): name, abbreviation, logo, score, shootoutScore, winner, advanced, form, record
Result: score (e.g. 2-0 or 1-1 (4-2 pens)), winner
Venue: venue.name, venue.city, venue.country, attendance
Match events: goals[] (minute, player, teamId, ownGoal, penalty), cards[] (minute, player, teamId, type), broadcasts[], recap
Standing records (recordType: "standing")
group, rank, team (name / abbreviation / logo), played, wins, draws, losses, goalsFor, goalsAgainst, goalDifference, points, note (qualification status, e.g. Advance to Round of 32)
💵 Pricing
Pay-per-event — you pay only for the data you actually pull:
- Actor start — once per run
- Match — per match record returned
- Group standings — once per run, only when Include group standings is on (flat fee for all 12 tables)
See the Pricing tab on the Actor's page for current rates.
⚠️ Notes & Limitations
- Unplayed matches return
score: nullandwinner: null. Knockout fixtures show placeholder team names (e.g. Group D 2nd Place) until the bracket is decided. - Status values:
scheduled(upcoming),in(live now),post(finished). A draw is reported aswinner: "Draw"once completed. - Mixed dataset: matches and standings share one dataset. The dataset views ("Matches" and "Group standings") control which columns display — standings columns appear blank on match rows and vice versa.
- Freshness: schedule the Actor to re-run during the tournament (11 June – 19 July 2026) to keep results and standings current.
- Source: publicly available match data. Use responsibly and in line with applicable terms and laws.
🧪 Usage Examples
Whole tournament (default)
{"matchStatus": "all","includeMatchDetails": true,"includeStandings": true}
Only completed results
{"matchStatus": "completed","includeStandings": false}
Upcoming fixtures, knockout rounds only
{"stages": ["round-of-32", "round-of-16", "quarterfinals", "semifinals", "final"],"matchStatus": "upcoming"}
One team's matches
{"team": "Mexico","includeStandings": false}
Group standings only
{"stages": [],"matchStatus": "completed","includeStandings": true,"includeMatchDetails": false}
🛠️ Integration Guide
Replace <YOUR_API_TOKEN> with your Apify token and <ACTOR_ID> with this Actor's ID (e.g. your-username/world-cup-2026-scraper).
JavaScript / TypeScript
$npm install apify-client
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const input = { matchStatus: 'completed', includeStandings: true };const run = await client.actor('<ACTOR_ID>').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
$pip install apify-client
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run_input = {"matchStatus": "completed", "includeStandings": True}run = client.actor("<ACTOR_ID>").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
CLI
$echo '{"matchStatus":"completed"}' | apify call <ACTOR_ID> --silent --output-dataset
MCP Server
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote", "https://mcp.apify.com/?tools=<ACTOR_ID>", "--header", "Authorization: Bearer <YOUR_API_TOKEN>"]}}}
FAQ & Best Practices
Q: How current is the data? A: Scores, scorers, cards, and standings update live during matches, so a run started mid-game returns the latest available state.
Q: How do I get only my country's games?
A: Set the team filter to a country name or 3-letter code (e.g. Argentina or ARG).
Q: Can I get the knockout bracket before the groups finish?
A: Yes. Scrape the knockout stages with matchStatus: "upcoming" — fixtures appear with placeholder names (e.g. Group A Winner) and resolve to real teams as the bracket fills in.
Q: What's the difference between the statuses?
A: scheduled = upcoming fixture, in = match in progress, post = finished. Use matchStatus to filter to exactly what you need.
Q: Do I need a proxy? A: No setup needed. The Actor uses the default Apify Proxy automatically, which is sufficient for the public data source.
Ready to start? Click Start with the default input to grab the full tournament, or set a filter to narrow it down to one stage, status, or team.