Mã bưu chính Việt Nam API
Tra mã bưu chính 5 số của mọi phường, xã mới (QĐ 2334/QĐ-BKHCN năm 2025), liệt kê mã của một tỉnh hoặc kiểm tra một mã thuộc phường, xã nào.
API mã bưu chính dùng hệ thống Mã bưu chính quốc gia (Quyết định 2475/QĐ-BTTTT), đã được sửa đổi theo việc sắp xếp đơn vị hành chính năm 2025 bởi Quyết định 2334/QĐ-BKHCN ngày 24/8/2025: 34 tỉnh, thành và khoảng 3.300 phường, xã, đặc khu, mỗi đơn vị có một mã 5 số. Gửi một mã (/v1/vn-postcode/11120) để biết mã đó có thuộc phường, xã nào không và dải mã thuộc tỉnh nào; gửi đầu mã (711) để liệt kê các mã bên dưới; tìm theo tên phường, xã với q (có hoặc không dấu, ben thanh), có thể kèm province; hoặc chỉ province để liệt kê mã của mọi phường, xã trong tỉnh.
Mã đúng định dạng nhưng không gán cho phường, xã nào sẽ có assigned_to_ward: false (bưu cục và khách hàng lớn có mã riêng); mã 6 số cũ trước năm 2018 bị từ chối. Tên và mã đơn vị hành chính lấy từ dữ liệu đơn vị hành chính của chúng tôi (/v1/vn-provinces), cập nhật hằng tuần từ nguồn chính thức.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
code | path|query | string | không | Mã bưu chính 5 số, hoặc đầu mã 2–4 số. | |
q | query | string | không | Tên phường, xã, có hoặc không dấu. | |
province | query | string | không | Tên tỉnh hoặc mã 2 số (79, Hà Nội, hcm). | |
limit | query | number | không | 50 | Số phường, xã tối đa (1–500). |
Ví dụ
curl "https://apibox.io.vn/v1/vn-postcode/11120" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/vn-postcode/11120', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/vn-postcode/11120",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-postcode/11120');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"code": "11120",
"valid_format": true,
"assigned_to_ward": true,
"province": {
"code": "01",
"name": "Thành phố Hà Nội",
"postcode_prefixes": [
"10",
"11",
"12",
"13",
"14"
]
},
"wards": [
{
"postal_code": "11120",
"ward": "Phường Ba Đình",
"ward_code": "00004",
"province": "Thành phố Hà Nội",
"province_code": "01"
}
],
"note": null,
"decision": "2475/QĐ-BTTTT",
"decision_date": "2017-12-29",
"amended_by": "2334/QĐ-BKHCN",
"amended_on": "2025-08-24",
"effective_from": "2025-08-24",
"structure": "NNXXX: 5 digits. NN = province (some provinces own several 2-digit ranges after the 2025 merger); the full 5 digits = a phường / xã / đặc khu, or a post office / special customer.",
"reviewed": "2026-11-11"
}
Ứng dụng
- Điền ô ZIP trong form thanh toán quốc tế
- Kiểm tra mã bưu chính trong hệ thống vận chuyển, logistics
- Gợi ý mã bưu chính sau khi người dùng chọn phường, xã
- Làm sạch địa chỉ trong CRM, dữ liệu mở tài khoản ngân hàng
Hỏi đáp
Đây có phải mã sau sáp nhập năm 2025 không?
Đúng: mã cấp xã theo Quyết định 2334/QĐ-BKHCN (24/8/2025) cho các phường, xã, đặc khu mới.
Vì sao một tỉnh có nhiều đầu mã 2 số?
Tỉnh mới giữ dải mã của các tỉnh cũ hợp thành, ví dụ TP. Hồ Chí Minh dùng 70–75 và 78.
Mã đúng nhưng không thuộc phường, xã nào là sao?
Bưu cục, cơ quan nhà nước và khách hàng lớn có mã riêng trong dải mã của tỉnh; API trả về assigned_to_ward: false.
API liên quan
Kiểm tra JSON
Kiểm tra cú pháp JSON, báo đúng dòng và cột bị lỗi, và validate dữ liệu theo JSON Schema (draft 4, 7, 2019-09 hoặc 2020-12).
{ }Định dạng JSON
Làm đẹp JSON với thụt lề 0-8 dấu cách hoặc tab, rút gọn (minify) hoặc sắp xếp key theo bảng chữ cái. Báo lỗi cú pháp kèm dòng và cột.
CSVCSV sang JSON
Chuyển CSV thành mảng object JSON theo dòng tiêu đề, tự nhận dấu phân cách, tự chuyển số và boolean, báo lỗi từng dòng.