Browse the documentation

Features

Price History

Past NUPCO award results per material code: who won, from which manufacturer, and at what price when one was published, to search and compare before you price.

Price History is the record of past NUPCO award results: for each material code, who it was awarded to, from which manufacturer and country of origin, under which catalog number, in which tender, and at what unit price when one was published. It is reached from Price History under the Tenders section of the navigation bar. The page searches the whole record without opening a tender; the history of one tender's items, or of a product in your catalog, appears where it is needed, as a later section explains.

Note:Price history is pricing data, so it is shown to the roles that see sale pricing only; the roles that do not will find neither the link in the navigation bar nor the past-awards pills on the tender page. What each role sees is detailed in the API reference.

What the record holds

Each row of the table is one award: one material code awarded to one vendor in one tender. The rows come from two sources, so there are two kinds of them:

  • Priced rows: from NUPCO's final-result sheets, carrying the unit price the item was awarded at, with its unit of measure and currency.
  • Unpriced rows: from the public award announcements NUPCO publishes, which name the winning vendor, the manufacturer, the country of origin and the catalog number but publish no price. These rows far outnumber the priced ones.
Warning:A dash in the Unit price column means the award was published without a price, not that the price was zero, and not that the item was awarded for free. Never read a price-less row as the cheapest offer.

Searching and filtering

The price history page: the search fields, the price filter and the awards table

At the top of the page is a search form in four parts. Fill in what you need and press Search, or Enter; a Clear button appears whenever a filter is active and returns the page to its initial state.

  • Search: one or more words looked for in the NUPCO code, the description, the awarded vendor and the manufacturer. Plain text is matched as it is, as one contiguous string, inside any of those four columns. A comma or a + is searched literally. The structured syntax described below works here too.
  • NUPCO code: the exact, complete code, not part of one. To search by part of a code, type it in the Search box instead.
  • Vendor: part of the winning vendor's name.
  • Price: which kind of rows you want: With price, No price or All. This choice applies the moment you click it, without the Search button.

A fifth filter comes from the table itself: clicking a tender number in the Tender column narrows the results to that tender's awards, and a Tender NPT0064/25 chip appears above the table with an × to remove it. The match is forgiving of spelling. The same tender is sometimes written NPT0064/25 and sometimes NPT0064-25 or in lowercase, and every spelling finds the same rows.

The price filter

The default is With price: because the unpriced rows are so much more numerous, showing everything together would bury the prices you came to compare. But that default sometimes hides the answer to a different question ("has this item been awarded before, and who won it?") so when a search matches no priced row, the page tells you how many matching awards have no published price, with a Show them link that switches the filter to No price in one click.

The No price filter selected, the table showing awards published without prices. A dash where the price would be
No price shows who won even when no price was published. The missing price is a dash, never a zero.
Tip:Looking for who supplies a given item rather than for its price? Choose All before searching, and you see everyone it was awarded to, priced or not, with the priced rows first when sorting by price.
The search field holding a structured query combining a vendor field and a material code

The Search box understands the same structured syntax as tender search: the operators AND, OR and NOT in capitals, a - before a word to exclude it, quotes for an exact phrase, parentheses to group, with field suggestions, query colouring and error warnings as you type. The one difference is that every row here is one awarded item, so the fields point at the table's columns:

FieldSearches
code:The NUPCO code, matched exactly. code:4110123456.
description: or item:The item description. item:(bottle AND plastic) requires both words in the same row's description.
vendor:The awarded vendor.
manufacturer: or brand:The manufacturer.
country:The country of origin.
catalog:The catalog number.
unit:The unit of measure.
tender:The tender number in every spelling. Quote it, because it contains a slash: tender:"NPT0064/25".
tender_name:The source tender's name.

So vendor:acme -syringe finds that vendor's awards other than syringes, and manufacturer:braun AND country:germany the awards of that manufacturer's products made in Germany. An exclusion keeps rows whose field is empty: -vendor:acme does not drop an award whose vendor was not named. An unknown field shows as an error message in the results card rather than as empty results.

Reading the table

The awards table: code, description, unit price, awarded vendor, manufacturer and tender

Above the table is the number of matching rows (N awarded rows) and below it pages of 25 rows with Previous and Next. The columns:

