Guide
CPV codes search: find yours and the tenders that use them
CPV codes are the EU's Common Procurement Vocabulary: an eight-digit code on EU tender notices, where the first two digits name the division. Search by division plus a few words, not by one exact code: on 24 September 2026 the exact code for software maintenance was on 250 open notice rows, while its division was on 3,325.
A single classification system applicable to public procurement, known as the "Common Procurement Vocabulary" or "CPV" is hereby established.
On 24 September 2026, 17,666 open notice rows in Victano carried a construction code (division 45), 3,325 an IT services code (72), and 3,433 carried no CPV code at all.
Tender notices published under the EU procurement directives describe what is being bought with CPV codes. Buyers pick the codes; suppliers search and set alerts by them. The usual mistake is to find one "right" code, filter by it and assume that is the market.
What is a CPV code?
The Common Procurement Vocabulary is set by Regulation (EC) No 2195/2002. Its Article 1 opens: "A single classification system applicable to public procurement, known as the "Common Procurement Vocabulary" or "CPV" is hereby established." Each code means the same thing in every EU language, which is why one code finds a German, a Spanish and a Lithuanian notice in one search.
A code has eight digits and a check digit after a dash. The more leading digits two codes share, the closer the work:
| Level | Digits | Example | Covers |
|---|---|---|---|
| Division | 2 | 72 | IT services: consulting, software development, Internet and support |
| Group | 3 | 722 | software programming and consultancy |
| Class and category | 4 and 5 | 7226, 72267 | narrower software service types |
| Code | 8 | 72267000 | software maintenance and repair services |
How many open tenders carry each division?
We counted open notices by division across Victano's 18 sources on 24 September 2026. The numbers are notice rows, so one procurement published on TED and on its national portal counts twice.
Open notice rows by CPV division, 24 September 2026
search_opportunities with status open and one cpv_divisions filter per bar; the count is cpv_coverage.carry_a_cpv_code. Read 2026-09-24; the keyless trial sees data 24 hours late.Construction is more than twice the next division. The useful part for a supplier is the next table.
Why does one exact code miss most tenders?
Because the buyer chooses the code, not you. Searching for open software maintenance work three ways on the same day:
| How we searched | Open notice rows |
|---|---|
| Exact code 72267000 only | 250 |
| Division 72 | 3,325 |
| Rows with no CPV code at all, which no code filter can select | 3,433 |
search_opportunities, status open, 2026-09-24. Of the rows with no code, 2,576 come from France's BOAMP, 337 from Germany and 227 from Lithuania's CVP IS, where Victano reads the code from each notice page and had not yet read these.In the same search, a Spanish buyer coded an Oracle maintenance contract 72267000, while a French buyer put its application maintenance contract under both 72267000 and the general IT services code. A company filtering on one code sees whichever choice happens to match its own.
Recorded run · 1tool calls
You
Find open software maintenance tenders by CPV code 72267000.
search_opportunitiesquery "software maintenance", cpv 72267000, status open
250 rows carry the code; 3,433 rows in scope carry no code and cannot be selected by any code filter
Your assistant
Top results: a German VMware vSphere Foundation maintenance subscription (closes 2 October), a German OpenText (Micro Focus) maintenance renewal (30 September), and a Spanish Oracle maintenance service worth EUR 991,000 (21 October).
The same work is often coded elsewhere in division 72, which holds 3,325 open rows. Search the division and add the words "maintenance" or "support".
How do you find your own codes?
- Start from contracts you have won. Open two or three and copy the codes the buyer used. That is your most accurate list.
- Go up one level. Keep the first three or four digits of each code, so the codes other buyers choose for the same work are in.
- Check the neighbouring divisions. IT firms often fit 48 (software packages and information systems) as well as 72; builders often fit 71 as well as 45.
- Add words. Two or three words the buyer would write catch the notices coded unexpectedly and the ones with no code.
The TED explainer covers where these notices are published, and the bid/no-bid checklist covers what to do once the search finds one.
Do this in your assistant
Paste this
Read https://victano.com/start.md and follow the onboarding instructions. Then search open tenders in CPV division [your two digits] with the words [two or three words], in [countries], and tell me how many rows carry no code.Connector address
https://mcp.victano.com/mcpSearch and notice records work without an account. Every source and its last read time is on /coverage; setup for each assistant is on /install.
What does code search not tell you?
Whether you may bid and whether you should. The code says what is being bought; the selection criteria, value and deadlines say who can win it. The keyless trial also sees data 24 hours late, and national portals below the EU thresholds are only as complete as the sources Victano reads, which are listed with their dates on /coverage.
Questions people ask
Do I have to put a CPV code in my bid? Usually not. The buyer states the codes in the notice; you use them to find notices and set alerts.
How many codes should I track? As many divisions and groups as match your work, usually two to five, plus a few words. Dozens of exact codes still miss the notices coded unexpectedly.
Are CPV codes the same in every EU country? Yes. It is one EU vocabulary, so a code that finds Lithuanian notices also finds German and Spanish ones.
No sign-up form. Your assistant does the rest.
Say this to Claude Code, Cursor or any assistant that sets itself up, and it connects itself.
Read https://victano.com/start.md and follow the onboarding instructions.