Guides Places API

Places API

Places API

Quickstart, parameters, layer selection, examples, and OpenAPI contract for the Open Places API.

Quickstart

Search places near a coordinate.

Open Places API has one public search endpoint: GET /v1/places. Send the API key from your backend, include a location scope, and keep browser frontends away from the secret. Use q for text search, or use category to list every matching category in an area.

cURL GET /v1/places
curl -G "https://api.openplacesapi.com/v1/places" \
  --data-urlencode "q=coffee" \
  --data-urlencode "lat=40.7128" \
  --data-urlencode "lon=-74.0060" \
  --data-urlencode "radius_mi=25" \
  --data-urlencode "limit=10" \
  --data-urlencode "min_confidence=0.85" \
  -H "Authorization: Bearer $OPEN_PLACES_API_KEY"
cURL category browse
curl -G "https://api.openplacesapi.com/v1/places" \
  --data-urlencode "category=cafe" \
  --data-urlencode "lat=40.7128" \
  --data-urlencode "lon=-74.0060" \
  --data-urlencode "radius_mi=25" \
  --data-urlencode "limit=50" \
  --data-urlencode "offset=0" \
  -H "Authorization: Bearer $OPEN_PLACES_API_KEY"

Endpoint

One route, scoped by radius.

GET /v1/places

Returns Overture-backed place results, optionally merged with community and account-owned layers.

Parameter Required Use
q Usually Search text. Required unless category is supplied.
category No Exact Overture category string such as cafe. When supplied, q becomes optional.
lat, lon Yes Latitude and longitude for the search center.
radius_mi No Search radius in miles. Defaults to 25; maximum is 50.
mode No Search mode: all, name, or address. Defaults to all.
limit No Number of results to return. Defaults to 10; text search max 20, category browse max 50.
offset No Category-browse pagination offset, capped at 950. Each page counts as one search.
min_confidence No Minimum Overture confidence score from 0 to 1. No default filter is applied.
layers No Explicit ordered layer stack, for example base,open,account:client-a.
layer_preset No Saved account preset. Mutually exclusive with layers.

Server examples

Keep API keys on your backend.

const apiKey = process.env.OPEN_PLACES_API_KEY;

if (!apiKey) throw new Error("OPEN_PLACES_API_KEY is required");

const url = new URL("https://api.openplacesapi.com/v1/places");
url.search = new URLSearchParams({
  q: "ramen",
  lat: "35.6762",
  lon: "139.6503",
  radius_mi: "25",
  mode: "all",
  min_confidence: "0.85",
}).toString();

const response = await fetch(url, {
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await response.json();

Next steps

Choose the detail you need.