GET
/
v1
/
states
curl -X GET 'https://api.countrystatecity.in/v1/states' \
  -H 'X-CSCAPI-KEY: YOUR_API_KEY'
[
  {
    "id": 4008,
    "name": "Maharashtra",
    "country_id": 101,
    "country_code": "IN",
    "iso2": "MH",
    "type": "state",
    "latitude": "19.75147980",
    "longitude": "75.71388840"
  },
  {
    "id": 1456,
    "name": "California",
    "country_id": 233,
    "country_code": "US",
    "iso2": "CA",
    "type": "state",
    "latitude": "36.17497340",
    "longitude": "-119.76762120"
  }
]
Retrieve a complete list of all states, provinces, regions, and territories from around the world with basic geographical information.

Authentication

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

Response

id
integer
Unique identifier for the state/province
name
string
Official name of the state/province
country_id
integer
Unique identifier of the parent country
country_code
string
ISO2 code of the parent country
iso2
string
ISO2 code for the state/province
type
string
Administrative division type (e.g., “state”, “province”, “region”)
latitude
string
Approximate latitude coordinate of the state/province center
longitude
string
Approximate longitude coordinate of the state/province center
curl -X GET 'https://api.countrystatecity.in/v1/states' \
  -H 'X-CSCAPI-KEY: YOUR_API_KEY'
[
  {
    "id": 4008,
    "name": "Maharashtra",
    "country_id": 101,
    "country_code": "IN",
    "iso2": "MH",
    "type": "state",
    "latitude": "19.75147980",
    "longitude": "75.71388840"
  },
  {
    "id": 1456,
    "name": "California",
    "country_id": 233,
    "country_code": "US",
    "iso2": "CA",
    "type": "state",
    "latitude": "36.17497340",
    "longitude": "-119.76762120"
  }
]

Common Use Cases

Analyze administrative divisions across different countries.
const analyzeStateTypes = (states) => {
  const typeCount = states.reduce((acc, state) => {
    acc[state.type] = (acc[state.type] || 0) + 1;
    return acc;
  }, {});
  
  console.log('State types distribution:', typeCount);
  return typeCount;
};
Use coordinate data for mapping applications.
const getStatesBounds = (states) => {
  const lats = states.map(s => parseFloat(s.latitude));
  const lngs = states.map(s => parseFloat(s.longitude));
  
  return {
    north: Math.max(...lats),
    south: Math.min(...lats),
    east: Math.max(...lngs),
    west: Math.min(...lngs)
  };
};
This endpoint returns a large dataset (5000+ states). Consider using the filtered endpoints for better performance in most applications.