---
title: "Search POIs by location"
method: GET
path: "/v1/pois"
tags: ["destination POI"]
---

# Search POIs by location

`GET /v1/pois`

## Request

- Base URL: `https://api.close.city`
- URL: `https://api.close.city/v1/pois`
- Auth: HTTP bearer

Find POIs within a bounding box or a radius of a point. Provide either
`bbox`, or `lat`+`lon`+`radius_m`.

## Query parameters

- `lat` number, nullable
- `lon` number, nullable
- `radius_m` number, nullable
- `bbox` string, nullable: min_lon,min_lat,max_lon,max_lat
- `type` integer[], nullable
- `q` string, nullable: Name substring
- `limit` integer, nullable
- `cursor` string, nullable

## Response `200`

Successful Response

- PoiSearchResponse
  - `next_cursor` string, nullable: Opaque keyset cursor; null on the last page
  - `results` PoiSearchResult[], required
    - `address` Address, required: A POI street address; every field is nullable. (shape.shape_pois, queries.pois.detail)
      - `city` string, nullable
      - `state` string, nullable
      - `street` string, nullable
      - `zip` string, nullable
    - `dest_id` integer, required
    - `lat` number, required
    - `lon` number, required
    - `name` string, required

## Other responses

- `304`: Not modified (If-None-Match matched the ETag); no body, no tokens charged
- `400`: Invalid request (e.g. invalid-parameters, invalid-cursor, invalid-bbox, missing-location, missing-area, invalid-geometry, polygon-too-complex, missing-origins, too-many-origins)
- `401`: Missing or invalid API key (missing-key, invalid-key)
- `403`: Key disabled (account-disabled)
- `429`: Rate limited or token balance exhausted (rate-limited, tokens-exhausted); sets Retry-After
- `503`: Backend temporarily unavailable (debit-unavailable, store-unavailable); may set Retry-After

---

[API](https://skmtc.dev/close-city/apis/close-api.md) · [All operations](https://skmtc.dev/close-city/apis/close-api/llms.txt) · [OpenAPI document](https://skmtc.dev/close-city/apis/close-api/revisions/a70e7c778d65?raw)
