GUIDE

World Cup 2026 Host Cities API: 16 Stadiums Across 3 Countries

All 16 World Cup 2026 host cities and venues: USA (11), Canada (2), Mexico (3). Capacity, matches hosted, timezone, and API access.

6 min read

The 2026 FIFA World Cup is the first to be hosted across three countries: the United States (11 cities), Canada (2), and Mexico (3). That's 16 host cities, 16 stadiums, and a logistics challenge that previous World Cups never faced. Travel within the tournament can mean flying 3,000 miles between matches.

This guide covers all 16 host cities, their stadiums, capacities, and how to surface this data in your app via API.

The 16 host cities

CityCountryStadiumCapacityMatches
AtlantaUSAMercedes-Benz Stadium75,0008
Boston (Foxborough)USAGillette Stadium65,8787
Dallas (Arlington)USAAT&T Stadium80,0009
GuadalajaraMexicoEstadio Akron48,0714
HoustonUSANRG Stadium72,2207
Kansas CityUSAArrowhead Stadium76,4166
Los Angeles (Inglewood)USASoFi Stadium70,2408
Mexico CityMexicoEstadio Azteca87,5235
Miami (Gardens)USAHard Rock Stadium65,3267
MonterreyMexicoEstadio BBVA53,5004
New York/New JerseyUSAMetLife Stadium82,5008 (incl. Final)
PhiladelphiaUSALincoln Financial Field69,5966
San Francisco Bay AreaUSALevi's Stadium68,5006
SeattleUSALumen Field68,7406
TorontoCanadaBMO Field45,5006
VancouverCanadaBC Place54,5007

Total: 104 matches across 16 venues.

Notable facts

  • The Final is at MetLife Stadium in New York/New Jersey on July 19, 2026
  • The opening match is at Estadio Azteca in Mexico City on June 11, 2026 — making the Azteca the first stadium to host matches at three World Cups (1970, 1986, 2026)
  • AT&T Stadium in Dallas hosts the most matches at 9, including a semi-final
  • Hard Rock Stadium in Miami hosts the third-place playoff on July 18, 2026
  • The two semi-finals are at AT&T Stadium (Dallas) and Mercedes-Benz Stadium (Atlanta)

Fetch fixtures and join host-city metadata

The football API returns the World Cup fixture list, teams, kickoff times, status, and coverage flags. Host-city/stadium metadata is best stored in your app as a small static table, then joined to fixtures by your own match mapping.

Start with the fixture endpoint:

curl 'https://api.thestatsapi.com/api/football/matches?competition_id={COMPETITION_ID}&season_id={SEASON_ID}&per_page=100' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Use GET /football/competitions?search=world%20cup to find the World Cup competition ID and GET /football/competitions/{competition_id}/seasons to find the 2026 season ID.

Then keep a static host-city table in your app:

const HOST_CITIES = {
  "new-york-new-jersey": {
    city: "New York/New Jersey",
    stadium: "MetLife Stadium",
    capacity: 82500,
    timezone: "America/New_York",
  },
  "mexico-city": {
    city: "Mexico City",
    stadium: "Estadio Azteca",
    capacity: 87523,
    timezone: "America/Mexico_City",
  },
  // ...the other 14 host cities
};

This keeps the integration honest: the API supplies live fixture/status data, and your app supplies editorial host-city details such as stadium capacity, transport notes, fan zones, and travel guidance.

Calculate fan travel distance

from math import radians, sin, cos, asin, sqrt

CITY_COORDS = {
    'atlanta': (33.7490, -84.3880),
    'mexico-city': (19.4326, -99.1332),
    'vancouver': (49.2827, -123.1207),
    # ...
}

def haversine(coord1, coord2):
    lat1, lon1 = radians(coord1[0]), radians(coord1[1])
    lat2, lon2 = radians(coord2[0]), radians(coord2[1])
    dlat = lat2 - lat1
    dlon = lon2 - lon1
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    return 2 * 6371 * asin(sqrt(a))

# Distance from Mexico City to Vancouver
distance = haversine(CITY_COORDS['mexico-city'], CITY_COORDS['vancouver'])
print(f"{distance:.0f} km")  # ~4,400 km

Useful for travel-planning content or fan-cost calculators.

Time zones matter

Kickoff times span 5 time zones:

  • Pacific (PDT): Vancouver, Seattle, San Francisco Bay Area, Los Angeles
  • Mountain: none
  • Central (CDT): Dallas, Houston, Kansas City
  • Central Mexico (CST): Mexico City, Guadalajara, Monterrey
  • Eastern (EDT): Atlanta, Boston, Miami, New York, Philadelphia, Toronto

A match in Vancouver at 12pm local time is a match in New York at 3pm local time and a match in London at 8pm. The API returns kickoff times in UTC — always convert client-side to the user's local time.

City-specific use cases

  • Travel guides — show all matches in a city, with stadium info and nearby hotels
  • Stadium guides — capacity, transport links, fan zones, food and drink options
  • Fan-cost calculators — sum estimated cost of attending matches across a fan's planned cities
  • Match-day weather — pull weather forecasts for the host city on match-day
  • TV channel finder — based on user's city, surface the right broadcaster

SEO opportunity for World Cup content

Each host city has its own search demand: "World Cup matches in [city]", "[city] stadium World Cup 2026", "[stadium] World Cup tickets". Build a city page per host (we have one for each — see our 16 host city pages for reference) and you've got 16 ranking opportunities for free.

Frequently Asked Questions

How many cities are hosting the 2026 World Cup?

16 cities across three countries: 11 in the USA, 3 in Mexico (Mexico City, Guadalajara, Monterrey), and 2 in Canada (Toronto, Vancouver).

Where is the 2026 World Cup Final?

The Final is on July 19, 2026 at MetLife Stadium in New York/New Jersey (capacity 82,500).

Which stadium hosts the opening match?

The Estadio Azteca in Mexico City hosts the opening match on June 11, 2026. It becomes the first stadium to host matches at three different World Cups (1970, 1986, 2026).

Which city hosts the most matches?

Dallas (AT&T Stadium) hosts 9 matches, the most of any venue, including a semi-final.

What's the largest stadium at the World Cup?

The Estadio Azteca at 87,523 capacity is the largest, followed by MetLife Stadium (82,500) which hosts the Final.

Are matches played at different times of day?

Yes — kickoff times vary by venue and stage. The API returns UTC times; convert to user-local for display.

Can I get fixture data for a single host city?

Fetch the World Cup fixture list from /football/matches, then filter against your own host-city mapping. The current documented matches endpoint does not expose venue_id or city filters, so do not build production code around those parameters unless your account has a custom extension.

How do I handle the time zone differences?

Always store and return UTC. Convert to the user's local time in the browser using Intl.DateTimeFormat. Our free Match Kickoff Time Converter demonstrates the pattern.

Start building today

Ready to Power Your Sports App?

Start your 7-day free trial. All endpoints included on every plan.

Cancel anytime
7-day free trial
Setup in 5 minutes