mondo.international

API reference

One REST API for the whole platform. JSON only, versioned under /api/v1.

Authentication

Create a key on your account page, then send it as a bearer token. Keys are free.

curl -H "Authorization: Bearer ec_ab12cd34.YOUR_SECRET" \
  "https://mondo.international/api/v1/datasets"

X-API-Key and ?api_key= are accepted too, for tools that cannot set headers.

Authorisation is the licence, not the key

A valid key gets you the catalogue. Observations are served only for datasets whose licence you have accepted for the use you declare. If you have not, the API returns 403 with the exact licence you need and a link to accept it.

{
  "error": {
    "code": "licence_acceptance_required",
    "message": "You have not accepted the licence terms for the requested data...",
    "declined": [{"dataset": "wb-trade-openness", "licence": {"code": "CC-BY-4.0"}, ...}],
    "accept_at": "https://mondo.international/account/"
  }
}

Endpoints

EndpointScopeWhat it returns
GET /api/v1/—Service description and endpoint index
GET /api/v1/meta—Languages, limits, row counts
GET /api/v1/licences—The licence register, machine readable
GET /api/v1/sources—Providers and their terms
GET /api/v1/questions—The question-first navigation as data
GET /api/v1/datasetscatalog:readCatalogue, with your access decision per dataset
GET /api/v1/datasets/<slug>catalog:readOne dataset with indicators and freshness
GET /api/v1/areascatalog:readGeographies with ISO codes
GET /api/v1/observationsdata:readThe data. Licence-gated.
GET /api/v1/searchcatalog:readQuestions, datasets, indicators and areas matching a query
GET /api/v1/freshnesscatalog:readWhen each dataset was last refreshed and whether it is stale

Querying observations

ParameterExampleNotes
datasetwb-trade-opennessSlug. Either this or indicator is required.
indicatorNE.TRD.GNFS.ZS,NE.EXP.GNFS.ZSComma separated source codes
areaCAN,FRA,JPN,CHNISO-3, ISO-2, NUTS or aggregate codes
partnerUSAFor bilateral series only
start / end2000 / 2024Years, inclusive
usecommercialDeclared use for this request; must be permitted by the licence
limit / offset5000 / 0Max 50000
langfren, fr, ja, zh

Try it

curl -H "Authorization: Bearer $EC_KEY" \
  "https://mondo.international/api/v1/observations?dataset=abs-national-accounts&area=CAN,FRA,JPN&start=2010"
curl -H "Authorization: Bearer $EC_KEY" \
  "https://mondo.international/api/v1/observations?dataset=bis-policy-rates&area=CAN,FRA,JPN&start=2010"
curl -H "Authorization: Bearer $EC_KEY" \
  "https://mondo.international/api/v1/observations?dataset=ecb-hicp-inflation&area=CAN,FRA,JPN&start=2010"

Response shape

{
  "count": 45,
  "declared_use": "academic",
  "licences": { "CC-BY-4.0": { "name": "...", "attribution": "..." } },
  "citation": ["Mondo (2026). Trade openness... Licence: CC BY 4.0."],
  "observations": [
    { "dataset": "wb-trade-openness", "indicator": "NE.TRD.GNFS.ZS",
      "area": "CAN", "partner": null, "period": "2024-12-31",
      "value": 67.4, "unit": null, "status": null }
  ]
}

Who may call it

There is no anonymous tier. Every endpoint except this service description requires a key, and a key only works once the address on its account has been confirmed by clicking a link sent to it. That costs a person one click; it costs a script a working mailbox for every key it wants, which is the point.

This is not about charging for the data. The data is free and the keys are free. It is about the API being used by people we can reach if something goes wrong, and about not becoming an anonymous proxy for providers whose terms we accepted on your behalf.

Limits

Default 60/minute. Each key also carries a monthly quota, visible on your account page. Ask if you need more; the point of this platform is that you use the data.