FIFA World Cup 2026 Fixtures Scraper
Pricing
from $1.43 / 1,000 item extracteds
FIFA World Cup 2026 Fixtures Scraper
Export all 104 official FIFA World Cup 2026 fixtures, results, teams, groups, stages, venues, scores, and calculated group tables.
Pricing
from $1.43 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Export FIFA World Cup 2026 fixtures and results from FIFA's public structured match feed.
The Actor returns the full 104-match tournament schedule with stable match identity, dates, teams, groups, stages, venues, status, scores, penalty scores, winners, and attendance where FIFA supplies it. It can also calculate group-table snapshots from the official match results in the same run.
Use it for sports publishing, tournament dashboards, match calendars, results archives, and scheduled data pipelines.
What does this FIFA World Cup 2026 data Actor do?
The Actor requests the exact FIFA competition and season rather than searching a general football feed. It normalizes the source response into integration-friendly JSON records.
A run can:
- export all 104 matches;
- select match records, standing records, or both;
- filter either side by team name or country code;
- filter Group A through Group L;
- select English stage names using case-insensitive substring matching;
- limit matches to a UTC date range;
- select scheduled, live, or completed matches;
- request English, Spanish, or French localized names;
- cap combined dataset output with
maxItems; - produce a calculated points table for each selected group.
No login, browser, or proxy configuration is required.
Who is it for?
Sports publishers
Refresh fixture and score cards without manually copying tournament pages.
Use stable matchId values to update existing stories instead of creating duplicates.
Data and newsroom teams
Load normalized World Cup records into spreadsheets, databases, BI tools, or editorial systems. Schedule the Actor around publishing deadlines.
App and dashboard developers
Build calendars, group views, venue pages, team schedules, and results archives from consistent JSON.
Tournament analysts
Select one team, group, stage, or date window for focused analysis. Calculated table rows expose played, won, drawn, lost, goals, goal difference, and points.
Why use this Actor?
- Exact tournament scope: the source request is pinned to FIFA competition
17and season285023. - Complete fixture feed: one current source response contains all 104 World Cup 2026 matches.
- Typed output: match and standing records use explicit, documented fields.
- Useful filters: team, group, stage, date, and status filters apply before output is charged.
- Stable identity: FIFA match and team IDs support repeat-run comparisons.
- Low overhead: the implementation uses the public JSON feed directly with 256 MB memory.
- Fail-closed behavior: unexpected pagination or malformed upstream responses fail rather than silently returning partial data.
What FIFA World Cup 2026 fields are extracted?
Match records
| Field | Meaning |
|---|---|
recordType | Always match |
matchId | Stable FIFA match identifier |
matchNumber | Tournament match number when supplied |
competition | Localized competition name |
season | Localized season name |
stage | Localized First Stage, knockout round, Final, or another FIFA stage |
stageId, groupId | Stable FIFA stage/group IDs, nullable |
venueId, cityId | Stable FIFA stadium/city IDs, nullable |
matchTime | FIFA match-clock text, nullable |
sourceMatchStatus, sourceResultType | Raw FIFA numeric states, nullable |
officials | Array of officialId, localized name and role, numeric type, and countryCode; nullable fields, empty array when absent |
group | Group A through Group L for group matches; otherwise null |
date | Scheduled UTC date and time |
localDate | FIFA's local match datetime when supplied |
status | scheduled, live, or completed |
homeTeam, awayTeam | Localized team names |
homeTeamCode, awayTeamCode | Team abbreviations or country codes |
homeTeamId, awayTeamId | Stable FIFA team identifiers |
homeScore, awayScore | Current or final scores; nullable before scores exist |
homePenaltyScore, awayPenaltyScore | Shootout scores when applicable |
winnerTeamId | FIFA winner team ID when supplied |
venue, city, venueCountryCode | Match location fields |
attendance | Reported attendance when supplied |
sourceUrl | Exact official API route used |
retrievedAt | UTC retrieval timestamp |
Standing records
Standing records use recordType: "standing" and contain:
group,position,team,teamCode, andteamId;played,won,drawn, andlost;goalsFor,goalsAgainst, andgoalDifference;points;calculation: "calculated-from-official-match-results";- source and retrieval timestamps.
These rows are calculated only from selected finalized group matches with numeric scores. They are convenient table snapshots, not a separate FIFA-published standings endpoint.
Getting started
- Open the Actor input page.
- Leave
dataTypesasmatches, standingsto include both record types. - Optionally add teams, groups, stages, dates, or a status.
- Keep the low-cost
maxItemsprefill at20, or raise it to200for the complete tournament and group tables. - Click Start.
- Open the Matches and standings dataset view.
- Export JSON, CSV, Excel, XML, or RSS, or consume the Default dataset API link for full records (
view=fullselects every exported field, not the overview projection). It retains IDs, penalties, winners, officials, source and retrieval timestamps.
The Match results only and Calculated tables only links open separate per-run datasets containing only saved rows of that type. These mirror the default dataset without extra item charges. The combined limit still applies: matches save first, then standings. A 20-row preview may contain no table rows; a truncation warning reports available, saved and omitted counts.
The low-cost prefilled input runs without credentials:
{"dataTypes": ["matches", "standings"],"matchStatus": "all","language": "en","maxItems": 20}
Input parameters
| Input | Type | Default | Description |
|---|---|---|---|
dataTypes | string array | matches, standings | Output one or both supported record types |
teams | string array | empty | Team names or codes such as Spain, Argentina, ESP, or ARG |
groups | string array | empty | Group A through Group L |
stages | string array | empty | Exact or partial FIFA stage names |
dateFrom | YYYY-MM-DD | unset | Earliest UTC match date |
dateTo | YYYY-MM-DD | unset | Latest UTC match date |
matchStatus | string | all | all, scheduled, live, or completed |
language | string | en | en, es, or fr, with English fallback |
maxItems | integer | 20 | Maximum combined output records, from 1 to 500; use 200 for the complete export |
Team matching trims whitespace and uses case-insensitive substring matching on English names, short names, abbreviations, and country codes, regardless of output language. Groups use exact English Group A–L labels. Stages use English substring matching: Final also matches Quarter-final, Semi-final and Bronze final.
Multiple team values use OR logic.
Multiple groups and stages also use OR logic.
Different filter families combine with AND logic.
Example workflows
Export every fixture and table row
{"dataTypes": ["matches", "standings"],"maxItems": 200}
Follow Spain through the tournament
{"dataTypes": ["matches"],"teams": ["Spain"],"matchStatus": "all","maxItems": 20}
Refresh Group A results and table
{"dataTypes": ["matches", "standings"],"groups": ["Group A"],"maxItems": 20}
Export knockout matches in a date window
{"dataTypes": ["matches"],"dateFrom": "2026-06-28","dateTo": "2026-07-19","stages": ["Round of 32", "Round of 16", "Quarter-final", "Semi-final", "Bronze final", "Final"],"maxItems": 100}
Example output
A match record looks like this:
{"recordType": "match","matchId": "400021443","matchNumber": 1,"competition": "FIFA World Cup™","season": "FIFA World Cup 26™","stage": "First Stage","group": "Group A","date": "2026-06-11T19:00:00Z","localDate": "2026-06-11T13:00:00Z","status": "completed","homeTeam": "Mexico","homeTeamCode": "MEX","awayTeam": "South Africa","awayTeamCode": "RSA","homeScore": 2,"awayScore": 0,"venue": "Mexico City Stadium","city": "Mexico City","venueCountryCode": "MEX","attendance": 80824,"sourceUrl": "https://api.fifa.com/api/v3/calendar/matches?...","retrievedAt": "2026-08-15T00:00:00.000Z"}
Nullable fields remain null; they are not replaced with guessed values. Officials are an empty array when absent. Weather, players and odds are not exported.
Localization and source-state safety
English uses one canonical FIFA request. Spanish and French use that English request plus the requested-language endpoint, joining matches and teams by stable IDs, never array position. Numeric results and identity stay canonical; absent or mismatched translations fall back to English. Failure or pagination of either required response fails the run after bounded retries. sourceUrl identifies the canonical English source; localized labels come from the same route with language=es or language=fr.
The October 2026 archive contains 104 completed records with MatchStatus=0 and ResultType=1/2/3. completed requires those final markers and numeric scores, not merely a past kickoff. Unknown/non-final states conservatively return scheduled and never add table points. The live filter remains available for compatibility, but no live-state mapping has been verified and it currently yields no rows. Raw states allow consumers to inspect changes without guessed live claims.
How much does it cost to export FIFA World Cup 2026 data?
Pay-per-event pricing has two parts:
- $0.005 per run for the
startevent; - $0.00238 per output record at the BRONZE tier, with lower per-record prices at higher tiers.
BRONZE examples use the same active event prices:
- 1 record: one $0.005 start event plus 1 × the $0.00238 item event;
- 10 records: one $0.005 start event plus 10 × the $0.00238 item event;
- 25 records: one $0.005 start event plus 25 × the $0.00238 item event;
- 100 records: one $0.005 start event plus 100 × the $0.00238 item event;
- the complete 152-record match-and-table export: one $0.005 start event plus 152 × the $0.00238 item event.
Charges apply only to records actually saved. Empty filtered results incur only the one-time start event. Apify plan tier and platform usage may affect the final account total shown by Apify.
Scheduled refreshes and change tracking
Create an Apify schedule to run hourly, daily, or around match times.
Use matchId as the primary key for match upserts and group + teamId for table upserts.
Compare these fields between runs:
date,stage, orvenuefor schedule changes;status, scores, penalties, and winner for result changes;played, goal difference, points, and position for table changes.
The Actor emits current snapshots. It does not maintain history or send alerts by itself. Connect a webhook, Make, Zapier, n8n, or your own consumer to implement notifications.
API usage with cURL
Start a run and wait for dataset items:
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~fifa-world-cup-2026-data/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"dataTypes":["matches"],"teams":["Spain"],"maxItems":20}'
Never commit your Apify token to source control.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/fifa-world-cup-2026-data').call({dataTypes: ['matches', 'standings'],groups: ['Group A'],maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/fifa-world-cup-2026-data').call(run_input={'dataTypes': ['matches'],'matchStatus': 'completed','maxItems': 104,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with Apify MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/fifa-world-cup-2026-data"
Claude Desktop, Cursor, and VS Code setup
Claude Desktop, Cursor, and VS Code can use this HTTP MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/fifa-world-cup-2026-data"}}}
Example prompts:
- “Run the FIFA World Cup 2026 data Actor and return every Spain match.”
- “Refresh Group A results and summarize the calculated table.”
- “Export completed knockout matches as CSV-ready JSON.”
Integrations
Google Sheets and Excel
Download the default dataset as CSV or XLSX, or update a sheet after each scheduled run.
Use recordType to split match and standing rows into separate tabs.
Databases and warehouses
Upsert matches by matchId.
Upsert standing snapshots by group, teamId, and retrievedAt, or overwrite by group + teamId when only the latest state matters.
Editorial systems
Trigger a webhook when a run succeeds. Validate score/status changes before automatically publishing reader-facing copy.
Dashboards
Filter match rows for calendars and scorecards. Filter standing rows for group tables. Retain source and retrieval timestamps for freshness indicators.
Limits and failure behavior
- The Actor is intentionally limited to the men's FIFA World Cup 2026 competition and season.
- It does not scrape player statistics, lineups, commentary, odds, tickets, or media.
- Data reflects FIFA's public feed at retrieval time.
- Localized text falls back to English when a requested translation is absent.
maxItemsapplies to the combined output in match-then-standing order; omittedmaxItemsnow correctly defaults to 20. Explicit limits on existing Tasks remain unchanged.- Calendar dates are strictly validated, including leap days, and UTC range endpoints are inclusive. Malformed inputs fail before startup charges or source requests.
- A narrow match filter also narrows the matches used for calculated standings.
- Calculated ranking uses points, goal difference, goals scored, then team name; FIFA's full tie-break rules may produce a different order in a complete tie.
- An unexpected paginated or malformed season response causes a non-zero failure instead of partial output.
- The Actor allows up to three attempts per source route with 30-second attempt timeouts and bounded delays. English plus localization share a 150-second source-retrieval budget; exhaustion fails rather than exporting partial data.
Troubleshooting
The dataset is empty
Check team spelling, group, stage, date range, and matchStatus.
Try the prefilled input to confirm the source is available, then add one filter at a time.
I requested standings but received no table rows
Standing rows require selected finalized group-stage matches with numeric scores. A team/date/status filter can exclude some or all score records. Remove those filters or request the complete group.
A run failed with a FIFA API error
The Actor already performs bounded retries. Inspect the run log and retry later if FIFA's public feed was temporarily unavailable. No proxy setting is needed.
The status does not match a page I just viewed
The API and website can update at slightly different times.
Use retrievedAt to show freshness and rerun after a short interval.
Data handling and support
The Actor uses no AI models. FIFA's anonymous feed supplies public tournament data, including named match officials; no user account, paid source API or proxy is required. Network processing is ephemeral. Output datasets and logs follow your Apify account's retention settings and can be deleted from the run's Storage tab or API; this Actor creates no persistent named cloud datasets or external output archive.
Failed operations send sanitized diagnostic input, exceptions and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; diagnostic reports are retained for 30 days. Credentials are supplied as protected platform environment variables, not public input. No match payload is sent to an AI provider.
For help, open an issue on this Actor's Apify Store page with the run link, input (without secrets), expected output and observed behavior.
Legality
This Actor accesses public tournament data without authentication. You are responsible for complying with applicable laws, FIFA terms, Apify terms, and the rules of downstream systems.
Do not imply FIFA endorsement. Do not misuse team, competition, or event branding. Review data before using it for high-impact betting, financial, safety, or automated editorial decisions. Store only the fields needed for your legitimate workflow.
Related Automation Lab Actors
- SofaScore Live Events & Statistics Scraper for multi-sport scheduled and live events.
- ESPN Multi-League Odds Scraper for supported ESPN league and odds workflows.
- Cricbuzz Live Match Scores Scraper for cricket fixtures and live scores.
Use this Actor when the buyer job is specifically the official FIFA World Cup 2026 fixture and result feed.
FAQ
Does it return all 104 FIFA World Cup 2026 matches?
Yes, when the source provides the complete current season response and you use no narrowing filters with maxItems of at least 104.
Raise maxItems from its low-cost default of 20 to 200 to leave room for calculated standing rows.
Are the standings official FIFA table records?
No separate table endpoint is claimed.
The rows are transparently calculated from official match scores and marked with the calculation field.
Can I filter by more than one team?
Yes. The Actor keeps a match when either side matches any supplied team value.
Can I use country codes?
Yes.
Values such as ESP, ARG, MEX, and USA are matched case-insensitively.
Can it monitor changes?
Schedule repeat runs and compare stable IDs in your destination. The Actor returns snapshots; webhook notifications and historical diff storage belong in your integration.
Does it need a proxy or FIFA account?
No. It uses an anonymous public FIFA JSON endpoint and does not expose a proxy mode.
What happens when a source field is missing?
Nullable fields remain null.
Core records missing match identity, date, or team identity are rejected rather than emitted as misleading partial rows.