Thai Government Procurement (e-GP) & New Company Feed
Pricing
from $0.003 / result
Thai Government Procurement (e-GP) & New Company Feed
Clean Thai government procurement contracts (e-GP, FY2558-2568) linked to DBD company registrations: winner age, capital and dissolution, risk signals such as brand-new winners, and the contracts won by each new company. Official open data only.
Pricing
from $0.003 / result
Rating
0.0
(0)
Developer
Chatuporn Duangthong
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
Thai Government Tender Alerts & Procurement Data (e-GP + DBD)
Get new Thai government tenders within minutes (invitations to bid, draft TORs, reference prices, winners) filtered by your keywords and sent to Slack, Discord, Telegram, LINE or your own webhook. Plus clean, English-keyed data on Thai government procurement contracts and new / dissolved Thai companies, straight from the official open-data portals, linked to each other: see how old a contract winner was when it signed, and which brand-new companies are already winning government work. No scraping, no logins, no API keys.
| Mode | Source | Coverage |
|---|---|---|
| Tender alerts | The official e-GP announcement feed of the Comptroller General's Department | New announcements, collected every few minutes, kept for 45 days |
| Procurement contracts | e-GP contract datasets published by DGA on data.go.th | Fiscal years 2565–2568 (Oct 2021 – Sep 2025), about 4–5 million contracts per year |
| New / dissolved companies | Monthly juristic-person files from Open-DBD | Every month since January 2022 |
Tender alerts
Pick Tender alerts as What to fetch, add your keywords, and schedule the Actor (for example every hour, in Apify Console → Schedules). Each announcement is sent once.
- What you get: invitations to bid (ประกาศเชิญชวน), draft TORs open for comment (ร่างเอกสารประกวดราคา), reference prices, procurement plans, winner announcements, cancellations and changes. Choose the types you want; the default is draft TORs and invitations.
- Keyword matching that works in Thai. Spaces and letter case are ignored, so
กล้องวงจรปิดalso matchesกล้อง วงจรปิด. Add exclude words to cut noise. - Track competitors with contract data. To follow what a company wins, use Procurement contracts with Winner name contains and Only items not delivered before: contracts come with the winner, price and DBD company details.
- Delivered where you work. Slack or Discord webhook, Telegram bot, LINE Official Account (Messaging API), or any URL as JSON. Every alert is also in the run's dataset, so Apify integrations (email, Google Sheets, Zapier, Make) work too.
- English labels. Announcement types and procurement methods come in Thai and English (
announcementTypeEn,procurementMethodEn); titles stay in Thai as published. - Pay per alert. You pay for each alert delivered plus a small start fee per run; a run that finds nothing new costs only the start fee.
Alert me about CCTV and computer tenders, but not rentals
{ "mode": "tenderAlerts", "alertKeywords": ["กล้องวงจรปิด", "CCTV", "คอมพิวเตอร์"], "alertExcludeKeywords": ["เช่า"], "telegramBotToken": "...", "telegramChatId": "..." }
Road construction invitations in Chiang Mai, e-bidding only
{ "mode": "tenderAlerts", "alertKeywords": ["ก่อสร้างถนน"], "alertAgencyContains": "เชียงใหม่", "alertTypes": ["D0"], "alertMethods": ["e-bidding"] }
Draft TORs for medical equipment, to a Slack channel
{ "mode": "tenderAlerts", "alertKeywords": ["ครุภัณฑ์การแพทย์", "เครื่องมือแพทย์"], "alertTypes": ["B0"], "webhookUrl": "https://hooks.slack.com/services/..." }
Why use this instead of the raw files?
The raw files are hard to use. This Actor fixes them for you:
- Shifted columns fixed. In the FY2568 files, every value after the province sits three columns early (the tax ID is in the "coordinates" column, the contract amount is in the "contract no." column, and so on). The Actor detects the layout row by row and puts every value back in the right field.
- Thai dates → ISO dates.
21 มิ.ย. 67,1-ก.พ.-67and2569-09-09all become2024-06-21-style dates in the Gregorian calendar. - Tax IDs repaired or flagged. Leading zeros lost by numeric columns are restored. IDs the publisher damaged (
1.05543E+11) are flagged ascorrupted_in_sourceinstead of being passed on as wrong numbers. - Fast search from a pre-built index. Indexed fiscal years are served from a cleaned copy of the e-GP files, split by year and province, with a lookup table of contract winners. A province search returns in seconds instead of minutes, and a keyword can be searched across the whole country.
- Thai keyword search that works. The portal's own search can't split Thai words, so it misses most matches (in a test, 1 hit instead of 13). The Actor matches Thai text itself.
- Contracts linked to company registrations. Every contract won by a company gets a
winnerCompanyobject: legal form and registration year (read from the registration number, even when the source damaged it), and for companies registered or dissolved since January 2022 the DBD registration date, capital, business objective and dissolution date. Each company in the company modes gets agovContractssummary of the contracts it won. - Risk signals. Filter for contracts whose winner was less than a year old, registered after the project was announced, or dissolved before the contract ended. These are signals for review, not proof of wrongdoing.
- DBD dates fixed. The monthly DBD files mix five date formats, swap day and month in some months, and pad files with empty rows. The Actor reads them all correctly and drops the empty rows.
- Privacy built in. Contracts won by private individuals are always returned without a name or ID (
winnerType: "individual"), and are never linked to anything. - Alerts. Turn on Only items not delivered before and schedule the Actor: each run returns only what earlier runs with the same filters have not returned yet.
Examples
All CCTV purchases in Chiang Rai, FY2568
{ "mode": "procurement", "fiscalYears": [2568], "province": "เชียงราย", "keyword": "กล้องวงจรปิด" }
Every contract a company won since FY2565 (FY2568 supports tax ID; older years need the name)
{ "mode": "procurement", "fiscalYears": [2565, 2566, 2567, 2568], "winnerName": "พอร์ทัลเน็ท" }
Construction contracts above 50 million baht from one agency
{ "mode": "procurement", "fiscalYears": [2568], "agency": "กรมทางหลวงชนบท", "projectType": "จ้างก่อสร้าง", "minAmountThb": 50000000 }
New IT companies in Bangkok, last 3 months (objective codes starting with 62)
{ "mode": "newCompanies", "lastMonths": 3, "province": "กรุงเทพมหานคร", "objectiveCodePrefixes": ["62"] }
Monthly alert of dissolved companies with capital ≥ 5 million baht (schedule monthly)
{ "mode": "dissolvedCompanies", "minCapitalThb": 5000000, "onlyNew": true }
Contracts won by companies less than a year old, nationwide
{ "mode": "procurement", "fiscalYears": [2567, 2568], "riskFlags": ["company_under_1_year_at_contract"] }
Companies registered in the last 3 years that already won government contracts
{ "mode": "newCompanies", "lastMonths": 36, "onlyWithGovContracts": true }
Dissolved contractors, with contracts still running when they dissolved
{ "mode": "dissolvedCompanies", "lastMonths": 60, "onlyWithGovContracts": true }
Output
Tender alert
{"announcementId": "4f0c5d0b8f1a2e3c9d7b","announcementType": "D0","announcementTypeTh": "ประกาศเชิญชวน","announcementTypeEn": "Invitation to bid","projectId": "69109356032","title": "ประกวดราคาจ้างก่อสร้างถนนคอนกรีตเสริมเหล็ก หมู่ที่ 5 ด้วยวิธีประกวดราคาอิเล็กทรอนิกส์ (e-bidding)","procurementMethod": "ประกวดราคาอิเล็กทรอนิกส์ (e-bidding)","procurementMethodEn": "e-bidding","announcedDate": "2026-11-02","documentUrl": "https://process5.gprocurement.go.th/egp-template-service/dwnt/view-pdf-file?templateId=...","firstSeenAt": "2026-11-02T02:15:04+00:00","matchedKeywords": ["ก่อสร้างถนน"]}
The feed gives the title, method, date, project number and a link to the announcement document. Agency and place names usually appear in the title, which keywords and Agency or place contains search. The project number is the same one used later in the contract data.
Procurement contract
{"projectId": "68029406709","projectName": "ประกวดราคาจ้างก่อสร้างอาคารผู้ป่วยนอก ...","projectType": "จ้างก่อสร้าง","agency": "โรงพยาบาลเชียงรายประชานุเคราะห์","procurementMethod": "ประกวดราคาอิเล็กทรอนิกส์ (e-bidding)","fiscalYearBE": 2568,"fiscalYearCE": 2025,"budgetThb": 332232400,"referencePriceThb": 331651733.93,"agreedPriceThb": 321800000,"province": "เชียงราย","district": "เวียงป่าเป้า","projectStatus": "ระหว่างดำเนินการ","latitude": 19.9021,"longitude": 99.8287,"winnerType": "juristic","winnerTaxId": "0103513015053","winnerTaxIdQuality": "ok","winnerName": "ห้างหุ้นส่วนจำกัด จ. ธนุกิจ","contractNo": "284/2568","contractSignedDate": "2025-08-13","contractEndDate": "2028-07-28","contractAmountThb": 321800000,"sourceLayout": "fy2568_shifted","winnerCompany": {"registrationNo": "0103513015053","legalForm": "limited_partnership","registeredYearBE": 2513,"registeredYearSource": "registrationNo","dbdName": null,"registeredDate": null,"registeredCapitalThb": null,"dissolvedDate": null,"matchedBy": null,"companyAgeDaysAtContract": null,"contractToCapitalRatio": null},"riskFlags": [],"source": { "publisher": "...", "portal": "https://data.go.th", "license": "Creative Commons Attribution (CC BY)" }}
winnerTaxIdQuality is one of ok, corrupted_in_source, masked_in_source, missing, invalid or redacted_individual. When it is corrupted_in_source, winnerTaxIdDamaged keeps the damaged value (1.05543E+11), which still shows the legal form and registration year.
winnerCompany is null for individuals. For a winner found in the DBD files it also has dbdName, registeredDate, registeredCapitalThb, objectiveCode, objective, province and dissolvedDate, plus:
matchedBy:taxId, ornamefor years whose source lost the tax IDs. A name match is used only when the name is unique among DBD companies, the company existed when the contract was signed, and its number agrees with what is left of the damaged ID. In a check on FY2568, where both are known, name matching picked the right company in 1,308 of 1,308 cases.companyAgeDaysAtContract: days from registration to contract signing.contractToCapitalRatio: contract amount divided by registered capital.
riskFlags can contain company_under_1_year_at_contract, registered_after_project_announced, company_dissolved and dissolved_before_contract_end.
Company registration
{"registrationNo": "0103569010090","name": "หจ.กริศน์ ดาต้า","eventType": "registration","eventDate": "2026-09-11","registeredCapitalThb": 100000,"objectiveCode": "62023","objective": "ประกอบกิจการที่ปรึกษาด้านเทคโนโลยีสารสนเทศ ...","address": "1548/43 ซอย พหลโยธิน 34","subdistrict": "เสนานิคม","district": "จตุจักร","province": "กรุงเทพมหานคร","postcode": "10900","month": "2026-09","govContracts": null}
govContracts is null when the company won nothing in the indexed years. Otherwise:
{"contracts": 10,"totalThb": 3353216469.0,"firstContractSignedDate": "2024-04-09","lastContractSignedDate": "2025-06-04","daysFromRegistrationToFirstContract": 77,"byFiscalYear": { "2567": { "contracts": 4, "totalThb": 235382489.0 }, "2568": { "contracts": 6, "totalThb": 3117833980.0 } },"matchedBy": "taxId","recentContracts": [ { "projectId": "66089621472", "projectName": "...", "agency": "การไฟฟ้าส่วนภูมิภาค", "contractSignedDate": "2025-06-04", "contractAmountThb": 2938220000.0, "fiscalYearBE": 2568 } ]}
Dissolved companies also get contractsEndingAfterDissolution.
Good to know
- How fresh are alerts? The Actor's publisher reads the official e-GP feed every few minutes and keeps every new announcement for 45 days. Your scheduled run picks up whatever arrived since your last run. When the e-GP feed is down, the run log says how old the latest data is.
- Coverage of alerts. Alerts come from the public e-GP announcement feed, which shows the latest announcements of each type nationwide. It does not list every announcement of every agency, so treat alerts as an early-warning feed, not a complete register; every contract still appears later in the procurement contract mode, with the winner and price.
- Freshness follows the publisher. e-GP files on data.go.th are refreshed in batches (the FY2568 file was last updated in July 2026). FY2569 will appear when DGA publishes it; the Actor picks up new years automatically, and the index is checked for changed files every month. DBD files are monthly.
- Speed. Searches on indexed years by province or winner usually finish in seconds. A keyword search across a whole country-year reads every row of that year and takes a few minutes.
- Coverage follows the index. The portals do not accept requests from cloud servers, so the Actor answers from its pre-built copy of the data, refreshed monthly. A search for a fiscal year that is not in the copy stops with a message listing the years that are.
- Tax IDs for FY2565–2567. Most winner IDs in those source files were damaged before publication. Search those years by winner name; company links for those years are matched by name (see
matchedBy). - Thai names. Province, agency and project type must match the Thai spelling used in e-GP, e.g.
กรุงเทพมหานคร, notBangkok. - What the company link covers. DBD publishes monthly files of registrations and dissolutions since January 2022, so registration dates, capital and objectives are known for companies registered since then, and dissolution dates for companies dissolved since then. Older companies still get their legal form and registration year from the registration number. Company links and risk flags come from the pre-built index.
- Risk signals are not accusations. A young winner can be a legitimate new subsidiary or a partnership converted to a company. Check the source records before drawing conclusions.
Data sources and licences
- Tender alerts: the public e-GP announcement feed and announcement pages of กรมบัญชีกลาง (Comptroller General's Department), gprocurement.go.th.
- e-GP procurement contracts: สำนักงานพัฒนารัฐบาลดิจิทัล (องค์การมหาชน) / ภาษีไปไหน, with data from the Comptroller General's Department, published on data.go.th under Creative Commons Attribution.
- Juristic-person registrations: กรมพัฒนาธุรกิจการค้า, published on opendata.dbd.go.th under Open Data Common.
Every output row carries a source field with the publisher and licence. Please keep the attribution when you republish the data.
This Actor is not affiliated with or endorsed by any Thai government agency.