Skip to main content
GET
Retrieve a complete list of all countries with basic information including ISO codes, phone codes, currencies, and regional data.
Availability: All plans (Community and above). The fields returned vary by tier — see Tier-Based Field Availability below.
Trim and order results: Add ?fields= to limit columns returned, or ?sort= to order the list. Both are available on Starter+ plans. See the Field Filtering & Sorting guide for syntax and per-entity sortable fields.
Additional fields like numeric_code, currency_name, currency_symbol, tld, nationality, population, gdp, area_sq_km, postal_code_format, postal_code_regex, emojiU, translations, and wikiDataId are returned on higher tiers. See the Tier-Based Field Availability section below.

Tier-Based Field Availability

The fields returned depend on your plan’s data access level. translations is part of Full access but is not returned by default: add include_translations=true, or name it in ?fields=. localized_name and matched_locale are computed from the translations rather than stored, and appear only when you pass locale. See Localized Place Names. See Pricing for plan details.

Common Use Cases

Use this endpoint to populate country selection dropdowns in forms.
Get currency information for financial applications.
Cache country data locally as it rarely changes. This reduces API calls and improves application performance.

Authorizations

X-CSCAPI-KEY
string
header
required

API key for authentication. Get your free key at app.countrystatecity.in.

Query Parameters

q
string

Search filter. Case-insensitive match on name and native fields. Min 2 characters. Requires Starter+ plan.

Required string length: 2 - 100
Example:

"india"

fields
string

Comma-separated list of fields to include in the response. id is always included. Requires Starter+ plan.

Example:

"name,iso2,iso3"

sort
string

Comma-separated sort tokens: field or field:asc|desc. E.g. name:asc,iso2:desc. Requires Starter+ plan; you can sort only by fields your plan returns (e.g. population needs Supporter+).

Example:

"name:asc"

locale
string

BCP 47 locale code (e.g. pt-BR) to request a localized name. Adds localized_name (resolved via exact locale → base language → native name → English name fallback) and matched_locale (which tier matched) to each result; name is unaffected. Supporter+ plans only — silently omitted (not an error) on lower tiers. A malformed value is rejected with a 400 on every tier.

Required string length: 2 - 7
Pattern: ^[a-zA-Z]{2}(-[a-zA-Z]{2,4})?$
Example:

"pt-BR"

include_translations
boolean
default:false

When true, includes the full translations field (JSON string keyed by language code). Supporter+ plans only — silently omitted (not an error) on lower tiers. Note that an explicit fields=translations also returns the field and takes precedence over this flag.

Example:

true

Response

List of countries

id
integer<int64>
required

Unique identifier

Example:

101

name
string
required

Country name in English

Example:

"India"

iso2
string
required

ISO 3166-1 alpha-2 code

Example:

"IN"

iso3
string
required

ISO 3166-1 alpha-3 code

Example:

"IND"

phonecode
string

International dialling code

Example:

"91"

capital
string | null

Capital city name

Example:

"New Delhi"

currency
string | null

Currency code

Example:

"INR"

native
string | null

Country name in native language

Example:

"भारत"

emoji
string | null

Flag emoji

Example:

"🇮🇳"

latitude
string | null

Latitude coordinate

Example:

"20.00000000"

longitude
string | null

Longitude coordinate

Example:

"77.00000000"

region
string | null

Geographic region

Example:

"Asia"

region_id
integer | null

Region identifier

subregion
string | null

Geographic subregion

Example:

"Southern Asia"

subregion_id
integer | null

Subregion identifier

timezones
string | null

JSON string of timezone objects with zoneName, gmtOffset, gmtOffsetName, abbreviation, tzName

Example:

"[{\"zoneName\":\"Asia/Kolkata\",\"gmtOffset\":19800,\"gmtOffsetName\":\"UTC+05:30\",\"abbreviation\":\"IST\",\"tzName\":\"Indian Standard Time\"}]"

numeric_code
string | null

ISO 3166-1 numeric code. Coordinates tier and above.

Example:

"356"

currency_name
string | null

Full currency name. Coordinates tier and above.

Example:

"Indian rupee"

currency_symbol
string | null

Currency symbol. Coordinates tier and above.

Example:

"₹"

tld
string | null

Top-level domain. Coordinates tier and above.

Example:

".in"

nationality
string | null

Nationality/demonym. Coordinates tier and above.

Example:

"Indian"

population
integer<int64> | null

Population count. Coordinates tier and above.

gdp
integer<int64> | null

Gross domestic product (USD). Coordinates tier and above.

area_sq_km
number | null

Area in square kilometres. Coordinates tier and above.

postal_code_format
string | null

Postal code format pattern. Coordinates tier and above.

postal_code_regex
string | null

Postal code validation regex. Coordinates tier and above.

emojiU
string | null

Flag emoji Unicode points. Coordinates tier and above.

Example:

"U+1F1EE U+1F1F3"

translations
string | null

JSON string keyed by language code. Supporter+ plans only. Returned when include_translations=true or when fields=translations explicitly requests it.

wikiDataId
string | null

Wikidata item identifier. Full access level only.

Example:

"Q668"

localized_name
string | null

Name resolved via the locale query param's fallback chain (exact locale → base language → native name → English name). Only present when locale was supplied. Supporter+ plans only — silently omitted on lower tiers.

Example:

"Índia"

matched_locale
string | null

Which fallback tier satisfied the locale request: the exact locale (e.g. pt-BR), its base language (e.g. pt), native, or en (English fallback). Only present when locale was supplied. Supporter+ plans only — silently omitted on lower tiers.

Example:

"pt"