Vietnam Tender Intelligence

apify.com · 2026-10-01 · by Long Nguyen ·generic
Monitor Vietnam's official tender portal (VNEPS): procurement plans, tender notices, and award results by keyword. Clean JSON data for AI Agents via Api...

Vietnam Tender Intelligence

Go to Apify Store

Pricing

from $400.00 / 1,000 keyword searcheds

Rating

5.0

(2)

Developer

donerightlabsdonerightlabsMaintained by Community

Actor stats

Bookmarks

0

Bookmarked

Total users

3

Total users

Monthly active users

1

Monthly active users

Last modified

30 minutes ago

Last modified

Categories

Share

READMEInputPricingAPIReviewsIssuesTasks1

Quick summary (English)[](https://apify.com/donerightlabs/tender-intelligence#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} (organization tax ID and name only — no personal data) | | 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?[](https://apify.com/donerightlabs/tender-intelligence#what-does-vietnam-tender-intelligence-do)

Vietnam Tender Intelligence giám sát thông tin đấu thầu công theo từ khoá 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. Actor trả về dữ liệu gói thầu dạng JSON sạch: tên gói thầu, mã thông báo, ngày đóng thầu, địa điểm, lĩnh vực đầu tư.

Why use Vietnam Tender Intelligence?[](https://apify.com/donerightlabs/tender-intelligence#why-use-vietnam-tender-intelligence)

  • Tự động hoá việc theo dõi gói thầu 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 tự động dò gói thầu phù hợp ngành hàng, nhà cung cấp muốn theo dõi thị trường theo từ khoá cụ thể.
  • 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 mới), tích hợp Zapier/Make/webhook.
  • How to use Vietnam Tender Intelligence[](https://apify.com/donerightlabs/tender-intelligence#how-to-use-vietnam-tender-intelligence)

    1. Mở tab Input. 2. 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"). 3. Bấm Start. 4. Xem/tải kết quả ở tab Output.

    Input[](https://apify.com/donerightlabs/tender-intelligence#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[](https://apify.com/donerightlabs/tender-intelligence#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"`)[](https://apify.com/donerightlabs/tender-intelligence#output-khi-dung-che-djo-ke-hoach-lua-chon-nha-thau-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"`)[](https://apify.com/donerightlabs/tender-intelligence#output-khi-dung-che-djo-ket-qua-trung-thau-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ỉ chứa tên và mã số thuế của doanh nghiệp trúng thầu — không có tên người, số điện thoại hay bất kỳ thông tin cá nhân nào.

    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"`)[](https://apify.com/donerightlabs/tender-intelligence#output-khi-dung-che-djo-ket-qua-trung-thau-theo-ngay-recordtype-awardsbydate-)

    {  "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)[](https://apify.com/donerightlabs/tender-intelligence#ban-ghi-djac-biet-quan-trong-neu-ban-xu-ly-du-lieu-tu-djong-bang-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[](https://apify.com/donerightlabs/tender-intelligence#bang-cac-truong-du-lieu)

    | 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[](https://apify.com/donerightlabs/tender-intelligence#pricing-chi-phi-uoc-tinh)

    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[](https://apify.com/donerightlabs/tender-intelligence#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 `proxyConfiguration` khi 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[](https://apify.com/donerightlabs/tender-intelligence#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>

apify.com · 30 images · 90 links

Comments (0)

No comments yet