Vietnam Tender Intelligence
Pricing
from $400.00 / 1,000 keyword searcheds
Vietnam Tender Intelligence
Monitor Vietnam's e-procurement portal muasamcong (VNEPS) by keyword: upcoming plans, open tenders, and contract awards — full tender lifecycle in one Actor. Theo dõi đấu thầu công Việt Nam: kế hoạch, thông báo mời thầu, kết quả trúng thầu.
Pricing
from $400.00 / 1,000 keyword searcheds
Rating
5.0
(2)
Developer
donerightlabs
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Quick summary (English)
Monitors Vietnam's national e-procurement portal (VNEPS) by keyword and returns matching tenders as clean JSON: notice number, tender name, closing date, location, investment field.
Input: keywords (array of strings, required for "notices"/"plans"/"awards", max 20), recordType ("notices" default, "plans", "awards", or "awards_by_date"), maxResultsPerKeyword (integer, default 3, max 50), onlyOpenTenders (boolean, default true — only tenders still open for bidding; ignored when recordType is "plans"/"awards"/"awards_by_date"), province (required when recordType is "awards_by_date" — no keyword needed in this mode, results are scoped to one province instead), dateFrom/dateTo (optional, dd/mm/yyyy, only for "awards_by_date" — defaults to yesterday→today when omitted).
Pricing: Pay-per-event — $0.05 per run + $0.50 per keyword searched ("notices"/"plans"/"awards") or $0.50 per date-range search ("awards_by_date", charged once per run regardless of matches), plus $0.05 per package actually checked (only when it truly has a published award result) when recordType is "awards" or "awards_by_date" (see Pricing section below).
Output field reference (JSON keys are Vietnamese procurement terminology — real tender records never carry a trang_thai field; records that do are status/error notices, not tenders):
| JSON key | Meaning |
|---|---|
tu_khoa | The keyword that matched this record |
ma_thong_bao | Tender notice number (TBMT) |
ten_goi_thau | Tender/package name |
hinh_thuc_du_thau | Bidding method |
phuong_thuc_lua_chon | Contractor selection method |
ngay_dong_thau | Bid closing date/time (ISO 8601) |
linh_vuc_dau_tu | Investment field (goods/construction/services) |
dia_diem | Province/district |
trang_thai | Only present on non-tender records: loi_ky_thuat (technical error, see chi_tiet_loi), co_the_con_du_lieu (more results may exist beyond the limit, see ghi_chu), or — "awards"/"awards_by_date" only — chua_co_ket_qua / khong_doc_duoc_ket_qua / khong_co_goi_da_dong / khong_co_ket_qua_trong_khoang_ngay |
nha_thau_trung_thau | "awards"/"awards_by_date" only — array of winning contractors for that package: {ma_dinh_danh, ma_so_thue, ten_nha_thau, gia_trung_thau_vnd, thoi_gian_thuc_hien_goi_thau, thoi_gian_thuc_hien_hop_dong}. Usually an organization's tax ID and name; Vietnam's Tender Law also allows individuals to bid on some small packages, and since 7/2025 an individual's tax code is their 12-digit national ID — the Actor detects this format and automatically redacts ten_nha_thau/ma_dinh_danh/ma_so_thue to "[ĐÃ ẨN...]" in that case (price/timing fields are kept) |
tinh_thanh | recordType: "awards_by_date" only — the province/city this record belongs to (replaces tu_khoa, since this mode has no keyword) |
ma_ke_hoach / ten_ke_hoach / ten_du_an / chu_dau_tu / tong_muc_dau_tu_vnd / ngay_phe_duyet / co_goi_chua_thong_bao / goi_thau_du_kien | recordType: "plans" only — a procurement PLAN (published before the official tender notice), with goi_thau_du_kien as an array of its constituent packages: {ten_goi_thau, gia_du_kien_vnd, linh_vuc_dau_tu, dia_diem}. Free-text fields (ten_ke_hoach, ten_du_an, chu_dau_tu, each package's ten_goi_thau) are automatically redacted for phone numbers/emails that may have been left by the procuring entity (see FAQ) |
Full documentation below is in Vietnamese (the target user base for this Actor). The Input/Output schema tabs on this page are language-neutral and machine-readable.
What does Vietnam Tender Intelligence do?
Vietnam Tender Intelligence theo dõi toàn bộ vòng đời đấu thầu công trên Hệ thống mạng đấu thầu quốc gia (VNEPS) — muasamcong.mpi.gov.vn, cổng đấu thầu chính thức của Bộ Tài chính Việt Nam — trả về dữ liệu dạng JSON sạch cho 3 giai đoạn:
- Kế hoạch lựa chọn nhà thầu (KHLCNT) — biết trước "sắp có gói thầu gì", công bố TRƯỚC khi có thông báo mời thầu chính thức.
- Thông báo mời thầu (TBMT) — gói thầu đang mở, nhận hồ sơ (chế độ mặc định).
- Kết quả trúng thầu (KQLCNT) — ai đã thắng, giá bao nhiêu — tìm theo từ khoá, hoặc theo tỉnh/thành + khoảng ngày (không cần từ khoá).
Why use Vietnam Tender Intelligence?
- Phủ đủ cả 3 giai đoạn trong 1 Actor duy nhất — từ lúc có kế hoạch mua sắm tới lúc biết ai thắng thầu, không cần ghép nhiều nguồn dữ liệu rời rạc.
- Tự động hoá việc theo dõi theo từ khoá, tính chi phí theo lượt dùng thực tế thay vì trả phí thuê bao cố định.
- Phù hợp cho: nhà thầu nhỏ muốn chủ động tiếp cận sớm (qua KHLCNT) thay vì chỉ chờ thông báo mời thầu, nhà cung cấp muốn theo dõi thị trường theo từ khoá cụ thể, bên phân tích/nghiên cứu thị trường cần dữ liệu ai-thắng-giá-bao-nhiêu.
- Chạy trên Apify: có sẵn API, lịch chạy định kỳ (ví dụ chạy mỗi sáng để nhận gói thầu/kế hoạch mới), tích hợp Zapier/Make/webhook.
How to use Vietnam Tender Intelligence
- Mở tab Input.
- Chọn Loại dữ liệu (
recordType): Thông báo mời thầu (mặc định), Kế hoạch lựa chọn nhà thầu (KHLCNT), Kết quả trúng thầu, hoặc Kết quả trúng thầu theo ngày. - Nhập danh sách từ khoá cần theo dõi (ví dụ: "thiết bị y tế", "thi công sửa chữa") — hoặc chọn tỉnh/thành nếu dùng chế độ "Kết quả trúng thầu theo ngày" (không cần từ khoá).
- Bấm Start.
- Xem/tải kết quả ở tab Output.
Input
| Trường | Kiểu | Mô tả |
|---|---|---|
keywords | mảng chuỗi | Danh sách từ khoá gói thầu/kế hoạch cần theo dõi (tối đa 20 từ khoá/lần chạy). Không cần khi recordType là "Kết quả trúng thầu theo ngày" |
recordType | lựa chọn | Thông báo mời thầu (mặc định): tìm gói thầu theo từ khoá. Kế hoạch lựa chọn nhà thầu (KHLCNT): tìm các kế hoạch mua sắm — thường công bố TRƯỚC khi có thông báo mời thầu chính thức, cho biết trước "sắp có gói thầu gì" — theo từ khoá; 1 kế hoạch có thể gồm nhiều gói thầu con. Kết quả trúng thầu: tìm gói thầu đã đóng theo từ khoá rồi lấy tên nhà thầu thắng + giá trúng thầu cho từng gói — tốn nhiều thời gian/chi phí hơn hẳn vì phải mở riêng từng gói, nên đặt maxResultsPerKeyword thấp (khoảng 5) khi dùng chế độ này. Kết quả trúng thầu theo ngày: không cần từ khoá — duyệt toàn bộ kết quả trúng thầu mới công bố trong 1 tỉnh/thành theo khoảng ngày (bắt buộc chọn province) |
maxResultsPerKeyword | số | Giới hạn số gói thầu/kế hoạch lấy về mỗi từ khoá, hoặc mỗi lượt duyệt theo ngày (mặc định 3, tối đa 50) |
onlyOpenTenders | true/false | Bật: chỉ lấy gói còn mở (mặc định). Tắt: lấy cả gói đã đóng thầu trong quá khứ. Bỏ qua khi recordType là "KHLCNT"/"Kết quả trúng thầu"/"Kết quả trúng thầu theo ngày" |
province | lựa chọn | Bắt buộc khi recordType là "Kết quả trúng thầu theo ngày" — chọn 1 trong 34 tỉnh/thành (theo địa giới hành chính hiện hành, sau sáp nhập 2025). Bỏ qua ở 2 chế độ còn lại |
dateFrom / dateTo | chuỗi (dd/mm/yyyy) | Chỉ dùng cho "Kết quả trúng thầu theo ngày" — khoảng ngày đăng tải kết quả cần lấy. Để trống: mặc định lấy hôm qua → hôm nay (khoảng hẹp, an toàn cho lượt chạy mặc định) |
{"keywords": ["thiết bị y tế"],"maxResultsPerKeyword": 20}
Output
{"tu_khoa": "thiết bị y tế","ma_thong_bao": "IB2600407966","ten_goi_thau": "Gói thầu số 100: Cung cấp, lắp đặt thiết bị y tế nhóm Điều trị - Can thiệp","hinh_thuc_du_thau": "DTRR","phuong_thuc_lua_chon": "1_MTHS","ngay_dong_thau": "2026-09-09T09:00:00","linh_vuc_dau_tu": "HH","dia_diem": "Tỉnh Cà Mau - Phường Hòa Thành"}
Có thể tải dataset dạng JSON, CSV, Excel, HTML.
Output khi dùng chế độ "Kế hoạch lựa chọn nhà thầu" (recordType: "plans")
{"tu_khoa": "thiết bị y tế","ma_ke_hoach": "PL2600329093","ten_ke_hoach": "Gói thầu : Mua máy xét nghiệm điện giải đồ, giường bệnh nhân năm 2026","ten_du_an": "Mua sắm trang thiết bị y tế năm 2026 của Bệnh viện Tâm thần tỉnh Đăk","chu_dau_tu": "Bệnh viện Tâm thần Đắk Lắk","tong_muc_dau_tu_vnd": 431000000,"ngay_phe_duyet": "2026-09-30T23:59:59","co_goi_chua_thong_bao": true,"goi_thau_du_kien": [{"ten_goi_thau": "Gói thầu : Mua máy xét nghiệm điện giải đồ, giường bệnh nhân năm 2026","gia_du_kien_vnd": 431000000,"linh_vuc_dau_tu": "HH","dia_diem": "Tỉnh Đắk Lắk - Phường Thành Nhất"}]}
co_goi_chua_thong_bao: true nghĩa là kế hoạch này có ít nhất 1 gói thầu chưa được mời thầu chính thức — đây chính là tín hiệu "sắp có gói thầu" giá trị nhất của chế độ này. Các trường văn bản tự do (ten_ke_hoach, ten_du_an, chu_dau_tu, ten_goi_thau trong từng gói) được actor tự động che số điện thoại/email nếu bên mời thầu vô tình để lại thông tin liên hệ cá nhân trong đó (xem FAQ).
Output khi dùng chế độ "Kết quả trúng thầu" (recordType: "awards")
{"tu_khoa": "rà phá bom mìn","ma_thong_bao": "IB2600553192","ten_goi_thau": "Gói thầu số 03: Thi công rà phá bom mìn vật nổ...","nha_thau_trung_thau": [{"ma_dinh_danh": "vn0105900350","ma_so_thue": "0105900350","ten_nha_thau": "CÔNG TY TNHH MỘT THÀNH VIÊN XỬ LÝ BOM, MÌN, VẬT NỔ 319","gia_trung_thau_vnd": "101.885.625.000","thoi_gian_thuc_hien_goi_thau": "48 tháng","thoi_gian_thuc_hien_hop_dong": "Quý III 2026"}]}
nha_thau_trung_thau chủ yếu chứa tên và mã số thuế của tổ chức trúng thầu. Luật Đấu thầu cho phép cá nhân làm nhà thầu ở một số gói nhỏ — khi đó mã số thuế hiển thị là số định danh cá nhân 12 số (theo quy định từ 7-2025), nên actor tự động nhận diện và ẩn ten_nha_thau/ma_dinh_danh/ma_so_thue trong trường hợp này (hiện "[ĐÃ ẨN...]" thay vì giá trị thật) — vẫn giữ nguyên gia_trung_thau_vnd và thời gian thực hiện vì không phải dữ liệu cá nhân. Việc nhận diện dựa trên đúng 1 tín hiệu khách quan (độ dài mã số thuế), không đoán theo tên, nên không áp dụng nhầm cho hộ kinh doanh (vẫn dùng mã số thuế 10 số theo dữ liệu thực tế quan sát được).
Lưu ý: actor luôn cố mở trang chi tiết để lấy đầy đủ cả thoi_gian_thuc_hien_goi_thau/thoi_gian_thuc_hien_hop_dong. Trong số ít trường hợp trang chi tiết tải chậm/lỗi tạm thời, actor tự động lấy thay tên nhà thầu + giá trúng thầu trực tiếp từ dữ liệu tìm kiếm (đã xác nhận chắc chắn có kết quả) — khi đó 2 trường thời gian này sẽ là null thay vì có giá trị, ghi_chu sẽ nói rõ trường hợp này.
Output khi dùng chế độ "Kết quả trúng thầu theo ngày" (recordType: "awards_by_date")
{"tinh_thanh": "Thành phố Hà Nội","ma_thong_bao": "IB2600561937","ten_goi_thau": "Tư vấn quản lý dự án","nha_thau_trung_thau": [{"ma_dinh_danh": "vn5901205643","ma_so_thue": "5901205643","ten_nha_thau": "CÔNG TY TNHH ÁNH HƯNG GIA LAI","gia_trung_thau_vnd": "58.469.000","thoi_gian_thuc_hien_goi_thau": null,"thoi_gian_thuc_hien_hop_dong": null}]}
Không có trường tu_khoa ở chế độ này (thay bằng tinh_thanh) vì không dùng từ khoá.
Bản ghi đặc biệt (quan trọng nếu bạn xử lý dữ liệu tự động / bằng AI Agent)
Ngoài các bản ghi bình thường ở trên, dataset có thể chứa các bản ghi đặc biệt — nhận diện qua field trang_thai (bản ghi bình thường KHÔNG có field này):
trang_thai | Ý nghĩa | Field đi kèm | Áp dụng cho |
|---|---|---|---|
loi_ky_thuat | Từ khoá/gói thầu này gặp lỗi khi chạy, không lấy được dữ liệu | chi_tiet_loi | Mọi chế độ |
co_the_con_du_lieu | Đã lấy đúng bằng số lượng giới hạn (maxResultsPerKeyword) — có thể còn gói thầu/kế hoạch khác chưa lấy hết | ghi_chu | "Thông báo mời thầu"/"KHLCNT" |
chua_co_ket_qua | Gói thầu đã đóng thầu nhưng chưa công bố kết quả lựa chọn nhà thầu tại thời điểm chạy. Đọc kỹ ghi_chu: nếu xác định được ngay từ dữ liệu tìm kiếm thì không mở trang chi tiết, không tính phí Award Checked; nếu đã mở trang chi tiết mà vẫn không thấy kết quả thì có tính phí (đã có chi phí mở trang thực tế) | ghi_chu | Chỉ "Kết quả trúng thầu" |
khong_doc_duoc_ket_qua | Tìm thấy gói thầu nhưng không đọc được bảng kết quả (trang nguồn có thể đã đổi cấu trúc) | ghi_chu | Chỉ "Kết quả trúng thầu" |
khong_co_goi_da_dong | Không có gói thầu đã đóng thầu nào khớp từ khoá — lượt này vẫn tính phí Keyword Searched như bình thường (đã tìm kiếm thật), nhưng không có gói nào được mở kiểm tra nên không phát sinh thêm phí Award Checked | ghi_chu | Chỉ "Kết quả trúng thầu" |
khong_co_ket_qua_trong_khoang_ngay | Không có kết quả trúng thầu nào tại tỉnh/thành đã chọn trong khoảng ngày — lượt này vẫn tính phí Date Range Searched như bình thường, không phát sinh thêm phí Award Checked | ghi_chu | Chỉ "Kết quả trúng thầu theo ngày" |
Lưu ý về giới hạn: mỗi lần chạy nhận tối đa 20 từ khoá, và lấy tối đa 50 gói thầu cho mỗi từ khoá (giới hạn kỹ thuật, không phân trang — cố ý đặt ở mức vừa phải để không gây tải nặng cho hệ thống nguồn). Nếu 1 từ khoá thực tế có nhiều hơn 50 kết quả phù hợp, bạn sẽ thấy bản ghi co_the_con_du_lieu — khi đó có thể thu hẹp từ khoá (cụ thể hơn) thay vì chạy lại toàn bộ với số lượng lớn hơn, để tránh tốn thêm chi phí không cần thiết.
Bảng các trường dữ liệu
| Trường | Ý nghĩa |
|---|---|
tu_khoa | Từ khoá bạn đã tra |
ma_thong_bao | Số thông báo mời thầu (TBMT) |
ten_goi_thau | Tên gói thầu |
hinh_thuc_du_thau | Hình thức lựa chọn nhà thầu |
phuong_thuc_lua_chon | Phương thức lựa chọn nhà thầu |
ngay_dong_thau | Thời điểm đóng thầu |
linh_vuc_dau_tu | Lĩnh vực đầu tư (hàng hoá/xây lắp/dịch vụ...) |
dia_diem | Tỉnh/quận nơi thực hiện gói thầu |
⚠️ Lưu ý dữ liệu: Actor chỉ trích xuất các trường cấp gói thầu/hợp đồng ở trên — không có trường
riêng nào cho tên người, số điện thoại hay thông tin cá nhân. Tuy nhiên ten_goi_thau là văn bản tự
do do bên mời thầu tự nhập trên hệ thống nguồn, nên đôi khi có thể vô tình chứa thông tin liên hệ
(ví dụ email/số điện thoại của người phụ trách gói thầu) do chính bên mời thầu để lại — actor không
thể đảm bảo 100% trường này luôn sạch hoàn toàn, vì đây là dữ liệu do bên thứ ba nhập, không phải do
actor tự thêm vào.
Pricing / chi phí ước tính
Actor tính phí theo mô hình Pay-Per-Event — chỉ trả cho đúng phần đã dùng, không có phí thuê bao cố định:
| Sự kiện | Khi nào tính phí | Giá |
|---|---|---|
| Search Session Start | 1 lần/lượt chạy | $0.05 |
| Keyword Searched | Mỗi từ khoá được xử lý (kể cả khi 0 kết quả) — chế độ "Thông báo mời thầu" | $0.50 |
| Plan Searched | Mỗi từ khoá được xử lý (kể cả khi 0 kết quả) — chỉ chế độ "KHLCNT" | $0.50 |
| Date Range Searched | 1 lần/lượt chạy (kể cả khi 0 kết quả) — chỉ chế độ "Kết quả trúng thầu theo ngày" | $0.50 |
| Award Checked | Chỉ khi recordType là "Kết quả trúng thầu" hoặc "Kết quả trúng thầu theo ngày" — mỗi gói thầu thực sự có kết quả được kiểm tra (gói đã đóng nhưng chưa có kết quả thì không tính phí này) | $0.05 |
Ví dụ (chế độ Thông báo mời thầu hoặc KHLCNT): chạy 1 lần với 5 từ khoá = $0.05 + 5 × $0.50 = $2.55. Ví dụ (chế độ Kết quả trúng thầu theo ngày): chạy 1 lần, tìm được 8 gói đã có kết quả = $0.05 + $0.50 + 8 × $0.05 = $0.95.
Mẹo tối ưu chi phí/mục dữ liệu: giá tính theo lượt tìm kiếm, không theo từng mục — đặt maxResultsPerKeyword cao hơn (ví dụ 20 thay vì 3) giúp chi phí/gói thầu giảm đáng kể (20 kết quả/từ khoá ≈ $0.025/gói, so với 3 kết quả/từ khoá ≈ $0.17/gói) mà không tốn thêm phí Keyword/Plan Searched.
Tips
- Nên giữ nguyên cấu hình Proxy mặc định (Residential, Việt Nam) — đây là cấu hình đã được kiểm chứng ổn định. Đổi sang cấu hình khác có thể làm lượt chạy thất bại. Nếu không truyền field
proxyConfigurationkhi gọi actor (qua API/AI Agent), giá trị mặc định đúng sẽ tự động được áp dụng. - Mỗi lần chạy có chi phí thời gian khởi động cố định (~20-30 giây) cộng thêm thời gian xử lý từng từ khoá (thường 40 giây - 2 phút/từ khoá). Nếu cần kết quả nhanh (ví dụ tích hợp với AI Agent, ứng dụng thời gian thực), nên gọi 1-3 từ khoá/lần thay vì nhồi nhiều từ khoá vào 1 lần chạy — thời gian tăng tuyến tính theo số từ khoá.
FAQ
Dữ liệu lấy từ đâu? Từ các trang công khai của Hệ thống mạng đấu thầu quốc gia, không cần đăng nhập. Theo Luật Đấu thầu số 22/2023/QH15 (Điều 51 khoản 1), Hệ thống mạng đấu thầu quốc gia phải bảo đảm công khai, không hạn chế truy cập, tiếp cận đối với thông tin được đăng tải công khai trên hệ thống. Actor chỉ trả về thông tin cấp gói thầu đã công bố, không trích xuất trường thông tin liên hệ hay thông tin cá nhân nào. Bạn tự chịu trách nhiệm sử dụng dữ liệu phù hợp với quy định hiện hành.
Chế độ KHLCNT có lộ thông tin cá nhân không?
Actor tự động quét và che (thay bằng [ĐÃ CHE SĐT]/[ĐÃ CHE EMAIL]) các số điện thoại/email tìm thấy trong những trường văn bản tự do (ten_ke_hoach, ten_du_an, chu_dau_tu, ten_goi_thau của từng gói) — vì đây là dữ liệu do bên mời thầu tự nhập trên hệ thống nguồn, đôi khi vô tình để lại thông tin liên hệ cá nhân. Việc che chỉ dựa trên nhận diện mẫu (regex số điện thoại/email VN phổ biến) nên không đảm bảo bắt được 100% mọi trường hợp — nếu bạn phát hiện thông tin cá nhân lọt qua, vui lòng báo qua tab Issues.
Kết quả không đầy đủ 100% có được hoàn tiền không?
Do phụ thuộc vào tình trạng kết nối của hệ thống nguồn, thỉnh thoảng 1 từ khoá có thể gặp lỗi kỹ thuật tạm thời (xem bản ghi trang_thai: loi_ky_thuat trong Output). Nếu gặp tỷ lệ lỗi cao bất thường, vui lòng liên hệ qua tab Issues.
Chính sách dữ liệu & điều khoản sử dụng / Data & terms policy: https://donerightlabs.tviettuan01.workers.dev/chinh-sach