v1 · free tier · bearer-token auth

API.

Read access to every data center, operator, country, and cloud region in the atlas. JSON or CSV, open CORS, edge-cached. Anonymous access is rate-limited per IP; create a free key for 10× the quota.

Base URL
/api/v1
Auth
bearer (optional)
Formats
json · csv
CORS
open (any origin)

§1Quick start

List the 5 largest German facilities by Equinix
curl 'https://datacenters.world/api/v1/facilities?country=DE&operator=Equinix&limit=5'

§2Endpoints

GET/api/v1/facilitiesPaginated list of data centers. The workhorse endpoint.
Query params
countryISO-3166-1 alpha-2 codes, comma-separatedcountry=DE,FR
operatorOperator name. Single value uses prefix match; multiple values use exact match.operator=Equinix
min_power_mwMinimum published power capacity (MW)min_power_mw=10
statusoperational | under_construction | plannedstatus=operational
limit1–500, default 50limit=100
offset0+, default 0offset=100
formatjson (default) or csvformat=csv
Example
curl 'https://datacenters.world/api/v1/facilities?country=US&limit=2'
Response (truncated)
{
  "data": [
    {
      "slug": "equinix-inc-equinix-dc1-...",
      "name": "Equinix DC1-DC15,DC21-DC22 - Ashburn",
      "operator": "Equinix, Inc.",
      "code": null,
      "city": "Ashburn",
      "country": "US",
      "lat": 39.018593,
      "lng": -77.539233,
      "status": "operational",
      "power_mw": null,
      "space_sqft": null,
      "ups_redundancy": null,
      "uptime_sla": null,
      "network_count": 504,
      "ix_count": 7
    }
  ],
  "meta": {
    "total": 1372,
    "returned": 2,
    "limit": 2,
    "offset": 0,
    "next_offset": 2
  }
}
GET/api/v1/facilities/{slug}Full record for a single facility — specs, networks, IXPs, and source records (with provenance URLs).
Example
curl 'https://datacenters.world/api/v1/facilities/equinix-inc-equinix-ny2-ny4-ny5-ny6-new-york-secaucus-secaucus'
Response (truncated)
{
  "data": {
    "slug": "equinix-inc-equinix-ny2-...",
    "name": "Equinix NY2/NY4/NY5/NY6 - New York, Secaucus",
    "operator": "Equinix, Inc.",
    "power_mw": null,
    "space_sqft": 129436,
    "tier": null,
    "uptime_sla": "99.9999%+",
    "ups_redundancy": "N+1",
    "certifications": ["FISMA", "HIPAA", "ISO 27001", ...],
    "networks": [ /* 129 ASNs with name, AS#, policy */ ],
    "ixes":     [ /* 10 internet exchanges */ ],
    "sources":  [ /* 5 source records with URLs + fetched_at */ ],
    "network_count": 129,
    "ix_count": 10
  }
}
GET/api/v1/operatorsOperators ranked by facility count, with country breadth.
Query params
countryRestrict to operators present in these countriescountry=DE,FR
min_facilitiesMinimum facility countmin_facilities=5
limit1–1000, default 100limit=20
formatjson or csvformat=csv
Example
curl 'https://datacenters.world/api/v1/operators?limit=5'
Response (truncated)
{
  "data": [
    { "operator": "Equinix, Inc.",   "facility_count": 213, "country_count": 35 },
    { "operator": "Digital Realty",  "facility_count": 140, "country_count": 22 },
    { "operator": "DataBank, Ltd.",  "facility_count":  63, "country_count":  2 },
    { "operator": "Cogent Communications, Inc.", "facility_count": 55, "country_count": 7 },
    { "operator": "EXA Infrastructure", "facility_count": 53, "country_count": 11 }
  ],
  "meta": { "total": 5 }
}
GET/api/v1/countriesAll countries with at least one facility, ranked by count.
Query params
formatjson or csvformat=csv
Example
curl 'https://datacenters.world/api/v1/countries?format=csv' -o countries.csv
Response (truncated)
{
  "data": [
    { "country": "US", "country_name": "United States", "facility_count": 1372 },
    { "country": "DE", "country_name": "Germany",        "facility_count":  359 },
    { "country": "BR", "country_name": "Brazil",         "facility_count":  303 }
  ],
  "meta": { "total": 148 }
}
GET/api/v1/cloud-regionsAll public cloud regions across AWS, GCP, Azure, and Oracle.
Query params
provideraws | gcp | azure | oracle, comma-separatedprovider=aws,gcp
countryISO-3166-1 alpha-2 codescountry=DE
formatjson or csvformat=csv
Example
curl 'https://datacenters.world/api/v1/cloud-regions?provider=aws&country=DE'
Response (truncated)
{
  "data": [
    {
      "provider": "aws",
      "code": "eu-central-1",
      "name": "Europe (Frankfurt)",
      "city": "Frankfurt",
      "country": "DE",
      "lat": 50.1109,
      "lng": 8.6821,
      "launched_year": 2014
    }
  ],
  "meta": { "total": 1 }
}

§3Conventions

Response envelope

All JSON responses are { data, meta }. data is the result; meta carries pagination and totals.

Errors

Non-2xx responses use { "error": { "message", "status" } }.

Pagination

Pass limit + offset. The response includes meta.next_offset (or null when exhausted).

Caching

Lists: 5-minute edge cache. Details & aggregates: 1-hour. All responses use stale-while-revalidate.

CSV exports

Append ?format=csv. Nested fields are serialized to JSON inside their cell.

CORS

Open to any origin. No preflight required for plain GETs without custom headers.

§4Authentication

Anonymous access works at a rate-limited tier — useful for casual probing and citation. For sustained or programmatic use, pass an API key via the Authorization header. Keys are issued from the dashboard after signing in with GitHub. Free tier is 10,000 requests/month, no card required.

Authenticated request
curl 'https://datacenters.world/api/v1/facilities?country=DE&limit=5' \
     -H 'Authorization: Bearer dcw_…'

Every response sets X-RateLimit-Tier, X-RateLimit-Limit, and X-RateLimit-Remaining. When you exceed the quota, the API returns 429 Too Many Requests with a JSON error body. Keys are sha256-hashed at rest; we never store the plaintext.

§5Pricing

TierQuotaPriceFor
Anonymous1,000 / day per IPCasual probing, citations.
Free10,000 / month$0Hobbyists, evaluation, indie tools.
Pro100,000 / monthcoming soonProduction services, dashboards, internal tools.
Team1,000,000 / monthcoming soonBulk analytics, market research, embedded data.
EnterprisecustomcontactSLA, custom exports, on-prem mirror.

Pro and Team tiers ship next via Polar.sh. Existing keys upgrade in place — no migration.

§6Versioning and stability

All endpoints live under /api/v1/. Breaking changes ship under a new major (/api/v2/) — never inside v1. Additive changes (new optional query params, new response fields) ship without version bump.

§7Roadmap (post-v1)

  • Paid tier checkout — Pro and Team subscriptions via Polar.sh, with the same key flipping in place.
  • More filters min_networks, has_pue, geospatial near=lat,lng&radius_km=.
  • Search /api/v1/search?q= backed by Postgres full-text + trigrams.
  • OpenAPI spec at /api/v1/openapi.json once the surface stabilizes.

§8Get in touch

Building something with this? Tell us — we’ll prioritize the filters and exports you need. Need higher limits, an SLA, or a one-off bulk export today? Get in touch.

Methodology

Data from PeeringDB (CC-BY-SA), OpenStreetMap (ODbL), and operator-published facility pages · Citing the API is appreciated · No usage analytics