Data Downloads & API

The full AI Data Center Index dataset is available for download in machine-readable formats. Every major taxonomy slice also has its own predictable JSON and GeoJSON endpoint. Free to use under CC BY 4.0 — attribution required.

Taxonomy Slice Endpoints

Canonical browse pages double as machine-readable endpoints. Append index.json, index.csv, or index.geojson to any slice URL to fetch the same subset as structured data, spreadsheet rows, or map-ready features.

/operators/microsoft/index.json
/operators/microsoft/index.csv
/operators/microsoft/index.geojson
/countries/japan/index.json
/countries/japan/index.csv
/countries/japan/index.geojson
/continents/asia/index.json
/continents/asia/index.csv
/continents/asia/index.geojson
/investment/10b-to-50b/index.json
/investment/10b-to-50b/index.csv
/investment/10b-to-50b/index.geojson
/regions/southeast-asia/index.json
/status/operational/index.json
/energy/renewable/index.json
/capacity/over-1-gw/index.json
/ai-focus/training/index.json
/year/2026/index.json
/states/virginia/index.geojson
{
  "generated_at": "ISO 8601 timestamp",
  "license": "CC BY 4.0",
  "taxonomy": {
    "type": "country | operator | continent | investment_band | investment_category | region | status | energy | capacity | ai_focus | year | state",
    "name": "Human-readable label",
    "slug": "canonical-url-slug",
    "path": "/countries/japan/index.json",
    "url": "https://aidatacenterindex.com/countries/japan/index.json",
    "csv_path": "/countries/japan/index.csv",
    "csv_url": "https://aidatacenterindex.com/countries/japan/index.csv",
    "geojson_path": "/countries/japan/index.geojson",
    "geojson_url": "https://aidatacenterindex.com/countries/japan/index.geojson",
    "html_url": "https://aidatacenterindex.com/countries/japan/",
    "item_count": 0,
    "total_megawatts": 0
  },
  "items": [ ... ]
}

GeoJSON Schema

{
  "generated_at": "ISO 8601 timestamp",
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": "string — slug from filename",
      "geometry": {
        "type": "Point",
        "coordinates": [lng, lat]
      },
      "properties": {
        "title": "string",
        "country": "string",
        "status": "string",
        "record_json_url": "string",
        "record_geojson_url": "string"
      }
    }
  ]
}

CSV Columns

id,title,url,megawatts,companies,country,region,city,status,energy_type,ai_focus,start_year,lat,lng,sources

# Notes:
# megawatts    — IT load capacity; empty if not reported
# companies    — pipe-separated ( | ) if multiple operators
# sources      — pipe-separated ( | ) list of cited source URLs
# status       — operational | under_construction | planned | announced

JSON Schema

{
  "generated_at": "ISO 8601 timestamp",
  "items": [
    {
      "id":          "string — slug from filename",
      "title":       "string — full facility name",
      "url":         "string — canonical URL on aidatacenterindex.com",
      "megawatts":   "number | null — IT load capacity in MW",
      "capacity_gw": "number | null — capacity in GW (raw field)",
      "companies":   "string[] — operator names",
      "country":     "string — country name",
      "region":      "string — region/state/province",
      "city":        "string — city name",
      "admin1":      "string — ISO state/province code",
      "precision":   "string — coordinate precision (city/region)",
      "lat":         "number | null — latitude",
      "lng":         "number | null — longitude",
      "status":      "string — operational | under_construction | planned | announced",
      "energy_type": "string — primary energy source",
      "ai_focus":    "string — training / inference / general",
      "start_year":  "number | null — year facility became operational",
      "sources":     "string[] — cited source URLs"
    }
  ]
}

Example Usage

// Fetch all operational US facilities
const res = await fetch('https://aidatacenterindex.com/assets/datacenters.json');
const { items } = await res.json();
const usOps = items.filter(d =>
  d.country === 'United States' && d.status === 'operational'
);
# Python (JSON): total tracked capacity by country
import requests, collections
data = requests.get('https://aidatacenterindex.com/assets/datacenters.json').json()
by_country = collections.Counter()
for d in data['items']:
    if d.get('megawatts'):
        by_country[d['country']] += d['megawatts']
for country, mw in by_country.most_common(10):
    print(f"{country}: {mw/1000:.1f} GW")
# Python (CSV): load into pandas for analysis
import pandas as pd
df = pd.read_csv('https://aidatacenterindex.com/assets/datacenters.csv')
# Split pipe-separated companies into lists
df['companies'] = df['companies'].str.split(r' \| ')
# Total capacity by status
print(df.groupby('status')['megawatts'].sum().sort_values(ascending=False))
// Fetch the Japan slice directly
const res = await fetch('https://aidatacenterindex.com/countries/japan/index.json');
const { taxonomy, items } = await res.json();
console.log(taxonomy.item_count, items.map(d => d.title));
# Python (GeoJSON): load map-ready features
import requests
geo = requests.get('https://aidatacenterindex.com/assets/datacenters.geojson').json()
points = [feature for feature in geo['features'] if feature.get('geometry')]
print(points[0]['geometry']['coordinates'], points[0]['properties']['title'])
# Python (GeoJSON): map one investment slice
import requests
band = requests.get('https://aidatacenterindex.com/investment/10b-to-50b/index.geojson').json()
print(band['taxonomy']['name'], band['feature_count'])
# Python (CSV): load one taxonomy slice directly
import pandas as pd
japan = pd.read_csv('https://aidatacenterindex.com/countries/japan/index.csv')
print(japan[['title', 'megawatts', 'status']].head())

License & Attribution

This dataset is published under the Creative Commons Attribution 4.0 International (CC BY 4.0) license. You are free to share and adapt the data for any purpose, including commercial use, provided you give appropriate credit:

Source: AI Data Center Index (aidatacenterindex.com)

Completeness

Want to know how complete the dataset is before you analyze it? Visit /coverage/ for field-by-field completeness across capacity, coordinates, sources, energy, AI focus, and timeline metadata.