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
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 - Success
401 - Unauthorized
[
{
"id" : 101 ,
"name" : "India" ,
"iso2" : "IN" ,
"iso3" : "IND" ,
"phonecode" : "91" ,
"capital" : "New Delhi" ,
"currency" : "INR" ,
"native" : "भारत" ,
"emoji" : "🇮🇳"
},
{
"id" : 233 ,
"name" : "United States" ,
"iso2" : "US" ,
"iso3" : "USA" ,
"phonecode" : "1" ,
"capital" : "Washington" ,
"currency" : "USD" ,
"native" : "United States" ,
"emoji" : "🇺🇸"
}
]
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.