NUPCO Tender Radar — Saudi Health Procurement with Item Lists avatar

NUPCO Tender Radar — Saudi Health Procurement with Item Lists

Pricing

from $10.00 / 1,000 tender delivereds

Go to Apify Store
NUPCO Tender Radar — Saudi Health Procurement with Item Lists

NUPCO Tender Radar — Saudi Health Procurement with Item Lists

Tenders and direct purchases from NUPCO, the Saudi national unified procurement company for health. Deadlines, fees in SAR, document links, and every line of the XLSX item sheet: item code, description, unit, quantity and delivery warehouse.

Pricing

from $10.00 / 1,000 tender delivereds

Rating

0.0

(0)

Developer

Dottti

Dottti

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Get the open tenders and direct purchases of NUPCO as clean JSON, CSV or Excel. NUPCO is the national unified procurement company for health in Saudi Arabia. It buys medicines, medical supplies and devices for the Ministry of Health and other government health sectors.

Each record carries the tender ID, title, type, status, sale start, bid deadline, opening date, days left, the participation fee in SAR, and links to the tender page, item sheet and terms. When the item sheet is an Excel file, the Actor reads it for you. You get every line: item code, description, unit, quantity and the delivery warehouse.

Who uses this

  • Medical suppliers and distributors check every morning which NUPCO purchases include their item codes.
  • Pharma sales teams search item descriptions for their molecules, for example PACLITAXEL or FILGRASTIM.
  • Bid teams see the deadline, the fee and the delivery warehouses before they open the sheet.

For tenders from all other Saudi government agencies, see Etimad Tender Radar.

Daily alert in 3 steps

  1. Enter your keywords, for example syringe, catheter or مستلزمات. Keep Include item lists on so keywords are also matched against item descriptions.
  2. Click Save as a new task, then add a daily schedule, for example 07:00 Riyadh time.
  3. Connect the task to email, Slack or Google Sheets from the Integrations tab. New tenders then arrive every morning.

NUPCO direct purchases often close within 1 to 7 days of publication. A daily schedule catches them in time.

Output

One record per tender. This record comes from a local run on 20 October 2026; the items array is cut to 2 of its 75 rows, and the documents, statuses and empty fields are left out here.

{
"tenderId": "NDP0941/26",
"tenderIdRaw": "NDP0941/26",
"title": "تأمين مستلزمات طبية",
"titleAr": "تأمين مستلزمات طبية",
"titleEn": null,
"titleRaw": "تأمين مستلزمات طبية",
"tenderType": "direct-purchase",
"tenderTypeAr": "الشراء المباشر",
"tenderTypeEn": "Direct purchase",
"status": "direct-purchase",
"statusEn": "Direct purchase",
"statusAr": "الشراء المباشر",
"saleStart": "2026-10-20",
"saleStartRaw": "الثلاثاء, 20/10/2026",
"bidDeadline": "2026-10-26",
"bidDeadlineRaw": "الأثنين, 26/10/2026",
"openingDate": "2026-10-26",
"openingDateRaw": "الأثنين, 26/10/2026",
"daysLeft": 6,
"isOpen": true,
"fee": null,
"feeCurrency": null,
"url": "https://www.nupco.com/tender/%d8%aa%d8%a3%d9%85%d9%8a%d9%86-%d9%85%d8%b3%d8%aa%d9%84%d8%b2%d9%85%d8%a7%d8%aa-%d8%b7%d8%a8%d9%8a%d8%a9-5/",
"itemSheetUrl": "https://www.nupco.com/wp-content/uploads/2026/10/NDP0941-26.xlsx",
"itemSheetFormat": "xlsx",
"termsUrl": "https://www.nupco.com/wp-content/uploads/2026/10/NDP0941-26-Terms-Conditions.pdf",
"purchaseUrl": "https://tenders.nupco.com/redirect/redirect.jsp?url=https://srm.nupco.com/sap/bc/webdynpro/sap/zsrm_sadad_supplier_app?tenderid=NDP0941/26",
"items": [
{
"lineNumber": 1,
"itemCode": "4016150002200",
"description": "FILTER MILLEX-GS SYRINGE UNIT 0.22 µM",
"unit": "EA",
"quantity": 200,
"deliveryLocation": "مستودع جدة - وزارة الصحة; مستودع نوبكو المدينة - الصحة",
"deliveries": [
{ "plant": "W2C1", "address": "مستودع جدة - وزارة الصحة", "quantity": 100 },
{ "plant": "W2C2", "address": "مستودع نوبكو المدينة - الصحة", "quantity": 100 }
],
"rfxNumber": "3000036023"
},
{
"lineNumber": 2,
"itemCode": "4110292500000",
"description": "PEN MARKER PERMANENT LABORATORY USE",
"unit": "PC",
"quantity": 2000,
"deliveryLocation": "مستودع الرياض - وزارة الصحة",
"deliveries": [
{ "plant": "C2C1", "address": "مستودع الرياض - وزارة الصحة", "quantity": 2000 }
],
"rfxNumber": "3000036023"
}
],
"itemCount": 75,
"keywordMatchedIn": ["title", "items"],
"matchedItemCount": 1
}

