How to Find the Right CPV Code for EU Tenders
What is a CPV code?
A CPV code is an eight-digit number that says, in any EU language, exactly what a public tender is buying. CPV stands for Common Procurement Vocabulary, the classification standard that public buyers across all 27 member states apply to their notices. When a city publishes a tender for road resurfacing, it tags that notice with a CPV code for road construction. When a hospital buys lab equipment, it tags a different one.
Because the system is shared, CPV codes are the most reliable way to filter tenders by sector. Country names, buyer names, and free-text titles vary wildly across 24 languages, but the code 45233000 means the same thing whether the notice is written in German, Polish, or Greek. Find the codes that match what you sell, and you can ignore everything else.
How a CPV code is structured
A CPV code is eight digits, read left to right as a hierarchy that narrows from a broad sector down to a specific product or service. The official form adds a ninth check digit after a hyphen — 45000000-7 is the full code for Construction work — but the eight-digit body is what you filter on.
| Position | Level | Example | Meaning |
|---|---|---|---|
| Digits 1–2 | Division | 45------ | Construction work |
| Digit 3 | Group | 452----- | Civil engineering |
| Digit 4 | Class | 4523---- | Highway construction |
| Digit 5 | Category | 45233--- | Roads and footpaths |
| Digits 6–8 | Detail | 45233140 | Road works |
The zeros matter. A code ending in many zeros is broad, and each non-zero digit you add makes it more specific. So 45233000 (road and motorway construction) sits inside 45230000, which sits inside 45200000, which sits inside 45000000 (all construction work). Walking up that chain is how you broaden a search, and walking down is how you narrow it.
How to find the right CPV code
You do not need to memorize the tree. A few approaches work well together:
- Search by keyword. Our free CPV code search matches a word like “asphalt” or “software” against every code label, shows the parent chain so you can step up to a broader category, and expands a code’s children so you can drill down. You can copy a code or share a direct link such as
/en/tools/cpv/?code=45233000. - Copy from real tenders. Find a past notice or award close to what you bid on and read the codes it carries. Buyers in a sector reuse the same handful, so this shows you the codes that actually appear in live notices, not just the ones that look right on paper.
- Check the official list. When you need to confirm a code or browse a whole division, the EU publishes the full vocabulary from the SIMAP CPV page. It is the authoritative source behind every search tool.
Here is how that looks in practice. Say you lay road surfacing. Search “asphalt” and you land on 45233222 (paving and asphalting works). That is your core code, but buyers do not always file at that level, so step up the parent chain to 45233000 (construction and surface works for highways and roads) to also catch the broader road jobs. From there you can expand the children to spot related codes worth adding, like surface dressing or pavement repair.
The goal is to pick the most specific code that still captures all your relevant work. Too broad and you drown in irrelevant notices. Too narrow and you miss tenders a buyer filed one level up.
Track a list, not a single code
Few suppliers fit neatly into one code. A landscaping firm might bid on grounds maintenance, tree surgery, and irrigation, each sitting in a different branch of the tree. List the codes for everything you actually deliver, not just your headline service.
It also pays to add a parent or a sibling code, because buyers classify inconsistently. A city might file a road project under general civil engineering rather than the exact road-works code, so a slightly wider net catches notices a narrow filter would miss. The trade-off is more noise, so review the codes on the tenders you find every so often and drop the ones that only bring clutter.
Two small things to watch:
- The check digit. Some systems expect the nine-digit form with the trailing check digit. For matching tenders, the eight-digit body is what you use.
- CPV revisions. The vocabulary is updated periodically, so re-confirm your codes still exist and mean what you expect when a new version ships.
Find your codes once, keep the short list current, and most of the searching is done for you.