Coordinates · Place · Timezone

Point API

Turn coordinates
into a place.

Get the country, state, district and timezone for a map click, GPS reading or geotagged photo. Add a nearby city and terrain with Deep.

Core on every plan. Deep on paid plans.

Try it

Example response/point?lat=39.77&lon=-104.9&deep=true
{
  "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=true
    "elevation": 1610,
    "elevation_ft": 5282,
    
      "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"
    },
    
      "code": "0801",
      "name": "Congressional District 1",
      "congress": 119
    }
  }
}

GeoJSON output

From the response
onto the map.

Choose a location and switch between JSON and GeoJSON. The map draws the returned coordinate; the response keeps its country, state, district and timezone.

Same point. Same place facts.

GET /point?lat=39.77&lon=-104.9&format=geojson

Looking up the point…

The pin uses the coordinates in the response. No area boundaries are returned.

application/geo+json

Loading the response…

GeoJSON puts longitude first, then latitude, inside geometry.coordinates. Place details move into properties. Ocean coordinates stay on the map with null place details.

From your map to your app

A point in.
A place out.

Start with the place and its timezone. Choose a scenario to see the request and complete JSON together.

A coordinate becomes a place.

One point in Denver returns its country, state, county and timezone. Keep the codes for your app and the names for your interface.

Request

curl "https://api.parseapi.com/point?lat=39.77&lon=-104.9&deep=true" \
  -H "X-API-Key: YOUR_API_KEY"

Example response

JSON200 OK
{
  "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",
  
    "elevation": 1610,
    "elevation_ft": 5282,
    
      "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"
    },
    
      "code": "0801",
      "name": "Congressional District 1",
      "congress": 119
    }
  }
}

Full API reference

Optional Deep

Add the city.
Read the terrain.

Add terrain height and a nearby city for a photo caption, a map panel or a location record. Deep keeps the place and timezone from the ordinary response.

/point?lat=39.77&lon=-104.9&deep=true

One coordinate in Denver.
Nearby city
Denver
Elevation
1,610 m / 5,282 ft
Timezone
America/Denver
The timezone at your point
Use the IANA identifier to display time in your application. The timezone is part of the ordinary response.
Terrain in meters and feet
Read elevation in both units. Ocean depths use negative values.

U.S. representation

Put the point
in its district.

Read the electoral area at the supplied coordinate. Deep returns the district code, its literal Census name and the Congress number alongside the location.

U.S., D.C. and territories. 119th Congress.

38.8977, -77.0365

Washington, D.C.

Electoral area name
Delegate District (at Large)
Electoral area code
1198
Congress number
119

Point → State · Time · Weather

Use the place behind the pin.

Point gives your coordinate its place names and codes. Use its state code for a state lookup, its timezone for local time, or its coordinates for nearby weather.

Look up the coordinate

/point?lat=39.77&lon=-104.9

Fields from the response

{
  "latitude": 39.77,
  "longitude": -104.9,
  "state": "CO",
  "country": "US",
  "timezone": "America/Denver"
}

This Denver point returns state CO, country US and timezone America/Denver. The location names are already included.

  • Use state + country

    Explore the state

    /state/CO?country=US

    Use CO with US to look up the state and its timezones. Keep Point's timezone for the coordinate itself.

  • Use timezone

    Use the timezone at the pin

    /time/America/Denver

    Pass Point’s timezone to Time. Keep the timezone from the coordinate when a state spans several zones.

  • Use latitude + longitude

    Get weather near the pin

    /weather?lat=39.77&lon=-104.9

    Reuse the coordinate for the nearest supported station's observation, with its reading time and distance from the pin.

Use this in your app
JavaScript
// Run on your server with PARSEAPI_KEY in the environment.
const key = process.env.PARSEAPI_KEY;
if (!key) throw new Error('Set PARSEAPI_KEY on your server.');
const segment = value => encodeURIComponent(value);
const timezonePath = zone => zone.split('/').map(segment).join('/');

async function lookup(path, query = {}) {
  const url = new URL(path, 'https://api.parseapi.com');
  url.search = new URLSearchParams(query).toString();
  const response = await fetch(url, {
    headers: { 'X-API-Key': key, 'Parse-Version': '2.0.0' },
    signal: AbortSignal.timeout(10000),
  });
  if (!response.ok) {
    const error = await response.json().catch(() => null);
    throw new Error(error?.message ?? 'ParseAPI returned HTTP ' + response.status);
  }
  return response.json();
}

const point = await lookup('/point', { lat: '39.77', lon: '-104.9' });
const [state, time, weather] = await Promise.all([
  point.state && point.country
    ? lookup('/state/' + segment(point.state), { country: point.country })
    : null,
  point.timezone ? lookup('/time/' + timezonePath(point.timezone)) : null,
  Number.isFinite(point.latitude) && Number.isFinite(point.longitude)
    ? lookup('/weather', { lat: String(point.latitude), lon: String(point.longitude) })
    : null,
]);
console.log({ point, state, time, weather });

Location data

Ready for a
world of coordinates.

Use the same latitude and longitude input for a local map pin, an international photo or a point at sea.

Country and timezone
Worldwide geography and IANA timezone identifiers. Open-ocean points use a nautical timezone.
State and district
Administrative divisions where mapped. District coverage includes the U.S., France and Great Britain.
Terrain
Land elevation and ocean depth, with measurement units in the response.

From your first request to your application

Build it into
your app.

Send latitude and longitude over HTTP or from your SDK. Use the same key for Point and the other ParseAPI products in your application.

HTTP, SDKs and MCP

Copy a request above, or use the Point method in your language. MCP brings the same lookup to your agent.

Continue with Time for local clocks and conversions, or Elevation for terrain along a path.

Before you build.

What does a coordinate return?

Send latitude and longitude to get the country, state, administrative district and IANA timezone where available. The response keeps your coordinates. Missing names and codes stay null.

Does the nearest city contain my point?

Deep compares your coordinate with recorded city centers. It returns the closest center within 200 km, with straight-line distance in kilometers and miles. It does not test municipal boundaries. If no eligible center is nearby, city stays null.

Can I use the timezone for local time?

Yes. Point returns an IANA timezone ID, such as America/Denver, for use with a date and time library. Use the Time API for local clock time, UTC offsets, daylight saving changes or a conversion between places.

How do electoral and district differ?

district is the administrative area, such as a county. The electoral object identifies the area for the national lower-house or sole legislative chamber. On paid plans, deep.electoral.code is the country-specific code at your exact coordinate. Keep it as a string; letters and leading zeros depend on the country, and codes belong to the current boundary edition. Current coverage is US congressional districts and territories for the 119th Congress. deep.electoral.congress is the US Congress number, currently 119; it is null for other national legislatures. deep.electoral.name is the literal Census name for the matched district, or null when unavailable. Unsupported locations, exact boundary points and unavailable data return null. Deep is included on paid plans; existing accounts keep their current Deep access.

Which countries are covered?

Country and timezone lookup work worldwide. State coverage varies by country. The district layer covers the US, France and Great Britain, using a county or equivalent administrative area. Missing boundaries stay null. Open ocean returns a nautical timezone with null administrative fields.

How is Point priced?

Core is available on every plan. Deep is included on paid plans; existing accounts keep their current Deep access. Each lookup uses one API request from your shared plan allowance, with no additional unit or charge for Deep.

See what time zone you are in, or what county you are in.

Point API pricing

Start with a point.

Core on every plan. Deep on paid plans. Your API request allowance is shared across ParseAPI products.

Free

Start free

Try Point with a free API key.

Room to grow

See plans

Choose the volume your app needs.