Skip to main content
GET
Retrieve all cities within a specific state or province using both the country’s ISO2 code and the state’s ISO2 code. This provides the most targeted city 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.
City responses on the Basic tier return id, name, and kind. Upgrading to Supporter+ unlocks the full field set: state_id, state_code, country_id, country_code, latitude, longitude, timezone, population, type, level, parent_id, native, translations, and wikiDataId. See Tier-Based Field Availability below.

Common Use Cases

Build three-level dropdowns for Country → State → City selection.
Define service coverage areas by state and city combinations.
This is the most efficient endpoint for building cascading location selectors as it provides the smallest, most relevant dataset.
This endpoint provides the optimal balance between data size and specificity, making it ideal for form controls and location-based filtering.

Tier-Based Field Availability

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.

Authorizations

X-CSCAPI-KEY
string
header
required

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

Path Parameters

ciso
string
required

ISO2 code of the country (e.g., IN)

Example:

"IN"

siso
string
required

ISO2 code of the state (e.g., MH)

Example:

"MH"

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:

"mum"

kind
string

Filter by derived place classification. Comma-separated list of settlement, administrative, section, unknown. Free on every plan. Invalid values return 400 listing the accepted values.

Example:

"settlement"

type
string

Filter by the raw source type value. Comma-separated, e.g. city,adm2. Requires Supporter+ plan (type is an extended field); lower plans receive 400 rather than the filter being ignored. Unrecognised values match zero rows.

Example:

"city"

fields
string

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

Example:

"name,latitude,longitude"

sort
string

Comma-separated sort tokens: field or field:asc|desc. Requires Starter+ plan.

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 cities

id
integer<int64>
required

Unique identifier

Example:

57606

name
string
required

City name in English

Example:

"Mumbai"

kind
enum<string>

Derived classification of the place, computed from type. Returned on every tier, including Basic. See City Types.

Available options:
settlement,
administrative,
section,
unknown
Example:

"settlement"

state_id
integer<int64>

Parent state ID. Coordinates tier and above.

state_code
string

Parent state ISO2 code. Coordinates tier and above.

Example:

"MH"

country_id
integer<int64>

Parent country ID. Coordinates tier and above.

country_code
string

Parent country ISO2 code. Coordinates tier and above.

Example:

"IN"

latitude
string

Latitude coordinate. Coordinates tier and above.

Example:

"19.07283000"

longitude
string

Longitude coordinate. Coordinates tier and above.

Example:

"72.88261000"

timezone
string | null

IANA timezone identifier. Coordinates tier and above.

Example:

"Asia/Kolkata"

population
integer<int64> | null

Population count. Coordinates tier and above.

type
string | null

Raw source settlement type, e.g. city, adm2. See City Types. Coordinates tier and above.

level
integer | null

Administrative level. Coordinates tier and above.

parent_id
integer<int64> | null

Parent city ID. Coordinates tier and above.

native
string | null

Name in native language. Coordinates tier and above.

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:

"Q1156"

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:

"Mumbai"

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:

"en"