Vietnamese Address Parser API

Split a free-text Vietnamese address into street, ward and province, and convert old 3-level addresses (with district) to the new 2-level units of 2025.

GETPOSThttps://apibox.io.vn/v1/address-parse

The address parser reads addresses as people type them: 123 Lê Lợi, P. Bến Thành, Q.1, TP.HCM, 45/2 Nguyễn Trãi, Phường 2, Quận 5, thon 3, xa ea tieu, huyen cu kuin, dak lak (without accents) or the new form Số 5 ngõ 10 phố Huế, Phường Hai Bà Trưng, Hà Nội. It recognises abbreviations (P., Q., TX., TT., TP., P3, Q10), old and new province names and aliases such as HCM or Sài Gòn, and splits the house number from the street.

The result is the current unit: since 1 July 2025 there are no districts, so an old address is converted through the official conversion table of the General Statistics Office: Phường 2, Quận 5 becomes Phường Chợ Quán, TP. Hồ Chí Minh; Phường Phú Cường, TP. Thủ Dầu Một, Bình Dương becomes Phường Thủ Dầu Một, TP. Hồ Chí Minh. The response gives the new ward and province with their codes and postal code, a ready-to-print full_address and, for converted addresses, the old unit in converted_from.

When an old ward was split between several new units, ambiguous is true and candidates lists them. Send up to 100 addresses at once with POST { "addresses": [...] }. The data is the same as the Vietnam provinces API and follows later resolutions.

Parameters

NameInTypeRequiredDefault
addressbody|querystringyesFree-text address (max 500 characters).
addressesbodyarraynoUp to 100 addresses at once (POST JSON).

Example

curl "https://apibox.io.vn/v1/address-parse?address=123 Lê Lợi, P. Bến Thành, Q.1, TP.HCM" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "version": "v5.2.0",
  "decree": "388/NQ-UBTVQH16",
  "updated": "2026-09-20",
  "input": "123 Lê Lợi, P. Bến Thành, Q.1, TP.HCM",
  "parsed": {
    "house_number": "123",
    "street": "Lê Lợi",
    "ward": "P. Bến Thành",
    "district": "Q.1",
    "province": "TP.HCM"
  },
  "format": "old (before 07/2025)",
  "matched": true,
  "ambiguous": false,
  "result": {
    "ward": "Phường Bến Thành",
    "ward_code": "26743",
    "province": "Thành phố Hồ Chí Minh",
    "province_code": "79",
    "postal_code": "71009",
    "full_address": "123 Lê Lợi, Phường Bến Thành, Thành phố Hồ Chí Minh",
    "converted_from": {
      "code": "26743",
      "name": "Phường Bến Thành",
      "change": "Nhập toàn bộ",
      "district": "Quận 1",
      "district_code": "760",
      "province": "Thành phố Hồ Chí Minh",
      "province_code": "79"
    }
  }
}

Use cases

  • Clean customer addresses in CRM and e-commerce databases
  • Convert old addresses for shipping labels and invoices after the 2025 merger
  • Fill province / ward dropdowns from a pasted address
  • Group orders by the new provinces

FAQ

Does it work without accents?

Yes: names, prefixes and abbreviations are matched without accents or case, e.g. "p3, q10, hcm" or "xa ea tieu, huyen cu kuin, dak lak".

What if the old ward no longer exists?

Some wards were merged before 2025 or split in 2025. matched is false when nothing fits, and ambiguous with candidates when several new units are possible; the street decides.

Does it check that the street exists?

No. The street and house number are kept as written; only the administrative units are validated and converted.

Related APIs

Start with 1,000 free requests every month. Get free API key →