Notes on the fields:

  • Dates. NUPCO publishes dates only, with no time of day. bidDeadline is the date in ISO form (YYYY-MM-DD). bidDeadlineRaw keeps the text exactly as the site shows it.
  • daysLeft counts whole days from today's date in Riyadh. 0 means the deadline is today.
  • isOpen is true when the deadline is today or later and the status is not under evaluation, results or cancelled.
  • fee is the participation fee (سعر الاشتراك في المنافسة) in Saudi riyals, with feeCurrency: "SAR". Most direct purchases show no fee, so the field is null. Some pages show a placeholder such as -2; that value stays in feeRaw and fee stays null.
  • tenderId uses one spelling. The site writes the same ID as NDP0940-26 or NDP0941/26; the Actor returns NDP0940/26. tenderIdRaw keeps the original.
  • deliveries lists the per-warehouse split when the sheet has one. deliveryLocation joins the warehouse names.
  • Closed tenders (with Only open off) carry preliminaryResultUrl and finalResultUrl when NUPCO has published result announcements. Those are PDF files and are linked as they are.

Input

FieldWhat it does
keywordsWords matched against title and tender ID, and against item descriptions and item codes when item lists are on. Arabic is normalised first: alef and hamza forms, ة/ه, ى/ي and Persian ی/ک all match. English ignores case.
matchModeany (default) or all.
onlyOpenKeep only tenders still open for bids. On by default.
includeItemsDownload and read each XLSX item sheet. On by default.
maxItemsHard cap on delivered tenders. Default 50.
requestDelayMs, maxRetriesPacing and retries. The defaults suit nupco.com.

Example: syringes and catheters in open tenders

{
"keywords": ["syringe", "catheter"],
"onlyOpen": true,
"includeItems": true,
"maxItems": 50
}

Example: closed tenders with result announcements, no item rows

{
"onlyOpen": false,
"includeItems": false,
"maxItems": 200
}

Pricing

  • Tender: $0.01 each ($10 per 1,000)
  • Item row: $0.002 each ($2 per 1,000)

You pay for each tender stored in your dataset. When Include item lists is on, you also pay for each item row read from the sheet. Item lists vary a lot in size. On 20 October 2026 the open sheets held between 1 and 359 rows, 808 rows across 16 sheets. Turn item lists off for a tender-only feed. maxItems and the run's maximum cost cap the spend. If the cost cap cannot cover a full sheet, the record keeps the rows the budget covers and sets itemsTruncatedByBudget: true.

How it works

  • The Actor reads the public tender list on nupco.com page by page. Each page holds 24 tenders. It stops at the first short or empty page.
  • For each tender that passes the filters, it reads the tender page for sale start, fee and document links.
  • It then downloads the item sheet when it is an XLSX file. Requests are spaced out, and 429 and 5xx answers are retried with exponential backoff.

Notes and limits

  • Volume. On 20 October 2026 the list held 118 tenders on 5 pages, and 20 of them were open. The last page had 22 cards and page 6 was empty, so the 5 pages were the whole list. Expect tens of open tenders on a given day.
  • Older tenders. The site's sitemap names about 216 tender pages, while the list shows 118. Tenders that have dropped off the list are not returned.
  • PDF item lists. Formal tenders (IDs starting NPT) publish their item list as a PDF. The Actor links it in itemSheetUrl and sets itemsNote, and items stays null. Only XLSX sheets are read, and so only those are charged as item rows.
  • Sheet layouts. Direct purchases (IDs starting NDP) use several column layouts. All layouts seen on 20 October 2026 are handled. A new layout returns itemCount: 0 with a note in itemsNote and costs nothing for items.
  • Winners. The closed tender pages checked on 20 October 2026 show no winners in the page text. Result announcements are PDF files, and some closed tender pages are password-protected (detailProtected: true).
  • No times. Deadlines carry a date only. Check the terms PDF for the closing hour.
  • Public data only. No login, no credentials and no personal data. Buying a tender booklet and submitting offers happen on NUPCO's own platforms, linked in purchaseUrl.

Development

npm install
npm test # parser tests against pages and sheets saved from nupco.com
apify run --purge # local run, reads storage/key_value_stores/default/INPUT.json