GET /v1/pois
Tìm địa điểm (POI) ở Việt Nam trong một bounding box, xếp theo khoảng cách.
Trả về một GeoJSON FeatureCollection gồm các địa điểm (nhà hàng, quán cà
phê, ATM, bệnh viện...) bên trong một bounding box, sắp xếp theo khoảng cách tới
near (hoặc tới tâm của box). Dùng cho tìm kiếm xung quanh, lớp địa điểm trên
bản đồ, và khám phá địa phương ở Việt Nam.
Scope yêu cầu: places:read
Trang này cũng mô tả hai endpoint đi kèm:
/v1/pois/tiles/{z}/{x}/{y} (vector tiles cho lớp bản đồ)
và /v1/pois/{placeId} (chi tiết đầy đủ của một địa điểm).
Request
Tham số query
| Tên | Bắt buộc | Mô tả |
|---|---|---|
bbox | có | Bounding box dạng minLng,minLat,maxLng,maxLat (vd 106.69,10.76,106.71,10.78). |
near | không | lng,lat làm tâm xếp hạng theo khoảng cách. Mặc định là tâm của bbox. |
limit | không | Số POI trả về, 1–10. Mặc định 5. |
category | không | Danh sách id category, phân tách bằng dấu phẩy (khớp bất kỳ). Xem Categories. |
min_rating | không | Chỉ lấy POI có đánh giá ≥ giá trị này (0–5). |
open_now | không | true để chỉ lấy POI đang mở cửa tại thời điểm gọi. |
Response
Một GeoJSON FeatureCollection. Feature trong danh sách chỉ mang các thuộc tính
nhẹ để response gọn — place_id, name, primary_type. Lấy phần còn lại
qua endpoint chi tiết.
Trường response
| Trường | Kiểu | Mô tả |
|---|---|---|
type | string | Luôn là FeatureCollection. |
features[] | array | POI xếp theo khoảng cách (gần nhất trước). |
features[].geometry.coordinates | array | [lng, lat] của POI. |
features[].properties.place_id | string | Mã định danh POI. |
features[].properties.name | string | Tên hiển thị. |
features[].properties.primary_type | string | Id category chính (vd restaurant). |
Categories
Bộ lọc category nhận một hoặc nhiều id category (phân tách bằng dấu phẩy, khớp
bất kỳ). Một số id phổ biến:
restaurant, cafe, bar, bakery, supermarket, convenience_store,
shopping_mall, hospital, pharmacy, bank, atm, gas_station,
lodging, school, university, post_office, parking.
Lấy danh sách đầy đủ kèm nhãn hiển thị (tiếng Anh + tiếng Việt) từ
GET /v1/categories.
POI vector tiles
Với các lớp bản đồ hiển thị nhiều POI cùng lúc, dùng Mapbox Vector Tiles thay vì
gọi /v1/pois liên tục:
Map renderer tải tile theo mức zoom (z) và toạ độ tile (x/y). Mỗi response
tile cũng cấp một X-POI-Token ngắn hạn cho từng feature, mà
endpoint chi tiết yêu cầu.
Scope yêu cầu: places:read
Chi tiết POI
Lấy thông tin đầy đủ của một POI theo place_id:
Header X-POI-Token là bắt buộc — đây là token theo từng feature trả về
trong response vector tile. Kết quả là một object duy nhất với đầy đủ thuộc tính:
Các trường tùy chọn (rating, user_rating_count, opening_hours, phone,
international_phone, website, price_level) chỉ xuất hiện khi có dữ liệu, nên
hãy kiểm tra key trước khi đọc.
Scope yêu cầu: places:read
Lỗi thường gặp
400 INVALID_BBOX—bboxkhông đúng dạngminLng,minLat,maxLng,maxLat.400— giá trị min củabboxkhông nhỏ hơn giá trị max.401 INVALID_API_KEY— không nhận diện được key.403 INSUFFICIENT_SCOPE— key thiếu scopeplaces:read.404—/v1/pois/{placeId}— không có POI choplace_idđó.429 RATE_LIMIT_MINUTE— chờ rồi thử lại theo trườngretry_after.