Ted (Tenders Electronic Daily) est la version en ligne du «Supplément au Journal officiel» de l'UE, dédié aux marchés publics européens.
TED fournit un accès gratuit aux avis de passation des marchés publics des autorités contractantes basées dans l'Union européenne et dans le domaine économique européen (également s'ils fournissent des services dans un autre pays).
Le site Web Ted propose actuellement des téléchargements en vrac de packages XML datant de 1993, qui se trouvent sur le FTP FTP://ted.europa.eu/ accessible avec des informations d'identification génériques (invité / invité).
Ce dépôt contient des scripts pour extraire et analyser les avis d'attribution du contrat , c'est-à-dire les résultats de la procédure d'approvisionnement. Les scripts ont été entièrement testés pour extraire tous les avis d'attribution des contrats pour 2014, 2015 et 2016. Les documents sont extraits en tant que dictionnaires Python qui peuvent être enregistrés dans une base de données MongoDB pour une récupération facile, ou encore normalisées pour être converti dans les CSV.
L'image ci-dessous montre un exemple de document comme indiqué sur le site Web TED.

Un exemple de données extraites (du même document ci-dessus):
{
'DOC_ID': '466898-2016',
'CODED_DATA': {
'NOTICE_DATA': {
'IA_URL_GENERAL': 'www.ekz.ch',
'ISO_COUNTRY': 'CH',
'NO_DOC_OJS': '2016/S 253-466898',
'ORIGINAL_CPV': ['79970000'],
'REF_NOTICE': ['2016/S 172-310484']
},
'CODIF_DATA': {
'AA_AUTHORITY_TYPE': '4',
'AC_AWARD_CRIT': 'Z',
'DS_DATE_DISPATCH': '20161230',
'MA_MAIN_ACTIVITIES': ['Z'],
'NC_CONTRACT_NATURE': '4',
'PR_PROC': '2',
'RP_REGULATION': '7',
'TD_DOCUMENT_TYPE': '7',
'TY_TYPE_BID': '9'
}
},
'CONTRACT': {
'OTH_NOT': 'NO',
'CONTRACTING_AUTHORITY': 'Elektrizitätswerke des Kantons Zürich',
'CONTRACT_OBJECT': {
'CONCLUSION_FRAMEWORK_AGREEMENT': 'NO',
'CONTRACTS_DPS': 'NO',
'CONTRACT_COVERED_GPA': 'YES',
'CPV_MAIN': '79970000'
}
},
'AWARDS_OF_CONTRACT': [
{
'CONTRACTOR': {
'ADDRESS': 'Mühlebachstraße 52',
'COUNTRY': 'CH',
'OFFICIALNAME': 'Linkgroup AG',
'POSTAL_CODE': '8008',
'TOWN': 'Zürich'
},
'CONTRACT_VALUE': {
'COST': {
'CURRENCY': 'CHF',
'VALUE': 700000.0
}
}
}
]
}
Champs et description des données extraites
| Champ | Type de données | Description |
|---|---|---|
| Doc_id | Chaîne | Numéro de document unique dans Ted. |
La section cod_data est divisée en 2 groupes de données.
| Champ | Type de données | Description |
|---|---|---|
| No_doc_ojs | Chaîne | Numéro de notification dans Ted |
| Original_nuts | Liste (chaîne) | Code (s) régional (s) du lieu de performance ou de livraison. Un code de 2-5 chiffres de la nomenclature des unités territoriales pour les statistiques . Valeurs de recherche pour les deux premiers chiffres: iso_country.csv |
| Original_cpv | Liste (chaîne) | Produit ou service 8 chiffres code (s) du vocabulaire des achats communs . Valeurs de recherche pour les deux premiers chiffres: CPV.CSV |
| Iso_country | Chaîne | Code ISO de 2 caractères du pays où se trouve l'organisme contractant. Valeurs de recherche: iso_country.csv |
| IA_URL_GENERAL | Chaîne | Adresse Internet principale (URL) de l'organisme contractant |
| Ref_notice | Liste (chaîne) | Numéro de notification de référence dans Ted. En référence à une publication précédente (informations antérieures, corrigendum, ...) |
| Valeurs_list | Valeur totale | Valeur totale estimée ou valeur finale totale de l'achat |
Values_List peut être composé des champs suivants:
| Champ | Type de données | Description |
|---|---|---|
| Global_value | Valeur | La valeur totale de l'appel d'offres. Devrait être égal à la somme de la liste des contrats_value |
| Contrats_value | Liste (valeur) | Valeur de récompense individuelle. Cela se produit lorsque le contrat est composé de plusieurs parties ou lots. |
Chaque valeur peut être une valeur unique ou de plage et peut avoir un pourcentage de TVA
| Champ | Type de données | Description |
|---|---|---|
| DEVISE | Chaîne | Devise de la valeur |
| VALEUR | Flotter | Valeur |
| VAT_PRCT | Int | Pourcentage de TVA |
| Champ | Type de données | Description |
|---|---|---|
| DEVISE | Chaîne | Devise de la valeur |
| Low_value | Flotter | Valeur inférieure de la plage |
| High_value | Flotter | Valeur plus élevée de la plage |
| VAT_PRCT | Int | Pourcentage de TVA |
| Champ | Type de données | Description |
|---|---|---|
| Ds_date_dispatch | Chaîne | Date de dépêche de l'avis. Format: yyyymmdd |
| Td_document_type | Chaîne | Type de document. Valeurs de recherche: TD_Document_type.csv |
| Aa_authority_type | Chaîne | Type d'autorité d'attribution. Valeurs de recherche: aa_authority_type.csv |
| Nc_contract_nature | Chaîne | Nature du contrat. Valeurs de recherche: nc_contract_nature.csv |
| Pr_proc | Chaîne | Type de procédure. Valeurs de recherche: pr_proc.csv |
| RP_RÉGULATION | Chaîne | Le règlement qui s'applique à la procédure. Valeurs de recherche: RP_RÉGULATION.CSV |
| Ty_type_bid | Chaîne | Type d'offre. Valeurs de recherche: ty_type_bid.csv |
| Ac_award_crit | Chaîne | Type de critères d'attribution. Valeurs de recherche: ac_award_crit.csv |
| Ma_main_activities | Liste (chaîne) | Activité principale de l'organisme contractant. Valeurs de recherche: ma_main_activities.csv |
La section Contrat contient l'avis lui-même, au format XML. Dans le fichier XML d'origine, cette section peut être disponible en différentes traductions, jusqu'à 24 quand est entièrement traduite. Si disponible, la traduction en anglais du contrat est préférée. Sinon, le français et l'allemand deviennent respectivement le deuxième et le troisième choix. Lorsqu'une de cette traduction n'est pas présente, le premier disponible est choisi.
| Champ | Type de données | Description |
|---|---|---|
| Oth_not | Chaîne | Indiquez si l'avis suit une structure standard (alors oth_not = non ) ou que la structure est ouverte pour permettre la publication d'un autre avis qui ne suit pas un formulaire standard, alias un préavis non structuré (alors oth_not = oui ). Seulement lorsque Oth_not = non , les champs Contacting_authority, contrac_object et laids_of_contract sont extraits |
| Champ | Type de données | Description |
|---|---|---|
| Contracting_authority | Chaîne | Nom de l'autorité contractante |
Objet du contrat.
| Champ | Type de données | Description |
|---|---|---|
| Noix | Liste (chaîne) | Code (s) régional (s) du lieu de performance ou de livraison. Un code de 2-5 chiffres de la nomenclature des unités territoriales pour les statistiques . Valeurs de recherche pour les deux premiers chiffres: iso_country.csv |
| Noix_extra | Chaîne | Commentaires supplémentaires sur le lieu de la performance ou de la livraison |
| Cpv_main | Chaîne | Produit ou service principal 8 chiffres Code du vocabulaire des achats communs . Valeurs de recherche pour les deux premiers chiffres: CPV.CSV |
| Contrat_covered_gpa | Chaîne | Oui ou non si le contrat est couvert par GPA (accord d'approvisionnement du gouvernement) |
| Conclusion_framework_agrement | Chaîne | Oui ou non si le contrat fait partie d'un accord de cadre |
| Contrats_dps | Chaîne | Oui ou non si le contrat est soumis à un système d'achat dynamique |
| Contrat_value | Valeur du contrat | Valeur totale. Devrait correspondre à la somme des valeurs du contrat de l'entrepreneur individuel. Voir section Awards_Of_Contract |
Chaque valeur contractuelle peut être composée des champs suivants:
| Champ | Type de données | Description |
|---|---|---|
| COÛT | Valeur | Le coût réel |
| ESTIMATION | Valeur | Une estimation initiale du coût |
| Numéro_of_years | Int | Nombre d'année le contrat du dernier. Le coût / estimation pourrait être donné par an |
| Numéro_of_months | Int | Nombre de mois Le contrat dure. Le coût / estimation peut être donné par mois |
Les champs sont les mêmes que ceux mentionnés ci-dessus. Voir le type de données de valeur de la section
Liste des récompenses.
Chaque prix peut contenir les sous-sections suivantes:
| Champ | Type de données | Description |
|---|---|---|
| Nom officiel | Chaîne | Nom de l'entrepreneur |
| PAYS | Chaîne | Pays d'entrepreneur |
| ADRESSE | Chaîne | Adresse (nom de rue) de l'entrepreneur |
| VILLE | Chaîne | Ville d'entrepreneur |
| CODE POSTAL | Chaîne | Code postal de l'entrepreneur |
Les champs sont les mêmes que ceux mentionnés ci-dessus. Voir section 3.3.1 contrat_value
Modules python requis:
Facultatif:
Version Python: 3.6 Base de données: MongoDB, mode local
Exemple de la façon de convertir un document
file_path = '454322_2015.xml' # Contract Award notice downloaded from tED website
# Extract the raw data
from extractor import extract
raw = extract ( file_path )
# Validate the raw data
from validator import validate
data = validate ( raw )
# Prune the data: remove empty fields
from validator import prune
prune ( data )Structure du référentiel:
.
├── Lookups
│ └── AA_AUTHORITY_TYPE.csv
│ └── AC_AWARD_CRIT.csv
│ └── CPV.csv
│ └── ISO_COUNTRY.csv
│ └── MA_MAIN_ACTIVITY.csv
│ └── NC_CONTRACT_NATURE.csv
│ └── PR_PROC.csv
│ └── RP_REGULATION.csv
│ └── TD_DOCUMENT_TYPE.csv
│ └── TY_TYPE_BID.csv
├── extractor.py
└── validator.py
└── mongo_import.py
Lookups : dossier contenant divers fichiers de rechercheextractor.py : script pour extraire des données brutes du contratvalidator.py : scripts pour valider les données brutes et tailler le dictionnaire (c'est-à-dire supprimer les fichiers vides)mongo_import.py : script pour télécharger les données dans une base de données MongoDB Alessandra Sozzi, travaillant pour le Bureau des statistiques nationales Big Data Project
Libéré sous la licence du MIT.