ColumnContent
NUPCO codeThe material code that was awarded. Sortable.
Description and UoMThe item's description and unit of measure as the source gave them.
Unit priceThe unit price in its currency, or a dash when none was published. Sortable.
Awarded vendorWho the item was awarded to, with a green Us chip when that is your organization.
Manufacturer, Country and Catalog no.The product that won: its maker, its country, and its number in the maker's catalog.
TenderThe source tender's number; hovering shows its name, clicking filters the table to it.
Award dateThe award date when known, else a dash. Sortable.

Clicking a sortable column's header sorts by it, an arrow beside the header shows the direction, and clicking again reverses it. The default order is newest award first, and the first click on Unit price gives you the cheapest first. In both directions the rows with no price or no date stay at the end, so a "cheapest first" sort never opens on a page of dashes.

The Us chip is placed on a row when the winning vendor's name contains your organization's name or its Arabic or English legal name, as registered in the organization settings, so if your own past awards carry no chip, check that the registered name matches what NUPCO publishes.

The table reads the record one award at a time. To read it by who won instead: each vendor, the manufacturers it was awarded with, and the products through each pair, as a network graph and a drill-down that ends on this same award history for one code. Open Awarded vendors, the next link under Tenders in the navigation bar.

Award history elsewhere in the platform

This page is where you search the whole record freely; when you are working on a tender or a product, the same history comes to you:

  • On the tender page: every item whose code was awarded before carries a Past awards pill that opens a panel of its awards grouped by period, with your organization's awards marked Us; see Item insights. The Has past awards and No past awards chips in the filter row narrow the table by that; see Filtering the items. That is how you price under Bid pricing with what the item was awarded at before in front of you.
  • On the product page: a NUPCO award price history card lists the awards of the product's own NUPCO code and its linked codes, across all vendors, newest first and cheapest first within a period, up to 50 rows. The card does not appear for a product whose codes have no awards. For the full dive into a common code, come back to this page.

The monthly allowance on Pro

On the Pro plan, the search on this page shows a monthly allowance of priced award rows, and the pricing page gives the number. A priced row counts once, the first time a page of results shows it, moving to the next page included. A row your organization has seen before always shows its price without counting, this month and every month after, and awards that published no price never count. Once 80% of it is used, a bar above the results shows what you have used and when the count starts again, on the first of each month. The past-awards panels on the tender page, the price history card on the product page and the vendor map do not count.

Once the month's new rows are used, the search keeps working: prices you have seen before, vendor names, manufacturers, catalog numbers and award dates still show, but a new price reads Hidden instead of the amount, and sorting by price is off until the count starts again. A hidden price is not the dash shown for an award that published no price. The Enterprise plan has no monthly limit.

Until your organization's first subscription payment clears, the allowance is a smaller one: the bar above the results says prices show once the subscription is paid, with a link to the billing page. In that time the past-awards panels, the price history card and the vendor map show vendors, manufacturers and award dates, with Hidden in place of each price. Once it is paid, the plan's full allowance applies and prices show everywhere.

Each search also has a depth at which its pages stop, set by your organization's subscription. When the results hold more, the page says it shows only the first results: narrow the search by a material code, vendor or tender to see others. This search and tender search share a limit on searches a minute across your whole organization, counting this page, the API and Claude together; past it, the page asks you to wait a few seconds.

Outside the browser

The same search (with the parameters q, material_code, vendor, source_tender_number, price, sort, dir, page and pageSize) is available to your own software and to AI agents through GET /api/v1/historical-prices with the historical.read scope, and through the historical_prices_list tool of the MCP server. The response flags your organization's rows with awarded_to_us, returns unit_price as null for an award with no published price, and when a default search finds no priced row it reports in unpriced_available how many unpriced awards there are. The API and the tool share this page's monthly allowance: a new row past it comes back with price_hidden set to true and unit_price null, and price_allowance gives the limit, what is used, what remains and when it resets. One tender's item history is at GET /api/v1/tenders/{id}/historical-prices (tenders.read scope, tenders_historical_prices tool), and a product's at GET /api/v1/products/{id}/historical-prices (products.read scope, products_historical_prices tool). See the API reference and Getting started.