Skip to main content
GET
/
v1
/
countries
curl -X GET 'https://api.countrystatecity.in/v1/countries' \
  -H 'X-CSCAPI-KEY: YOUR_API_KEY'
[
  {
    "id": 101,
    "name": "India",
    "iso2": "IN",
    "iso3": "IND",
    "phonecode": "91",
    "capital": "New Delhi",
    "currency": "INR",
    "native": "भारत",
    "emoji": "🇮🇳",
    "latitude": "20.00000000",
    "longitude": "77.00000000",
    "region": "Asia",
    "region_id": 3,
    "subregion": "Southern Asia",
    "subregion_id": 14,
    "timezones": "[{\"zoneName\":\"Asia/Kolkata\",\"gmtOffset\":19800,\"gmtOffsetName\":\"UTC+05:30\",\"abbreviation\":\"IST\",\"tzName\":\"Indian Standard Time\"}]"
  }
]

Documentation Index

Fetch the complete documentation index at: https://docs.countrystatecity.in/llms.txt

Use this file to discover all available pages before exploring further.

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 Supporter+ plans. See the Field Filtering & Sorting guide for syntax and per-entity sortable fields.

Authentication

X-CSCAPI-KEY
string
required
Your API key for authentication

Query Parameters

q
string
Search filter on name. Case-insensitive match on name and native fields. Minimum 2 characters. Requires Supporter+ plan. Without this parameter, all results are returned (no plan restriction for search).

Response

id
integer
Unique identifier for the country
name
string
Official country name in English
iso2
string
Two-letter ISO 3166-1 alpha-2 country code
iso3
string
Three-letter ISO 3166-1 alpha-3 country code
phonecode
string
International dialing code for the country
capital
string
Capital city of the country
currency
string
Three-letter ISO 4217 currency code
native
string
Country name in the native language
emoji
string
Flag emoji representation
latitude
string
Country’s approximate latitude
longitude
string
Country’s approximate longitude
region
string
Geographic region name (e.g., Asia, Europe)
region_id
integer
Geographic region ID (foreign key into /regions)
subregion
string
Geographic subregion name (e.g., Southern Asia)
subregion_id
integer
Geographic subregion ID (foreign key into /subregions)
timezones
string
JSON string of timezones (array of {zoneName, gmtOffset, gmtOffsetName, abbreviation, tzName})
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.
curl -X GET 'https://api.countrystatecity.in/v1/countries' \
  -H 'X-CSCAPI-KEY: YOUR_API_KEY'
[
  {
    "id": 101,
    "name": "India",
    "iso2": "IN",
    "iso3": "IND",
    "phonecode": "91",
    "capital": "New Delhi",
    "currency": "INR",
    "native": "भारत",
    "emoji": "🇮🇳",
    "latitude": "20.00000000",
    "longitude": "77.00000000",
    "region": "Asia",
    "region_id": 3,
    "subregion": "Southern Asia",
    "subregion_id": 14,
    "timezones": "[{\"zoneName\":\"Asia/Kolkata\",\"gmtOffset\":19800,\"gmtOffsetName\":\"UTC+05:30\",\"abbreviation\":\"IST\",\"tzName\":\"Indian Standard Time\"}]"
  }
]

Tier-Based Field Availability

The fields returned depend on your plan’s data access level.
TierPlansFields
BasicCommunity, Starter, Legacyid, name, iso2, iso3, phonecode, capital, currency, native, emoji, latitude, longitude, region, region_id, subregion, subregion_id, timezones
CoordinatesSupporterAll Basic + numeric_code, currency_name, currency_symbol, tld, nationality, population, gdp, area_sq_km, postal_code_format, postal_code_regex, emojiU
FullProfessional, BusinessAll Coordinates + translations, wikiDataId
See Pricing for plan details.

Common Use Cases

Use this endpoint to populate country selection dropdowns in forms.
const populateCountryDropdown = async () => {
  const countries = await fetch('/api/countries').then(r => r.json());
  const select = document.getElementById('country-select');
  
  countries.forEach(country => {
    const option = document.createElement('option');
    option.value = country.iso2;
    option.textContent = country.name;
    select.appendChild(option);
  });
};
Get currency information for financial applications.
const getCurrencyInfo = (countries, countryCode) => {
  const country = countries.find(c => c.iso2 === countryCode);
  return {
    code: country.currency,
    symbol: country.emoji
  };
};
Cache country data locally as it rarely changes. This reduces API calls and improves application performance.