GET /city/{name}?deep=true

Population API

Look up a place. Add its population.

Try it

Example response/city/charlotte?deep=true
{
  "name": "Charlotte",
  "name_local": null,
  "type": "city",
  "state": "NC",
  "state_name": "North Carolina",
  "district": "37119",
  "district_name": "Mecklenburg",
  "country": "US",
  "country_name": "United States",
  "latitude": 35.209045,
  "longitude": -80.83099,
  "timezone": "America/New_York",
  "id": "city_mb8mbqrkz8zb",
  ?deep=true
}

1M requests · $20/mo. Get started

What comes back.

deep.population

Population estimate on country, state, district, city and postal profiles; included on paid plans

deep.population_period

Observation year or multi-year period for this population estimate (YYYY or YYYY-YYYY). Null when the record has no verified period or population. Never the import date.

1

Call a place API

Country, state, district, city, postal, or continent.

2

Read population

Add deep=true for deep.population on paid place lookups. Continent keeps population in its ordinary response.

3

Keep its period

population_period gives the observation year or multi-year period, beside population. Unknown periods stay null.

Coverage

One field on every place lookup. The number comes from the official source for that layer, refreshed on a schedule. There is no separate /population call.

  • /countryCountryOfficial estimates for 200+ countries.
  • /continentContinentRolled up from the country totals.
  • /stateStateOfficial estimates for states and districts.
  • /cityCityOfficial estimates for matched US, French, Australian, and UK places.
  • /postalPostalUS, French, and Australian codes.
6
place APIs
250
countries

Look up the place whose boundary you need. Add deep=true on a paid plan and read deep.population from country, state, district, city, or postal detail. Continent population stays in the ordinary population field on every plan.

Each number is the published population for that geographic layer. deep.population_period gives its observation year or period, such as 2024 or 2020-2024. Unknown values and periods stay null. A refresh date is never substituted. Population is part of the place response and has no separate endpoint.

Make your first request.

One key works across the APIs. Copy a request in your language and get JSON back.

curl "https://api.parseapi.com/country/us?deep=true" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Parse-Version: 2.0.0"
// Example response · 200
{
  "country": "US",
  "name": "United States",
  "name_local": null,
  "continent": "NA",
  "currency": "USD",
  "currency_name": "United States Dollar",
  "currency_symbol": "$",
  "calling_code": "+1",
  "emoji": "🇺🇸",
  "languages": ["en"],
  "timezones": [
    "America/Adak",
    "America/Anchorage",
    "America/Boise",
    "America/Chicago",
    // ... 25 more
  ],
  "deep": {
    "iso3": "USA",
    "numeric": 840,
    "full_name": "United States of America",
    "demonym": "American",
    "capital": "Washington, D.C.",
    "capital_lat": 38.89,
    "capital_lon": -77.05,
    "region": "Americas",
    "subregion": "Northern America",
    "population": 340110988,
    "population_period": null,
    "area": 9629091,
    "land_area": null,
    "water_area": null,
    "coastline": 19924,
    "elevation": 760,
    "lowest_point": {
      "name": "Death Valley",
      "elevation": -86
    },
    "highest_point": {
      "name": "Mount McKinley",
      "elevation": 6190
    },
    "tld": ".us",
    "borders": ["CA", "MX"],
    "blocs": ["G7", "NATO", "OECD"],
    "week_start": "sunday",
    "units": "imperial",
    "driving_side": "right",
    "plugs": ["A", "B"],
    "voltage": 120,
    "frequency": 60,
    "emergency": {
      "police": "911",
      "ambulance": "911",
      "fire": "911"
    },
    "postal_format": "#####",
    "postal_regex": "^(?:(\d{5})(?:[ \-](\d{4}))?)$",
    "tax": null,
    "tax_rate": null,
    "tax_id_format": null,
    "tax_id_regex": null,
    "ioc": "USA",
    "fifa": "USA",
    "plate": "USA"
  }
}

API referenceSDKsKeys and authentication

Every response field

Response fields

population
Population estimate on /continent; country, state, district, city and postal estimates live in deep.population
deep.population_period
Observation year or multi-year period for this population estimate (YYYY or YYYY-YYYY). Null when the record has no verified period or population. Never the import date.
deep.population
Population estimate on country, state, district, city and postal profiles; included on paid plans

QUESTIONS

Is this its own endpoint?
No. Add deep=true on a paid plan and read deep.population on country, state, district, city, or postal lookups. Continent keeps population in its ordinary response on every plan.
Which period does the population describe?
deep.population_period gives the observation year or multi-year period (YYYY or YYYY-YYYY) on country, state, district, city, and postal detail. Unknown periods stay null. The period is never inferred from an import or refresh date.

Know the population.

Population in paid place lookups. Continent totals on every plan.

Start includes 1M API requests a month for $20/mo.