TED (Tenders Electronic Daily) es la versión en línea del 'Suplemento para la revista oficial' de la UE, dedicada a la contratación pública europea.
TED proporciona acceso gratuito a avisos de contratación pública de las autoridades contratantes con sede en la Unión Europea y en el Área Económica Europea (también si proporcionan servicios en cualquier otro país).
El sitio web de TED actualmente ofrece descargas masivas de paquetes XML que datan de 1993, que se pueden encontrar en el FTP ftp://ted.europa.eu/ accesible con credenciales genéricas (invitado/invitado).
Este repositorio contiene SCRIP para extraer y analizar avisos de la adjudicación de contratos , es decir, los resultados del procedimiento de adquisición. Los scripts se han probado completamente para extraer todos los avisos de adjudicación de contrato para 2014, 2015 y 2016. Los documentos se extraen como diccionarios de Python que se pueden guardar en una base de datos MongoDB para una fácil recuperación, o más normalizados para convertirse en CSVS.
La imagen a continuación muestra un ejemplo de documento como se muestra en el sitio web de TED.

Un ejemplo de datos extraídos (del mismo documento anterior):
{
'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
}
}
}
]
}
Campos y descripción de los datos extraídos
| Campo | Tipo de datos | Descripción |
|---|---|---|
| Doc_id | Cadena | Número de documento único en TED. |
La sección Coded_Data se divide en 2 grupos de datos.
| Campo | Tipo de datos | Descripción |
|---|---|---|
| No_doc_ojs | Cadena | Número de aviso en TED |
| Originales_nuts | Lista (cadena) | Códigos de región del lugar de rendimiento o entrega. Un código de 2-5 dígitos de la nomenclatura de unidades territoriales para estadísticas . Valores de búsqueda para dos primeros dígitos: ISO_Country.csv |
| Original_cpv | Lista (cadena) | Producto o servicio Código (s) de 8 dígitos del vocabulario de adquisición común . Valores de búsqueda para dos primeros dígitos: CPV.CSV |
| Iso_country | Cadena | Código ISO de 2 características del país donde se encuentra el organismo contratante. Valores de búsqueda: iso_country.csv |
| Ia_url_general | Cadena | Dirección principal de Internet (URL) del cuerpo de contratación |
| Ref_NOTICE | Lista (cadena) | Número de aviso de referencia en TED. Hacer referencia a una publicación anterior (información anterior, Corrigendum, ...) |
| Valores_list | Valor total | Valores totales estimados o valor final total de la adquisición |
Values_List puede estar compuesto por los siguientes campos:
| Campo | Tipo de datos | Descripción |
|---|---|---|
| Global_Value | Valor | El valor total de la licitación. Debe igualar la suma de en la lista de contratos_value |
| Contracts_value | Lista (valor) | Valor de premios individuales. Esto sucede cuando el contrato está compuesto por múltiples partes o lotes. |
Cada valor puede ser un valor único o de rango y puede tener porcentaje de IVA
| Campo | Tipo de datos | Descripción |
|---|---|---|
| DIVISA | Cadena | Moneda del valor |
| VALOR | Flotar | Valor |
| VAT_PRCT | Intencionalmente | Porcentaje de IVA |
| Campo | Tipo de datos | Descripción |
|---|---|---|
| DIVISA | Cadena | Moneda del valor |
| Valor bajo | Flotar | Valor más bajo del rango |
| High_Value | Flotar | Valor más alto del rango |
| VAT_PRCT | Intencionalmente | Porcentaje de IVA |
| Campo | Tipo de datos | Descripción |
|---|---|---|
| Ds_date_dispatch | Cadena | Fecha de envío del aviso. Formato: yyyymmdd |
| Td_document_type | Cadena | Tipo de documento. Valores de búsqueda: td_document_type.csv |
| Aa_authority_type | Cadena | Tipo de autoridad de adjudicación. Valores de búsqueda: aa_authority_type.csv |
| Nc_contract_nature | Cadena | Naturaleza del contrato. Valores de búsqueda: nc_contract_nature.csv |
| PR_PROC | Cadena | Tipo de procedimiento. Valores de búsqueda: PR_PROC.CSV |
| Rp_regulación | Cadena | La regulación que se aplica al procedimiento. Valores de búsqueda: rp_regulation.csv |
| Ty_type_bid | Cadena | Tipo de oferta. Valores de búsqueda: ty_type_bid.csv |
| AC_AWARD_CRIT | Cadena | Tipo de criterios de adjudicación. Valores de búsqueda: AC_AWARD_CRIT.CSV |
| Ma_main_activities | Lista (cadena) | Actividad principal del cuerpo de contratación. Valores de búsqueda: ma_main_activities.csv |
La sección del contrato contiene el aviso en sí, en el formato XML. En el archivo XML original, esta sección puede estar disponible en diferentes traducciones, hasta 24 cuando se traduce completamente. Si está disponible, se prefiere la traducción al inglés del contrato. De lo contrario, el francés y el alemán se convierten en segunda y tercera opción respectivamente. Cuando cualquiera de esta traducción no está presente, se elige el primero disponible.
| Campo | Tipo de datos | Descripción |
|---|---|---|
| OTH_ Not | Cadena | Indique si el aviso sigue una estructura estándar (entonces oth_not = no ) o estructura está abierta para permitir la publicación de cualquier otro aviso que no siga una forma estándar, también conocida como aviso no estructurado (entonces oth_not = yes ). Solo cuando OTH_NOT = no , se extraen los campos contrating_authority, contract_object y premios_of_contract |
| Campo | Tipo de datos | Descripción |
|---|---|---|
| Contrating_Authority | Cadena | Nombre de la autoridad contratante |
Objeto del contrato.
| Campo | Tipo de datos | Descripción |
|---|---|---|
| COJONES | Lista (cadena) | Códigos de región del lugar de rendimiento o entrega. Un código de 2-5 dígitos de la nomenclatura de unidades territoriales para estadísticas . Valores de búsqueda para dos primeros dígitos: ISO_Country.csv |
| Nuts_extra | Cadena | Comentarios extraídos adicionales sobre el lugar de rendimiento o entrega |
| CPV_MAIN | Cadena | Producto principal o servicio Código de 8 dígitos del vocabulario de adquisición común . Valores de búsqueda para dos primeros dígitos: CPV.CSV |
| Contract_covered_gpa | Cadena | Sí o no si el contrato está cubierto por GPA (acuerdo de contratación gubernamental) |
| Conclusión_framework_agreement | Cadena | Sí o no si el contrato es parte de un acuerdo marco |
| Contrats_dps | Cadena | Sí o no si el contrato está sujeto a un sistema de compras dinámico |
| Contract_value | Valor de contrato | Valor total. Debe corresponder a la suma de los valores del contrato del contratista individual. Consulte la sección premios_of_contrato |
Cada valor del contrato puede estar compuesto por los siguientes campos:
| Campo | Tipo de datos | Descripción |
|---|---|---|
| COSTO | Valor | El costo real |
| ESTIMAR | Valor | Una estimación inicial del costo |
| Número_of_years | Intencionalmente | Número de año el contrato final. El costo/estimación puede administrarse por año |
| Número_of_months | Intencionalmente | Número de mes el contrato final. El costo/estimación puede administrarse por mes |
Los campos son los mismos que se mencionan anteriormente. Consulte el tipo de datos de valor de la sección
Lista de premios.
Cada premio puede contener las siguientes subsecciones:
| Campo | Tipo de datos | Descripción |
|---|---|---|
| Nombre oficial | Cadena | Nombre del contratista |
| PAÍS | Cadena | País de contratista |
| DIRECCIÓN | Cadena | Dirección (nombre de la calle) del contratista |
| CIUDAD | Cadena | Ciudad de contratista |
| CÓDIGO POSTAL | Cadena | Código postal del contratista |
Los campos son los mismos que se mencionan anteriormente. Consulte la Sección 3.3.1 Contract_Value
Se requieren módulos de pitón:
Opcional:
Versión de Python: 3.6 Base de datos: MongoDB, modo local
Ejemplo de cómo convertir un documento
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 )Estructura del repositorio:
.
├── 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 : carpeta que contiene varios archivos de búsquedaextractor.py : script para extraer datos sin procesar de los avisos de adjudicación de contratovalidator.py : scripts para validar los datos sin procesar y podar el diccionario (es decir, eliminar las archivos vacías)mongo_import.py : script para cargar los datos en una base de datos MongoDB Alessandra Sozzi, que trabaja para el Proyecto de Big Data de la Oficina de Estadísticas Nacionales
Liberado bajo la licencia MIT.