Tìm thành phố thế giới API

Gợi ý 70.000 thành phố thế giới theo tên (gõ không dấu được, có tên tiếng Anh và tiếng Việt), tìm thành phố gần một toạ độ, xem dân số và múi giờ.

GEThttps://apibox.io.vn/v1/cities
Dữ liệu & JSON▶ Dùng thử online

q tìm tên thành phố theo tiền tố, không phân biệt dấu và chữ hoa (ha noi, Hà Nội hay hanoi đều ra Hà Nội), gồm cả tên tiếng Anh và tiếng Việt mà GeoNames có (Thượng Hải ra Shanghai). Trùng khớp hoàn toàn được xếp trước, rồi đến khớp tiền tố, rồi đến tên có một từ phía sau bắt đầu bằng chuỗi bạn gõ (york cũng ra New York); trong mỗi nhóm thành phố đông dân hơn đứng trước. Lọc bằng country (mã ISO) và min_population.

lat + lon trả về các thành phố gần nhất (reverse geocode mức thành phố) kèm khoảng cách km, có thể giới hạn bằng radius_km. id (hoặc /v1/cities/<geonameid>) trả về một thành phố với quốc gia, đơn vị hành chính cấp 1 (bang / tỉnh), dân số, độ cao, múi giờ IANA và độ lệch UTC hiện tại, loại địa danh (thủ đô, thủ phủ…) và các tên khác; details=true thêm các trường này vào kết quả tìm kiếm.

Dữ liệu: GeoNames cities5000 (mọi điểm dân cư từ 5.000 người trở lên và trụ sở các đơn vị hành chính), cập nhật hàng tuần, giấy phép CC BY 4.0 – khi hiển thị dữ liệu hãy giữ dòng ghi công trong trường attribution. Tên đơn vị hành chính theo GeoNames, có thể chưa cập nhật các đợt sắp xếp mới (tỉnh thành Việt Nam sau 2025 xem /v1/vn-provinces).

Tham số

TênVị tríKiểuBắt buộcMặc định
qquerystringkhôngTên hoặc phần đầu của tên (không cần dấu). Bắt buộc một trong q, lat+lon hoặc id.
latquerynumberkhôngVĩ độ để tìm thành phố gần nhất (cùng lon).
lonquerynumberkhôngKinh độ (chấp nhận lng).
idquerystringkhôngMã GeoNames để xem chi tiết một thành phố (hoặc /v1/cities/<id>).
countryquerystringkhôngLọc theo mã quốc gia ISO 3166-1 alpha-2, ví dụ VN.
min_populationquerynumberkhôngChỉ lấy thành phố có dân số từ mức này.
radius_kmquerynumberkhôngKhoảng cách tối đa khi tìm gần nhất.
limitquerynumberkhông10Số kết quả (1–50).
detailsquerybooleankhôngfalseTrả đủ chi tiết (admin1, độ lệch múi giờ, độ cao, tên khác) trong kết quả tìm kiếm.

Ví dụ

curl "https://apibox.io.vn/v1/cities?q=da%20nang&limit=2" \
  -H "Authorization: Bearer YOUR_API_KEY"

Kết quả trả về

{
  "query": {
    "q": "da nang",
    "country": null,
    "min_population": null
  },
  "count": 1,
  "total_matches": 1,
  "results": [
    {
      "id": 1583992,
      "name": "Da Nang",
      "name_en": "Da Nang",
      "name_vi": "Đà Nẵng",
      "country_code": "VN",
      "country": "Vietnam",
      "admin1": "Da Nang City",
      "lat": 16.0678,
      "lon": 108.2208,
      "population": 1276000,
      "timezone": "Asia/Ho_Chi_Minh",
      "match": "exact"
    }
  ],
  "attribution": "Data © GeoNames (www.geonames.org), CC BY 4.0",
  "data_version": "2026-11-11",
  "dataset": "GeoNames cities5000: 70026 places with >= 5 000 inhabitants or seats of administrative divisions"
}

Ứng dụng

  • Gợi ý thành phố trong form đăng ký hoặc thanh toán quốc tế
  • Hiển thị thành phố gần nhất từ toạ độ GPS của ảnh hay thiết bị
  • Lấy múi giờ theo thành phố của khách để hẹn lịch gọi
  • Đưa danh sách thành phố có tên tiếng Anh và tiếng Việt vào app du lịch

Hỏi đáp

Có cần gõ dấu không?

Không. Tên được so khớp bỏ dấu và không phân biệt hoa thường, nên "da nang" ra Đà Nẵng và "sao paulo" ra São Paulo.

Vì sao không thấy một thị trấn nhỏ?

Bộ dữ liệu chỉ giữ điểm dân cư từ 5.000 người và trụ sở các đơn vị hành chính (khoảng 70.000 địa danh), không có làng xã nhỏ.

Cần ghi công thế nào?

Ghi công GeoNames theo CC BY 4.0: hiển thị chuỗi attribution mà API trả về (ví dụ ở chân trang có dùng dữ liệu).

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →