Public Tenders & Contract Awards, 7 Countries avatar

Public Tenders & Contract Awards, 7 Countries

Pricing

from $2.00 / 1,000 tender notices

Go to Apify Store
Public Tenders & Contract Awards, 7 Countries

Public Tenders & Contract Awards, 7 Countries

Public tenders and contract awards from the national e-procurement portals of Vietnam, Bangladesh, Bhutan, Pakistan, Uzbekistan, Ghana and Tunisia in one normalised JSON schema: buyer, title, category, procedure, dates with local offsets, exact local-currency amounts, winners and links.

Pricing

from $2.00 / 1,000 tender notices

Rating

0.0

(0)

Developer

Aloever Dulay

Aloever Dulay

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Public tender notices and contract awards from the national e-procurement portals of Vietnam, Bangladesh, Bhutan, Pakistan, Uzbekistan, Ghana and Tunisia, in one normalised JSON schema. One input, one run, seven portals read concurrently, one record shape: country, buyer, title, category, procedure, dates with the country's real time offset, exact amounts in the local currency, winners, links, and the full source record for anything else.

  • Tenders (recordType: "tenders", the default): open tender notices from every selected country, newest first per country.
  • Contract awards (recordType: "awards"): awarded contracts and published results from every selected country except Tunisia, whose portal publishes no award results the actor can read, newest first per country.

The same data as the seven per-country actors, read by the same code, but you pay this actor's events once and never a second actor.

Who needs this

  • Suppliers, contractors and consultants bidding across South Asia, Southeast Asia, Central Asia and Africa who want one morning feed instead of seven portals.
  • Tender-alert services and bid consultants building multi-country feeds, digests or alerts on one schema.
  • Market-entry, trade and development-finance teams sizing public demand and following who wins what, where, at what price.
  • Analysts, journalists and researchers studying public procurement across emerging markets without writing seven scrapers.
  • AI agents and automations that need a stable schema instead of seven portals in six languages and three date formats.

Countries and portals

CountryPortalsourceTendersAwardsTime offset
Vietnammuasamcong.mpi.gov.vnmuasamcongopen tender notices (TBMT)published contractor-selection results (KQLCNT)+07:00
Bangladesheprocure.gov.bdbd-egplive tendersNotifications of Award, one per lot+06:00
Bhutanegp.gov.btbt-egplive tendersNotifications of Award, one per contract+06:00
Pakistanepms.ppra.gov.pkppra-epmsactive tendersawarded contracts+05:00
Uzbekistanetender.uzex.uzuzexopen tenders, then open selectionscompleted deals+05:00
Ghanaghaneps.gov.ghghanepstenders open for bids (Bid Submission)awarded contracts, one per tender, lot and supplier+00:00
Tunisiatuneps.tntunepsopen tender noticesnone (skipped with a note in the run report)+01:00

Input

FieldTypeDefaultDescription
recordTypestring"tenders"tenders or awards. One run returns one record type.
countriesstring[]all sevenAny of VN, BD, BT, PK, UZ, GH, TN. Fetched concurrently, one worker per country.
keywordstring""Case-insensitive text filter, applied the way each portal applies its own (see below). Portals index text in their own language.
publishedSincestring""An ISO date (2026-09-20, midnight in each country's own time) or an ISO-8601 timestamp. Tenders filter on publication, awards on the award date.
maxItemsPerCountryinteger50Stop each country after this many records (1-2,000), newest first.
proxyConfigurationobjectno proxyOptional Apify Proxy. Not needed normally; Vietnam's portal sometimes resets datacenter connections, where a residential group helps.

Examples:

{ "countries": ["VN", "PK", "GH"], "keyword": "hospital", "maxItemsPerCountry": 100 }
{ "recordType": "awards", "publishedSince": "2026-09-01", "maxItemsPerCountry": 200 }

How the keyword and date filters apply per country

Each portal applies what it can; the actor applies the rest itself, reading newest first and stopping at the first page older than publishedSince where a list is sorted by date.

CountrykeywordpublishedSince
Vietnamby the portal, on the notice number and package name (Vietnamese)by the portal, on the notice's publication time (tenders) or the result's (awards); without a date, the trailing year
Bangladeshtenders: by the actor, on title, reference number and tender ID; awards: by the portal, on the package titletenders: by the portal by day, then the exact time by the actor; awards: by the actor on the contract signing date
Bhutanas Bangladeshas Bangladesh (awards on the notification-of-award date)
Pakistanby the portal, on titles, descriptions and numbers (a match need not be in title)by the portal, by advertisement day (tenders) or publication day (awards)
Uzbekistanby the portal, on the lot name (Uzbek or Russian)tenders: by the actor on the publication time; awards: by the portal by day, then the exact time by the actor
Ghanatenders: by the portal on the title, re-checked by the actor; awards: by the actor on title, supplier and lotby the actor, on the publication time (tenders) or award time (awards)
Tunisiaby the portal, on the French titleby the portal, on the publication time

Output

One dataset item per tender notice or per contract award. Every item has a recordType (tender or award), a country (ISO 3166-1 alpha-2) and a source (the portal's short name). Text is kept exactly as each portal publishes it, in its own language and script. Dates are ISO-8601 with the country's real offset; where a portal prints only a day the value stays a date (YYYY-MM-DD). Amounts are exact numbers in the local currency, never converted. raw holds the full record exactly as the country's own actor stores it, so nothing is lost. The Output tab on this page documents every field; the dataset has "Tenders" and "Awards" views.

Common fields: recordType, country, source, sourceId, referenceNo, title, buyer, buyerCode, category, procedure, status, detailUrl, sourceUrl, fetchedAt, raw.

Tenders add publishedAt, deadlineAt, openingAt, estimatedValue, currency, valueText. Awards add awardedOn, winnerName, winnerCode, amount, currency, amountText.

What each field holds, per country

FieldVietnamBangladeshBhutanPakistanUzbekistanGhanaTunisia
sourceIdnotice idtender ID / lot IDtender ID / contract IDtender / contract numbertrade ID / deal IDtender ID (shared by its awards)notice number
referenceNonotice number (IB…)reference numberreference numberreference number14-digit lot numbernonebuyer reference
buyer / buyerCodeinvestor / its codeprocuring entity / noneprocuring agency / noneoffice / nonecustomer / taxpayer numberprocuring entity / nonebuyer / buyer code
categoryprocurement fieldprocurement natureprocurement categorysectornonenonecategory (French)
procedureselection methodmethod namemethod namenonetender or selectionprocedureprocedure (French)
publishedAtnotice publication timepublication timepublication timeadvertisement daypublication timepublication timepublication time
deadlineAtbid closing timeclosing timeclosing timeclosing timeoffers duebid submission deadlinesubmission deadline
openingAtbid opening timenonenonenonenonenoneopening time
estimatedValuepackage price (VND)nonenonenonestarting price (in currency)nonenone
awardedOnresult publication timecontract signing datenotification-of-award dateday EPMS published the contracttime the deal was concludedaward date and timen/a
winnerName / winnerCodejoint venture or winners / portal codeswinner / nonewinner / nonewinner / nonesupplier / taxpayer numbersupplier / nonen/a
amountwinning price (VND)contract value (BDT, from crore)contract value (BTN, exact)awarded amount (PKR)deal cost (in currency)award amount (as printed)n/a
amountTextnonecrore figure as printedmillion Nu figure as printed"Rs." figure as printednoneamount with code as printedn/a

Notes:

  • Vietnam winners: a joint venture is named by its joint-venture name; several distinct winners of a multi-lot package are joined with ; . winnerCode joins the portal's own list of winner codes, which is not aligned one-to-one with the names (raw has both lists).
  • Bangladesh amounts are converted exactly from the published crore figure (precise to 10,000 BDT); Bhutan amounts are read exactly from the portal's advanced award search (raw.contractValueExact says whether the exact figure matched the list).
  • Uzbekistan tenders are open tenders first and then, up to the same maximum, open selections of the best offers (procedure tells them apart). Amounts are in each lot's own currency (UZS, USD, EUR and others as published).
  • Ghana awards share the tender's sourceId; the lot and supplier in the record tell them apart.

A real Bangladesh tender, normalised (captured 2026-09-26):

{
"recordType": "tender",
"country": "BD",
"source": "bd-egp",
"sourceId": "1320555",
"referenceNo": "ShSmch/Breakfast/Diet/2026-2027/G-9C-F/E Notice",
"title": "ShSmch/Breakfast/Diet/26-27/G-9,C-F, PROCUREMENT OF DIET FOR BREAKFAST FOR ADMITTED PATIENT ( GROUP-A, CATEGORY-F) OF SHAHEED SUHRAWARDY MEDICAL COLLEGE & HOSPITAL, DHAKA FINANCIAL YEAR- 2026-2027",
"buyer": "Shaheed Suhrawardy Medical College Hospital , Dhaka",
"buyerCode": null,
"category": "Goods",
"procedure": "Open Tendering Method",
"status": "Live",
"publishedAt": "2026-09-25T23:30:00+06:00",
"deadlineAt": "2026-10-12T13:30:00+06:00",
"openingAt": null,
"estimatedValue": null,
"currency": null,
"valueText": null,
"detailUrl": "https://www.eprocure.gov.bd/resources/common/ViewTender.jsp?id=1320555&h=t",
"sourceUrl": "https://www.eprocure.gov.bd/TenderDetailsServlet",
"fetchedAt": "2026-09-26T13:42:31.000Z",
"raw": {
"recordType": "tender",
"tenderId": "1320555",
"ministry": "Ministry of Health and Family Welfare",
"…": "…"
}
}

A real Bangladesh award, normalised (captured 2026-09-26):

{
"recordType": "award",
"country": "BD",
"source": "bd-egp",
"sourceId": "2056490",
"referenceNo": "APP ID : 216678",
"title": "Widening & Strengthening of Hazirhat HQ- Ramnawaj GC road at ch. 0.00- 7900m including 03 Nos. 2-vent 3.00mx3.00m RCC Box Culvert at 1148m 4036m & 7008m under Upazila: Monpura District: Bhola (Road ID No. 509652002 Salvage Materials Cost Tk 634374.00)",
"buyer": "Office of the Executive Engineer, LGED, Bhola",
"buyerCode": null,
"category": null,
"procedure": "Open Tendering Method",
"status": null,
"awardedOn": "2026-09-24",
"winnerName": "KE-SS (JV)",
"winnerCode": null,
"amount": 185320000,
"currency": "BDT",
"amountText": "18.532",
"detailUrl": "https://www.eprocure.gov.bd/resources/common/ViewAwardedContracts.jsp?pkgLotId=2056490&tenderid=1296078",
"sourceUrl": "https://www.eprocure.gov.bd/SearchNoaServlet",
"fetchedAt": "2026-09-26T13:43:05.000Z",
"raw": {
"recordType": "award",
"tenderId": "1296078",
"lotId": "2056490",
"contractValueCrore": 18.532,
"…": "…"
}
}

The run report

The default key-value store holds an OUTPUT record with, per requested country, how many records were stored and charged, how many portal requests and retries it took, how long it ran, why it stopped, and the error message when a portal failed or refused. A country that errors or answers with a verification page is reported there and in the run's status message; the other countries carry on. A portal that stops answering altogether (no response for 2 minutes) is reported the same way, with stop reason stalled, so one hanging portal never holds up the rest of the run. The run fails only when every requested country fails.

Pricing

Pay per event, charged only for records actually stored in your dataset:

  • tender-notice: one per tender notice stored.
  • award-result: one per contract award stored.

A run charges one of the two, depending on recordType; the actor defines no start event of its own. Each country's rows are stored before they are charged and every country stops cleanly when your spending limit is reached, so you never pay for data you cannot see.

Data sources and politeness

The data comes from the public, login-free lists of the seven national portals, read by the same code as the per-country actors: one worker per country, each sending one request at a time with at least 1-2 seconds between requests (each portal's own pace), an honest User-Agent that names the actor, retries with exponential backoff inside a fixed budget, a clear error when a portal keeps refusing, and a clean stop shortly before the run's timeout. When the platform's DNS cannot resolve the Bangladesh or Bhutan portal, the actor asks public resolvers (1.1.1.1, 8.8.8.8) and then the portal's own nameservers, and keeps that answer for the run. The actor never logs in, never solves or works around a CAPTCHA (a verification page stops that country at once), never downloads tender documents, and never uses the credential-gated Pakistan e-PADS gateway.

Terms differ per portal: Bangladesh's and Bhutan's say their content is copyrighted by the procurement authority; the others state no reuse conditions. The actor publishes metadata and links only, not documents; follow detailUrl for the official page and documents.

Data and privacy

The output is buyer, tender and award metadata exactly as each government publishes it by law. Contracts are often awarded to sole proprietorships named after their owner, so winnerName can be a person's name: the actor keeps it as published and adds nothing to it. It keeps each source actor's privacy rules: Uzbek taxpayer numbers are published only for legal entities, never for individuals or individual entrepreneurs; Bhutan winners' addresses, Tunisian buyer staff names and any e-mail addresses or phone numbers in free text are left out; beneficial owners and contact officers are never read. It does not enrich, profile or combine records with other sources. If you process names of individuals, you are responsible for doing so lawfully.

Limitations

  • Tenders are open tenders only in every country (live, active, in bid submission or with a deadline ahead); closed and archived tenders are not read.
  • Tunisia has no awards: its award observatory is walled behind a CAPTCHA, so awards runs skip Tunisia with a note in the run report.
  • Vietnam needs a publication window: without publishedSince the actor asks for the trailing year, which covers every open notice; for awards it reads newest result first by splitting the window, at the cost of a few extra requests.
  • Estimated values are published only by Vietnam and Uzbekistan; the other lists print none, so estimatedValue is null there.
  • Per-country speed differs. Ghana serves 10 rows per page 2-5 seconds apart and Tunisia needs one request per notice, so large maxItemsPerCountry values run into the run timeout there; the run then ends successfully with what it stored, and the report says why.
  • sourceId is the portal's own key: unique per record everywhere except Ghana awards (one sourceId per tender, several awards) and Tunisia addenda (the same notice number, raw.modificationSeq differs).
  • Garbled characters, missing dates and free text instead of numbers are the portals' own; the actor keeps text as published and sets the numeric or date field to null.