---
canonical: https://trinta.ai/blog/cpv-codes-explained
language: en
updated: 2026-10-07
publisher: "TRINTA"
publisher_url: https://trinta.ai
---
# What Are CPV Codes and How to Use Them to Find Tenders

> CPV codes explained for SMEs and exporters: the 8-digit classification, finding your codes, and using them on TED and national portals to find tenders.

Source: https://trinta.ai/blog/cpv-codes-explained · Published: 2026-07-21 · Category: Guide · 7 min read
Keywords: CPV codes, TED tenders, public procurement, tender search, EU procurement, tender notices

Picture a heating contractor in Porto who has given up on public tenders. He searched TED every Monday for "boiler", "HVAC", and "climatização", scrolled a few pages, found mostly noise, and closed the tab. Three months later he learned that a regional hospital had tendered a heating plant upgrade worth several hundred thousand euros. The notice never used the word "boiler". It used a number: **45331100**. That number is a CPV code, and not knowing it cost him a real shot at the contract.

If you sell to government buyers in Europe, CPV codes are the single most important thing you are probably ignoring. Here is how they work and how to turn them into a reliable stream of relevant tenders.

## What a CPV code actually is

**CPV** stands for **Common Procurement Vocabulary**. It is the standardised classification system the European Union uses to describe the subject of a public contract. Every contracting authority, from a town hall in Slovenia to a national rail operator in Spain, is required to tag its tender notices with at least one CPV code so that the same product or service is described the same way regardless of language.

This solves a real problem. A buyer in Lisbon writes "ventilador", a buyer in Paris writes "ventilateur", a buyer in Warsaw writes something else again. Keyword search across 24 official EU languages is hopeless. The CPV code is the common thread that ties them together.

Each code is an **8-digit number plus a check digit** (the ninth digit, separated by a hyphen, is just a control character). The digits are hierarchical, and that structure is the whole point:

- The first **two digits** define the division, for example **45** = construction work, **33** = medical equipment, **72** = IT services, **09** = petroleum and fuels.
- Each further digit narrows the category. So **45000000** (construction) leads to **45300000** (building installation work), then **45330000** (plumbing and sanitary works), then **45331000** (heating, ventilation, air conditioning), then **45331100** (central heating installation).

Read left to right, a code goes from a broad sector to a precise deliverable. That hierarchy is what lets you search broad or narrow on purpose, instead of guessing keywords.

## How to find your CPV codes

Do not try to memorise the list. There are over 9,000 codes. Instead, build a short, deliberate set that matches what you actually sell.

A practical method:

1. **Start from a notice you would have wanted.** Find one or two past tenders that were a perfect fit for your business. On TED or your national portal, open the notice and read the CPV code it used. Buyers tell you exactly how they classify your work.
2. **Browse the official tree.** The European Commission publishes the full CPV in the SIMAP section of its site, and the codes are searchable inside TED itself. Type a plain word ("oxygen", "catering", "asphalt") and the tool returns matching codes with descriptions.
3. **Go one level up and one level down.** If your sharpest match is **33157400** (medical breathing devices), check the parent **33157000** and siblings too. Some buyers tag loosely. A code that is one level broader catches notices a too-specific filter would miss.
4. **Keep the list tight.** Most SMEs need somewhere between **5 and 20 codes**, not 200. A bloated list reintroduces the noise you were trying to escape.

Write the final set down. This list becomes the backbone of every search and every alert you set up.

## Using CPV codes on TED and national portals

**TED** (Tenders Electronic Daily) is the EU's official journal supplement for public procurement. It publishes notices above the EU thresholds, which for most goods and services sit roughly in the **€140,000 to €216,000** range for central and sub-central authorities, and over **€5 million** for public works. Below those thresholds, tenders are published nationally rather than on TED.

On the TED website, use the **advanced search** and filter by **CPV code** rather than free text. Combine it with country and a publication date range, and you get a clean list of in-scope contracts. You can save the query and, on the current TED platform, turn it into an email alert.

The same logic applies on national portals, which is where most below-threshold business actually lives:

- **Portugal:** BASE.gov.pt and the operational platforms (acingov, vortalGOV, anoGOV) all index by CPV.
- **Spain:** the Plataforma de Contratación del Sector Público lets you filter by CPV.
- **France:** BOAMP and PLACE both carry CPV tagging.
- **Italy, Germany, Poland, and the rest** run their own systems, and nearly all of them expose a CPV filter.

The workflow is identical everywhere: filter by your code list first, then read titles. You stop scrolling past contracts in languages you do not speak, because the code did the translation for you.

## A worked example

Say you supply **medical gas pipeline systems** to hospitals. Your core CPV set might look like this:

- **33157000** medical gas and respiratory therapy devices
- **33157400** medical breathing devices
- **44160000** pipeline and related items
- **45333000** gas-fitting installation work
- **50421000** repair and maintenance of medical equipment

Filter TED and the Spanish, French, and Portuguese portals on those five codes, set the country to a handful of target markets, and you have replaced "search five portals in three languages every week" with one structured query. A hospital in Seville tendering an oxygen plant will surface even though its notice is written entirely in Spanish, because **45333000** means the same thing in Seville as it does in Coimbra.

## Where CPV codes fall short, and how to close the gap

CPV is powerful but blunt. Two limits matter:

- **Buyers misclassify.** A relevant contract sometimes gets a generic parent code, or the wrong one entirely. Codes catch most of your market, not all of it. Keep a few keyword alerts running alongside your code filters as a safety net.
- **Monitoring is still manual.** Knowing your codes does not save you from logging into TED plus four national portals, every week, forever. That is the part that quietly breaks down, exactly as it did for the Porto contractor.

This is where a CPV-aware feed earns its place. Instead of running the same searches by hand, you define your codes and target countries once, and a platform watches **TED and the national portals continuously**, matches each new notice against your profile, and scores it for fit. You open a single daily list of tenders that already belong to you, ranked by relevance, with the deadline attached. The classification system was built to make your market findable. A daily scored feed is simply the tool that finds it for you, every morning, without the open tab and the Monday scroll.

## Frequently asked questions

**What is a CPV code?**

A CPV code is an entry in the Common Procurement Vocabulary, the EU's standard classification for describing what a public contract is buying. Each code is eight digits plus a check digit, moving from broad division to specific product or service. Buyers assign codes to notices, and suppliers use them to filter what they see.

**How do I find the right CPV codes for my business?**

Work from what you actually sell rather than from the category you identify with, and collect every code that could plausibly describe it, including adjacent ones. Then check the codes used on past awards for contracts you would have wanted, since that shows how buyers in your market classify in practice rather than in theory.

**Why is CPV code searching not enough on its own?**

Because buyers classify inconsistently. The same product can appear under several plausible codes, a bundled contract may be filed under whichever component dominates, and some notices are coded broadly enough to be meaningless. Codes are a useful filter and a poor guarantee, which is why semantic matching on the notice text catches what codes miss.

---

All guides: https://trinta.ai/blog · Site index for agents: https://trinta.ai/llms.txt
