FIFA World Cup 2026 Fixtures Scraper avatar

FIFA World Cup 2026 Fixtures Scraper

Pricing

from $1.43 / 1,000 item extracteds

Go to Apify Store
FIFA World Cup 2026 Fixtures Scraper

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

Automation Lab

Maintained by Community

Actor 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 17 and season 285023.
  • 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

FieldMeaning
recordTypeAlways match
matchIdStable FIFA match identifier
matchNumberTournament match number when supplied
competitionLocalized competition name
seasonLocalized season name
stageLocalized First Stage, knockout round, Final, or another FIFA stage
stageId, groupIdStable FIFA stage/group IDs, nullable
venueId, cityIdStable FIFA stadium/city IDs, nullable
matchTimeFIFA match-clock text, nullable
sourceMatchStatus, sourceResultTypeRaw FIFA numeric states, nullable
officialsArray of officialId, localized name and role, numeric type, and countryCode; nullable fields, empty array when absent
groupGroup A through Group L for group matches; otherwise null
dateScheduled UTC date and time
localDateFIFA's local match datetime when supplied
statusscheduled, live, or completed
homeTeam, awayTeamLocalized team names
homeTeamCode, awayTeamCodeTeam abbreviations or country codes
homeTeamId, awayTeamIdStable FIFA team identifiers
homeScore, awayScoreCurrent or final scores; nullable before scores exist
homePenaltyScore, awayPenaltyScoreShootout scores when applicable
winnerTeamIdFIFA winner team ID when supplied
venue, city, venueCountryCodeMatch location fields
attendanceReported attendance when supplied
sourceUrlExact official API route used
retrievedAtUTC retrieval timestamp

Standing records

Standing records use recordType: "standing" and contain:

  • group, position, team, teamCode, and teamId;
  • played, won, drawn, and lost;
  • goalsFor, goalsAgainst, and goalDifference;
  • 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

  1. Open the Actor input page.
  2. Leave dataTypes as matches, standings to include both record types.
  3. Optionally add teams, groups, stages, dates, or a status.
  4. Keep the low-cost maxItems prefill at 20, or raise it to 200 for the complete tournament and group tables.
  5. Click Start.
  6. Open the Matches and standings dataset view.
  7. Export JSON, CSV, Excel, XML, or RSS, or consume the Default dataset API link for full records (view=full selects 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

InputTypeDefaultDescription
dataTypesstring arraymatches, standingsOutput one or both supported record types
teamsstring arrayemptyTeam names or codes such as Spain, Argentina, ESP, or ARG
groupsstring arrayemptyGroup A through Group L
stagesstring arrayemptyExact or partial FIFA stage names
dateFromYYYY-MM-DDunsetEarliest UTC match date
dateToYYYY-MM-DDunsetLatest UTC match date
matchStatusstringallall, scheduled, live, or completed
languagestringenen, es, or fr, with English fallback
maxItemsinteger20Maximum 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 start event;
  • $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, or venue for 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 os
from apify_client import ApifyClient
client = 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().items
print(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.
  • maxItems applies to the combined output in match-then-standing order; omitted maxItems now 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.

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.