Country data, normalized and ready to ship.
One record per country covering names, ISO codes, currencies, languages, capitals, borders, flags, calling codes, timezones, leaders, memberships and demographics, all reconciled from dozens of upstream sources so you don't have to. Pick only the fields you want and get JSON back.
Try a real request
// Fires a real request against the demo API key.
// Click the button below to run it. The response opens in the Explorer panel.
const response = await fetch(
'https://api.restcountries.com/countries/v5?q=canada',
{ headers: { 'Authorization': 'Bearer rc_live_demo' } }
);
const result = await response.json();
Inside one record
Every field you'd expect, on every country
A trimmed sample; records sit under data.objects. Narrow the payload to just what you need with ?response_fields=.
{
"names": { "common": "Canada", "official": "Canada" },
"codes": { "alpha_2": "CA", "alpha_3": "CAN", "ccn3": "124", "fifa": "CAN", "cioc": "CAN" },
"capitals": [{ "name": "Ottawa", "primary": true, "coordinates": { "lat": 45.42, "lng": -75.7 } }],
"flag": { "emoji": "🇨🇦", "url_svg": "https://flags.restcountries.com/v5/svg/ca.svg", "url_png": "https://flags.restcountries.com/v5/w640/ca.png" },
"region": "Americas",
"subregion": "North America",
"area": { "kilometers": 9984670, "miles": 3855101.1 },
"borders": ["USA"],
"calling_codes": ["1"],
"currencies": [{ "code": "CAD", "name": "Canadian dollar", "symbol": "$" }],
"languages": [{ "name": "English", "bcp47": "en" }, { "name": "French", "bcp47": "fr" }],
"leaders": [
{ "name": "Mark Carney", "title": "Prime Minister", "attributes": { "head_of_government": true } }
],
"memberships": { "un": true, "nato": true, "g7": true, "g20": true, "commonwealth": true },
"population": 38005238,
"timezones": ["UTC-08:00", "UTC-07:00", "UTC-06:00", "UTC-05:00", "UTC-04:00", "UTC-03:30"],
"tlds": [".ca"]
}
// trimmed: the full record carries 90+ fields across names, codes, geography,
// economy, demographics, classifications, links and more
Common questions
Before you wire it in
How fresh is the data?
Synced from official sources every 4 hours. Names, leaders, memberships, and statistical fields land in the API the same day they change upstream.
What about edge cases like Kosovo, Taiwan, or Palestine?
All present, with explicit recognition status, alternate names, and the ISO codes the standards bodies actually publish (or omit). We expose the data and let your app decide.
Can I fetch just the fields I need?
Yes. Pass ?response_fields= to narrow the payload to specific fields, or query with ?q= to search by name, code, or capital. See the full reference →
Start building with country data.
Free tier covers most prototypes. Point at /countries/v5 and go.