← Docs

Point API

Country, state, district, and timezone at a coordinate.

Give it a latitude and longitude to resolve the country, state, district and timezone at that point. Deep adds terrain elevation and a compact nearest-city summary.

Out in the ocean, place fields come back null. Requested deep can still return terrain elevation. Lakes and rivers are not a special case, they belong to whatever country and state surround them. Only need elevation? /elevation stays the focused tool.

Lookup

GET
api.parseapi.com/point?lat={lat}&lon={lon}
Country, state, district and timezone for a point
Explore
Parameters 5
formatstring · query · optional

Optional geojson returns a Feature: exact [longitude, latitude] geometry and the same selected facts in properties. Content-Type: application/geo+json. Omit for ordinary JSON.

Values: geojson

latnumber · query · required

Latitude

lonnumber · query · required

Longitude

langstring · query · optional

Display language as one BCP 47 tag, such as fr or zh-Hant. Changes supported display labels only; IDs, codes, native names, facts, parsing and deep access stay unchanged. Omit for the original response. Unsupported regions use the supported language base; unsupported languages or scripts use English. Missing labels retain their source value. Accept-Language is not read automatically. Available on the current API contract; frozen 1.0.0 is unchanged.

Length: 2 to 64 characters

deepboolean · query · optional

Terrain elevation, a compact nearest-city summary, and supported US electoral area code, name and Congress number. Included on paid plans. Existing accounts retain their current Deep access.

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

Run this Deep example with a paid-plan key. Deep is included in the pooled request, with no separate lookup charge.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.point(39.77, -104.9, { deep: true });
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "latitude": 39.77,
  "longitude": -104.9,
  "district": "08031",
  "district_name": "Denver",
  "state": "CO",
  "state_name": "Colorado",
  "country": "US",
  "country_name": "United States",
  "timezone": "America/Denver",
  "deep": {
    "elevation": 1610,
    "elevation_ft": 5282
  }
}

Response fields

latitudenumber
Input latitude
longitudenumber
Input longitude
districtstring or null
District code (US county FIPS, FR INSEE department, GB GSS, null elsewhere)
district_namestring or null
District / ADM2 name
statestring or null
State / ADM1 code
state_namestring or null
State / ADM1 name
countrystring or null
ISO2 country code (null over open ocean)
country_namestring or null
Country name
timezonestring or null
IANA timezone containing the coordinate; a nautical zone over open ocean, or null when unresolved

Got a district code back? Resolve it at /district/{code}.

Deep

?deep=true adds elevation and a compact nearest city on paid plans. Existing accounts retain their current Deep access. Timezone stays in Core.

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

Run this Deep example with a paid-plan key. Deep is included in the pooled request, with no separate lookup charge.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.point(39.77, -104.9, { deep: true });
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "latitude": 39.77,
  "longitude": -104.9,
  "district": "08031",
  "district_name": "Denver",
  "state": "CO",
  "state_name": "Colorado",
  "country": "US",
  "country_name": "United States",
  "timezone": "America/Denver",
  "city_id": "city_ccvrzq54e65m",
  "deep": {
    "electoral": {
      "code": "0801",
      "name": "Congressional District 1",
      "congress": 119
    },
    "city": {
      "name": "Denver",
      "name_local": null,
      "type": "city",
      "state": "CO",
      "state_name": "Colorado",
      "country": "US",
      "country_name": "United States",
      "latitude": 39.76185,
      "longitude": -104.881105,
      "distance": 1.85,
      "distance_mi": 1.15,
      "id": "city_ccvrzq54e65m"
    },
    "elevation": 1610,
    "elevation_ft": 5282
  }
}

Deep fields

deep.cityobject or null
Compact nearest-city identity and location, including distance and distance_mi; null when no city is within 200 km
deep.electoralobject or null
Electoral area in the national lower-house or sole legislative chamber, with code, name and congress; null without a supported exact match
deep.electoral.codestring
Opaque code at the exact input coordinates, qualified by its country and current boundary edition. Preserve the exact string, including letters and leading zeros; it is not a globally unique or permanent identifier. Current coverage is US congressional districts for the 119th Congress: two-digit state FIPS plus two-digit district. Preserves leading zeros; 00 is at-large, 98 is a delegate district, and 99 is unsupported. The electoral object is null outside supported US boundaries, on a boundary, with multiple matches, or when data is unavailable. Separate from the administrative district
deep.electoral.namestring or null
Official electoral area name; null when a verified name is unavailable. Current US coverage returns the literal Census name for the 119th Congress. Separate from the administrative district_name
deep.electoral.congressnumber or null
US-only Congress number: 119 for current supported US electoral areas; null otherwise, including non-US national legislatures
deep.elevationnumber or null
Elevation in meters (null if unavailable)
deep.elevation_ftnumber or null
Elevation in feet (null if unavailable)

In a mobile app

Ship an app key and the Swift or Kotlin SDK. They send your bundle ID as X-App-Id. Coordinates from the device, place and elevation back.

import ParseAPI

let parse = try ParseAPI("parse_app_...")
let point = try await parse.point(lat, lon, deep: true)
import com.parseapi.ParseAPI

val parse = ParseAPI("parse_app_...") {
    appId = BuildConfig.APPLICATION_ID
}
val point = parse.point(lat, lon) { deep = true }

Display language

Pass lang with a language tag such as fr, pt-BR, or zh-Hant. Existing geographic display labels with a stable source identifier, including nested records. Country names are covered; other place names use separately sourced translations when available.

Omitting lang preserves the original response. Codes, IDs, numeric facts and native-name fields stay unchanged. Missing translations keep their existing source value; unknown values stay null. A preserved name_local may equal the translated name.

Send a chosen browser preference explicitly, for example { lang: navigator.language } in your JavaScript SDK options. The API does not read Accept-Language automatically. Unsupported regions fall back to their supported base language; unsupported languages or scripts use English. Empty, invalid or repeated tags return 400.

Content-Language identifies languages used in translated display fields and known English fallbacks. This option follows the current API contract. Requests selecting frozen 1.0.0 retain that contract. Select API 2.0.0 to use display language.

33 display language choices
Language tagLanguage
enEnglish
arالعربية
cacatalà
hrhrvatski
csčeština
dadansk
nlNederlands
fisuomi
frfrançais
deDeutsch
elΕλληνικά
heעברית
hiहिन्दी
humagyar
idIndonesia
ititaliano
ja日本語
ko한국어
msMelayu
nbnorsk bokmål
plpolski
ptportuguês
roromână
ruрусский
zh-Hans简体中文
skslovenčina
esespañol
svsvenska
thไทย
zh-Hant繁體中文
trTürkçe
ukукраїнська
viTiếng Việt

Build with Point

All tutorials →

Questions? Email