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.
Authentication
Your API key for authentication
Query Parameters
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
Unique identifier for the country
Official country name in English
Two-letter ISO 3166-1 alpha-2 country code
Three-letter ISO 3166-1 alpha-3 country code
International dialing code for the country
Capital city of the country
Three-letter ISO 4217 currency code
Country name in the native language
Flag emoji representation
Country’s approximate latitude
Country’s approximate longitude
Geographic region name (e.g., Asia, Europe)
Geographic region ID (foreign key into /regions)
Geographic subregion name (e.g., Southern Asia)
Geographic subregion ID (foreign key into /subregions)
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
cURL (with search)
Python
JavaScript
PHP
Go
Java
Ruby
curl -X GET 'https://api.countrystatecity.in/v1/countries' \
-H 'X-CSCAPI-KEY: YOUR_API_KEY'
200 - Basic tier (Community, Starter, Legacy)
200 - Coordinates tier (Supporter) — basic plus
200 - Full tier (Professional, Business) — coordinates plus
401 - Unauthorized
[
{
"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.
Tier Plans Fields Basic Community, Starter, Legacy id, name, iso2, iso3, phonecode, capital, currency, native, emoji, latitude, longitude, region, region_id, subregion, subregion_id, timezonesCoordinates Supporter All Basic + numeric_code, currency_name, currency_symbol, tld, nationality, population, gdp, area_sq_km, postal_code_format, postal_code_regex, emojiU Full Professional, Business All Coordinates + translations, wikiDataId
See Pricing for plan details.
Common Use Cases
Country Selector Dropdown
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.