Le codeset UNSPSC v26.0801 complet (149 849 produits) avec traductions françaises sourcées et traçées, prêt à l'emploi en CSV, SQLite, JSON et Parquet.
The complete UNSPSC v26.0801 codeset with traceable French translations, ready to use as CSV, SQLite, JSON and Parquet. English summary below.
UNSPSC (United Nations Standard Products and Services Code) est la nomenclature de référence des marchés publics et de l'e-procurement. Il n'existait aucune distribution bilingue EN/FR librement accessible et prête à intégrer : le codeset officiel est un Excel, et les traductions françaises publiques (Canada) sont éparpillées. Ce dépôt les réunit dans des formats directement exploitables par les développeurs.
📖 Documentation complète dans docs/ : ce qu'est UNSPSC et comment lire
un code (classification.md), organisation du dépôt et choix
de conception (architecture.md), référence CLI
(cli.md) et référence API Python (python-api.md).
| Fichier | Description |
|---|---|
data/segments.csv |
58 segments (code, titre EN, définition EN) |
data/families.csv |
559 familles |
data/classes.csv |
7 998 classes |
data/commodities.csv |
149 849 produits (avec synonymes, acronymes, version, clé) |
data/translations.csv |
180 170 lignes au format long (code, level, lang, title, source) |
data/schema.sql |
DDL PostgreSQL + import \copy + exemple de requête avec repli EN |
scripts/build.py |
Génère les exports dist/ depuis les CSV (stdlib ; Parquet si pyarrow) |
Les exports générés (dist/, publiés dans les releases) :
unspsc-bilingue.sqlite— base SQLite complète, indexée, requêtable telle quelle<table>.json.gz— un JSON plat par tableunspsc-tree.json.gz— arbre hiérarchique segment → famille → classe → produit, titres EN + FR<table>.parquet— pour pandas / DuckDB / Spark
pip install unspsc-frfrom unspsc_fr import UNSPSC
u = UNSPSC() # télécharge la base au premier usage (~88 Mo, mise en cache)
u.get(10101501).title # 'Chats' (repli EN automatique si non traduit)
u.search("ciment", lang="fr") # plein texte FTS5, insensible aux accents
u.children(10101500) # navigation hiérarchique
u.ancestors(10101501) # segment > famille > classeEt en ligne de commande : unspsc-fr get 10101501, unspsc-fr search "ciment" --lang fr.
Voir python/README.md.
SQLite (aucune dépendance) :
-- Libellé d'un produit, repli anglais si la traduction française manque
SELECT c.commodity_code,
COALESCE(fr.title, en.title) AS title,
fr.title IS NOT NULL AS is_translated
FROM commodities c
JOIN translations en ON en.code = c.commodity_code AND en.level = 'commodity' AND en.lang = 'en'
LEFT JOIN translations fr ON fr.code = c.commodity_code AND fr.level = 'commodity' AND fr.lang = 'fr'
WHERE c.commodity_code = 10101501; -- → « Chats »PostgreSQL :
cd data && psql -d votre_base -f schema.sqlPython / DuckDB :
import duckdb
duckdb.sql("SELECT * FROM 'dist/commodities.parquet' LIMIT 5")Regénérer les exports :
python3 scripts/build.py # SQLite + JSON
pip install pyarrow # optionnel, active le Parquet| Niveau | Traduits | Total | % |
|---|---|---|---|
| Segments | 57 | 58 | 98,3 % |
| Familles | 502 | 559 | 89,8 % |
| Classes | 2 508 | 7 998 | 31,4 % |
| Produits | 18 639 | 149 849 | 12,4 % |
Chaque traduction est traçée dans la colonne source :
CA-v21-2021(7 743 codes) : mappage NIBS-UNSPSC du gouvernement du Canada (UNSPSC v21, sous-ensemble des marchés publics fédéraux). Prioritaire en cas de doublon.CA-v10-2007(13 963 codes) : version 10 bilingue complète (2007, archivée). Les codes UNSPSC sont globalement stables mais certains libellés ont pu évoluer depuis.
Seul segment sans traduction : 57000000 (Humanitarian Relief Items, Kits, or Accessories), ajouté après 2007 et absent du sous-ensemble canadien.
Contributions bienvenues pour compléter la couverture : la table translations est
au format long — ajouter une langue ou une traduction, c'est simplement insérer des
lignes avec le bon code ISO 639-1 et une source identifiable, sans toucher au schéma.
- Un même code peut exister à deux niveaux (ex. 26132000 est à la fois une classe et un
produit dans le codeset UNDP) : la clé primaire de
translationsest donc(code, level, lang). scripts/build.pynormalise les codes en entiers (le CSV source contient des flottants du type10101501.0).
- Codeset anglais : © UNDP, marque déposée UNSPSC®. Distribution gratuite pour usage de base via https://www.undp.org/unspsc. Vérifiez les conditions UNSPSC avant toute redistribution commerciale.
- Traductions françaises : contient des renseignements visés par la Licence du gouvernement ouvert – Canada. Reprenez cette attribution dans toute plateforme qui réutilise ces données.
Voir NOTICE pour le détail.
This repository packages the full UNSPSC v26.0801 codeset (149,849 commodities)
with traceable French translations from Government of Canada open data, distributed as
CSV, SQLite, JSON and Parquet. The translations table uses a long format
(code, level, lang, title, source) so additional languages can be added by simply
inserting rows. French coverage: 98% of segments, 90% of families, 31% of classes,
12% of commodities — contributions welcome. See NOTICE for licensing
(UNDP codeset + Open Government Licence – Canada).