REST Countries

Changelog

Changes shipped to the API, including new fields, new query parameters, and platform updates.

Jul 2026

Launched Currencies API: currency conversion and exchange rates across fiat and crypto are now publicly available at /currencies/v1, with convert, rates, and symbols endpoints sharing the same account, key, and quota as the Countries API
Added /docs/currencies: full Currencies API reference covering every endpoint, parameter, and response shape, plus freshness and as_of semantics, error codes, and ready-to-run examples
Launched Country pages: browse and filter every country by name, ISO code, or region, then open any country for its flag, region, capital, population, currencies, languages, and codes, plus a ready-to-run API request
Added units.measurement_system and units.temperature_scale: every country now reports whether it uses the metric or imperial system and the Celsius or Fahrenheit scale
Launched Currencies (beta): per-currency data and exchange rates are now available for testing ahead of general availability
Added leaders now include structured image assets for a range of political leaders, including portraits and source metadata where available, so applications can display leader profiles without maintaining their own media lookup pipeline

Jun 2026

Changed Decreased dashboard page load time by optimizing statistics collection
Changed Decreased page load time of web app by excluding unrequired SVG and JS files
Launched Flag gallery: browse and search every flag on the Flag CDN by country name, ISO code, or region, then preview any flag and copy its URL in your chosen format, size, and shape
Launched Flags by region: dedicated gallery pages for Africa, Americas, Asia, Europe, and Oceania
Added England, Scotland, Wales, and Northern Ireland flags are now selectable in the flag picker and gallery, bringing the Flag CDN to 254 flags
Launched Use cases: worked use cases for putting the country data API to use, starting with a country picker — a drop-in <select> of every country built from the live API
Added flag.colors.prominent: the single flag color covering the largest share of the flag's area, as a hex string
Fixed flag.colors.swatches now always includes all six roles; a role the flag has no matching color for is null instead of being omitted
Changed flag.colors.palette entries changed from hex strings to {hex, proportion} maps, each pairing a color with the share (0–1) of the flag it covers
Fixed A render bug with the Belize SVG flag
Added flag.colors: color data extracted from every country flag. flag.colors.dominant (dominant hex), flag.colors.palette (full hex palette), and flag.colors.swatches (semantic role-to-hex map: vibrant, muted, dark_vibrant, dark_muted, light_vibrant, light_muted)
Fixed Slow server response during sign up and API key change flows
Launched OpenAPI spec: machine-readable coverage for the public /v5 endpoints, parameters, and response shapes for client generation and API-tool imports
Added Edge rate limiting: sustained traffic above 20 requests per second now returns 429 Too Many Requests before it reaches the API (see rate limiting)
Fixed Somaliland currency metadata now returns the corrected currency entries
Changed Default flag PNG URLs now use the 640px width bucket instead of the 160px bucket, giving integrations a sharper default raster image
Fixed Usage graphs now bucket requests into the correct time intervals across the selected dashboard range
Fixed Bulgaria currency metadata now returns the corrected currency value
Launched /v5 goes public alongside the new restcountries.com: first public-facing build of the docs, marketing pages, and developer onboarding flow
Launched Free Flag CDN: public domain country flag images served from a global CDN, covering 254 flags and 11,684 generated image URLs across PNG, JPG, GIF, SVG, sizes, and shapes without requiring an account or API key
Launched Per-key CORS controls: browser-origin requests are blocked by default unless the key allows the origin hostname, so browser-based apps can restrict where a key is accepted without proxying every request through their own backend (see Browser usage & CORS)

May 2026

Launched Account state machine: disabled, frozen, and pendingApproval, each with documented behaviour and a clear path back to active (see Account states)
Launched Webhooks: signed POSTs when dynamic fields like leaders or population change (see /docs/webhooks)
Launched API key management: issue, revoke, and expire keys from the dashboard
Launched Self-serve billing: plan checkout, upgrades, downgrades, and billing-cycle switches from the billing page
Launched Account dashboard with usage graphs: request volume, status-code mix, and top endpoints
Launched Account, billing, and webhook notification emails
Added members: convenience array of every organization the country belongs to, mirroring the memberships.* booleans in a single iterable
Added classifications: convenience array rolling up the classification.* flags into a single iterable for easier consumption
Added leaders: current head of government and head of state, synced every 4 hours from authoritative sources
Added memberships.*: booleans for UN, UN observer, African Union, Arab League, ASEAN, BRICS, Commonwealth, EU, Eurozone, G7, G20, NATO, OECD, OPEC, and Schengen
Added classification.*: sovereign, disputed, iso_status, un_member, dependency, and dependency_type (crown dependency, overseas territory, SAR, etc.)
Added parent.alpha_2 and parent.alpha_3: explicit parent linking for dependent entities like overseas territories, crown dependencies, and special administrative regions
Added government_type: the country's political system (federal republic, constitutional monarchy, etc.)
Added capitals with role flags: primary, constitutional, administrative, executive, legislative, and judicial, so countries with split-capital arrangements are represented properly
Added economy.gini_coefficient as a year → value map: historical Gini tracking instead of a single point-in-time value
Added date.fiscal_year_start.government, .corporate, and .personal: three separate fiscal-year starts per country, since they rarely line up
Added date.start_of_week and date.academic_year_start: calendar metadata for scheduling and localization use cases
Added postal_code.format and postal_code.regex: ready-to-use validation patterns for address forms
Added number_format.decimal_separator and number_format.thousands_separator: locale-correct numeric formatting per country
Added codes.fips and codes.gec: rounding out the country-code surface alongside the existing alpha_2, alpha_3, ccn3, cioc, and fifa
Added flag.html_entity and flag.description: on top of the existing emoji, Unicode, PNG, and SVG variants of the flag
Added links.wikipedia and links.official: on top of the existing links.google_maps and links.open_street_maps
Added uuid: stable per-country identifier that survives code revisions, useful for primary keys in downstream systems

Apr 2026

Released /v5: Bearer auth, q + per-property filters, aggregates, response_fields shaping, pretty, limit / offset pagination, and the full 80+ field surface
Launched /docs: full REST Countries documentation site with an in-page Explorer for firing live requests against your key
Launched Long-term version stability policy: /v5 stays additive forever; breaking changes go to a new major (see Versioning)
Added Bearer-token authentication on every /v5 endpoint: Authorization: Bearer {key} or ?api-key= for browser-side testing
Added Demo keys: sandbox access that returns sample payloads without burning quota, so the docs and homepage can fire live requests without an account
Changed Monthly request limits moved from a hard cap to a soft cap: email alerts at 50 / 80 / 100% and a grace period before 403s start (see Monthly request limits)
Added ?q=: full-text search across every searchable property, case-insensitive substring match
Added Per-property filter chains with AND-semantics: e.g. ?region=Europe&landlocked=1
Added Aggregate searches: /v5/code?q= spans every code property (alpha_2, alpha_3, ccn3, fips, gec, fifa, cioc); /v5/name?q= spans common, official, native, and alternates
Added limit + offset pagination: 1–100 per page, default 25
Added response_fields: comma-separated dot-path projection for picking exactly the slice of the schema you need, with no field-count cap
Added response_fields_omit: comma-separated blocklist for response shape; complements response_fields for trimming heavy branches like names.translations off otherwise-full payloads
Added pretty: human-readable JSON without re-piping through jq
Added Country dataset: 250+ countries with the 80+ field schema covering names, codes, geography, governance, economy, telecom, calendars, and links

Feb 2026

Started REST Countries v5 development began