Nacional Ministerio de Hacienda

PLACSP — Licitaciones por contratante

Feed principal de licitaciones publicadas por los perfiles de contratante en la Plataforma de Contratación del Sector Público. Incluye todas las administraciones con perfil propio.

Ficha técnica

Formato
Atom XML (CODICE 2.07)
Registros
~4 millones
Cobertura
2012–actualidad
Actualización
Diaria
Licencia
Datos abiertos
Entidad
Ministerio de Hacienda

Descripción

La Plataforma de Contratación del Sector Público (PLACSP) es el portal oficial del Gobierno de España para la publicidad de licitaciones y contratos públicos. Gestionado por el Ministerio de Hacienda, centraliza la información de todas las administraciones públicas que tienen perfil de contratante propio.

El feed de sindicación (sindicacion_643) proporciona los datos en formato Atom XML siguiendo la especificación CODICE (Componentes y Documentos Interoperables para la Contratación Electrónica). Cada entry del feed contiene un bloque ContractFolderStatus con toda la información estructurada del contrato.

Los archivos ZIP anuales contienen todos los ficheros .atom del año, con un máximo de 500 entries por fichero, encadenados mediante links de paginación. Se actualizan diariamente con los cambios del día anterior.

Estructura de datos

  • ContractFolderID — Número de expediente
  • ContractFolderStatusCode — Estado (PRE, PUB, EV, ADJ, RES, ANUL)
  • LocatedContractingParty — Órgano contratante (NIF, DIR3, nombre)
  • ProcurementProject/Name — Objeto del contrato
  • ProcurementProject/TypeCode — Tipo (1=Suministros, 2=Servicios, 3=Obras)
  • BudgetAmount/TaxExclusiveAmount — Importe licitación sin IVA
  • BudgetAmount/TotalAmount — Importe licitación con IVA
  • TenderingProcess/ProcedureCode — Procedimiento (1=Abierto, 2=Restringido...)
  • RealizedLocation/CountrySubentityCode — Código NUTS del lugar de ejecución
  • TenderResult/WinningParty — Adjudicatario (NIF, nombre)
  • TenderResult/AwardedTenderedProject/PayableAmount — Importe adjudicación
  • TenderResult/AwardDate — Fecha de adjudicación
  • RequiredCommodityClassification/ItemClassificationCode — Código CPV

Ejemplos de código

Descargar ZIP anual curl
# Descargar licitaciones de 2025
curl -sLk -o licitaciones_2025.zip \
  "https://contrataciondelsectorpublico.gob.es/sindicacion/sindicacion_643/licitacionesPerfilesContratanteCompleto3_2025.zip"

# Descomprimir
unzip licitaciones_2025.zip -d licitaciones_2025/

# Ver primer fichero
head -100 licitaciones_2025/licitacionesPerfilesContratanteCompleto3.atom
Parsear entries del feed Atom python
import zipfile
import xml.etree.ElementTree as ET

# Namespaces CODICE
NS = {
    'atom': 'http://www.w3.org/2005/Atom',
    'cbc': 'urn:dgpe:names:draft:codice:schema:xsd:CommonBasicComponents-2',
    'cac': 'urn:dgpe:names:draft:codice:schema:xsd:CommonAggregateComponents-2',
    'cac-ext': 'urn:dgpe:names:draft:codice-place-ext:schema:xsd:CommonAggregateComponents-2',
}

with zipfile.ZipFile('licitaciones_2025.zip') as zf:
    for name in zf.namelist():
        if not name.endswith('.atom'):
            continue
        tree = ET.parse(zf.open(name))
        root = tree.getroot()

        for entry in root.findall('atom:entry', NS):
            title = entry.findtext('atom:title', '', NS)
            updated = entry.findtext('atom:updated', '', NS)
            link = entry.find('atom:link', NS)
            url = link.get('href', '') if link is not None else ''

            # Datos del contrato (ContractFolderStatus)
            cfs = entry.find('.//{urn:dgpe:names:draft:codice-place-ext:schema:xsd:CommonAggregateComponents-2}ContractFolderStatus')
            if cfs is None:
                continue

            expediente = cfs.findtext('{urn:dgpe:names:draft:codice:schema:xsd:CommonBasicComponents-2}ContractFolderID', '')
            objeto = cfs.findtext('.//{urn:dgpe:names:draft:codice:schema:xsd:CommonBasicComponents-2}Name', '')

            print(f'{expediente}: {objeto[:80]}')
Leer feed Atom con SimpleXML php
<?php
// Leer un fichero .atom del ZIP
$xml = simplexml_load_file('licitaciones_2025/licitacionesPerfilesContratanteCompleto3.atom');

// Registrar namespaces CODICE
$namespaces = [
    'cbc' => 'urn:dgpe:names:draft:codice:schema:xsd:CommonBasicComponents-2',
    'cac' => 'urn:dgpe:names:draft:codice:schema:xsd:CommonAggregateComponents-2',
    'cac-ext' => 'urn:dgpe:names:draft:codice-place-ext:schema:xsd:CommonAggregateComponents-2',
];

foreach ($xml->entry as $entry) {
    $title = (string) $entry->title;
    $link = (string) ($entry->link['href'] ?? '');
    $updated = (string) $entry->updated;

    // Buscar ContractFolderStatus
    $entry->registerXPathNamespace('cac-ext', $namespaces['cac-ext']);
    $entry->registerXPathNamespace('cbc', $namespaces['cbc']);

    $cfs = $entry->xpath('.//cac-ext:ContractFolderStatus');
    if (empty($cfs)) continue;

    $cfs[0]->registerXPathNamespace('cbc', $namespaces['cbc']);
    $expediente = (string) ($cfs[0]->xpath('cbc:ContractFolderID')[0] ?? '');

    echo "$expediente: $title\n";
}

Archivos disponibles