Catalonia Public Tenders Scraper (PSCP)
Pricing
from $2.00 / 1,000 results
Catalonia Public Tenders Scraper (PSCP)
Licitaciones publicas de Cataluna desde el dataset Socrata de la Plataforma de serveis de contractacio publica (PSCP), con enriquecimiento opcional del expediente completo. Catalonia public procurement tenders and awards.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Santi Belloso Lopez
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Catalonia Public Tenders Scraper (PSCP) · Licitaciones públicas de Cataluña
Extrae licitaciones y adjudicaciones públicas de Cataluña desde el dataset oficial de open data (Socrata) de la Plataforma de serveis de contractació pública (PSCP) de la Generalitat de Catalunya, con enriquecimiento opcional del expediente completo (órgano de contratación, lotes, adjudicatarios por lote).
Scrapes Catalonia public procurement tenders and awards from the Generalitat's official Socrata open-data catalogue, with optional full tender-record enrichment.
🇪🇸 Español
Qué obtienes
Un ítem por publicación (anuncio, adjudicación, formalización…) del dataset maestro de la PSCP:
| Campo | Qué es |
|---|---|
idExpediente, idIntern | Número de expediente del órgano y ID interno de la PSCP |
titulo, objeto | Título de la publicación y objeto del contrato |
administracion, organoContratacion, organoSuperior | Quién contrata, por niveles |
tipoContrato, procedimiento, tramitacion | Servicios/Obras/Suministros…, procedimiento de adjudicación |
estado | Fase real del dataset (Anunci de licitació, Adjudicació, Formalització, Execució…) |
presupuestoLicitacionSinIva/ConIva, valorEstimadoContrato | Importes como número |
importeAdjudicacionSinIva/ConIva | Importe de adjudicación, como número |
adjudicatario.nif, .razonSocial | Empresa adjudicataria — dato mercantil, se publica |
codigosCpv, lugarEjecucion, codigoNuts | Clasificación económica y territorio |
fechaPublicacionAnuncio, fechaLimiteOfertas, fechaPublicacionAdjudicacion, fechaPublicacionFormalizacion | Fechas clave |
enlaceFichaPublica | Ficha pública en contractaciopublica.cat |
enlacesJson | Todas las URLs de detalle disponibles en la fila (licitacio, adjudicacio, formalitzacio…) |
Con conDetalle: true se añade además detalle (organo de contratación,
lotes y adjudicatarios por lote — ver más abajo).
Parámetros de entrada
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
keywords | lista de textos | [] | Busca en el objeto del contrato y en el título, en servidor. Vacío = sin filtro |
tipoContrato | enum | — | Valor real del dataset (Serveis, Obres, Subministraments…) |
estado | anuncio|adjudicacion|formalizacion | — | Fase de publicación. Vacío = todas |
importeMinimo / importeMaximo | número | — | Filtro en servidor por presupuesto/importe de adjudicación (EUR) |
fechaDesde | fecha AAAA-MM-DD | — | Desde esta fecha de publicación de la fase elegida. Recomendado para ejecuciones diarias (el dataset se actualiza a diario) |
conDetalle | booleano | false | Ver más abajo. ⚠️ Multiplica las peticiones HTTP |
incluirContactosNominales | booleano | false | Ver más abajo |
maxItems | entero | 500 | Tope de ítems; el actor para limpiamente al alcanzarlo |
Ejemplo:
{"keywords": ["neteja"],"tipoContrato": "Serveis","estado": "adjudicacion","maxItems": 200}
El filtrado ocurre en el servidor, no en el cliente
Este actor traduce el input a SoQL ($where, $select, $order,
$limit/$offset) y lo envía al servidor Socrata: nunca descarga de más
para filtrar después en memoria. El propio log de la ejecución muestra la
cláusula $where exacta que se ha enviado.
conDetalle: el expediente completo
Cada fila del dataset trae ya varias URLs url_json_* que apuntan al JSON
completo del expediente en contractaciopublica.cat/portal-api/... —
sin necesidad de autenticación: el token va firmado en la propia URL,
copiado del open data. Con conDetalle: true el actor sigue la URL de la
fase más avanzada disponible (formalización > adjudicación > licitación >
publicación agregada…) y añade al ítem:
detalle.organo— nombre, NIF, dirección, teléfono y email institucionales del órgano de contratación (esto se conserva siempre).detalle.lotes[]— por cada lote: importe de adjudicación, CPV principal y adjudicatarios (razón social, NIF, tipo de empresa, país, provincia).detalle.normativaAplicable,.tipoTramitacion,.procedimientoAdjudicacion,.presupuestoLicitacionConIva,.financiadoFondosUe.
⚠️ Esto es una petición HTTP adicional por cada licitación guardada — duplica (o más) el número de peticiones totales y, como el actor respeta ~1 req/s, el tiempo de ejecución crece en la misma proporción. Actívalo solo si necesitas ese nivel de detalle.
Protección de datos: nombres de personas físicas fuera por defecto
incluirContactosNominales protege dos cosas distintas bajo el mismo
flag, porque son la misma categoría de dato (identificación nominal de una
persona física concreta):
- Siempre, en el listado base (no requiere
conDetalle): una parte de los adjudicatarios de contratos públicos catalanes son autónomos (persona física), no empresas. El NIF ya llega enmascarado por la propia fuente ("*** 1014 **"), pero el nombre y apellidos llegan sin enmascarar ("Carolina Grecia Ferrer Mateu"). Verificado con una muestra real de 25 adjudicaciones el 23-ago-2026: 2 de 25 eran persona física. ConincluirContactosNominales: false— el valor por defecto —adjudicatario.nify.razonSocialse anulan y solo quedaadjudicatario.tipoPersona(fisica/juridica/desconocido, con la misma clasificación de NIF que usaspain-grants-bdns, fail-closed). El resto del contrato (importe, órgano, fechas…) se conserva: es gasto público, no dato personal. - Solo si
conDetalle: true: el JSON de expediente completo incluye, para cada órgano de contratación, una listapersonesContactecon nombre, apellidos, cargo, teléfono y email de personas físicas concretas (funcionarios/as del órgano: la secretaria, la interventora…). Con el flag desactivado esos campos no aparecen en el dataset, ni siquiera vacíos. Solo se conserva la información del órgano en sí (nombre de la institución, NIF, dirección, teléfono/email institucionales), que no es un dato personal.
Si activas incluirContactosNominales, el dataset incluirá nombres de
autónomos adjudicatarios y, con conDetalle, también nombre, cargo,
teléfono y email de empleados públicos concretos: su tratamiento y
redifusión posterior son responsabilidad tuya conforme al RGPD y la
LOPDGDD, aunque su publicación original esté amparada por la normativa
de contratación pública.
Cuánto tarda
El actor respeta un máximo de ~1 petición por segundo, tanto para el listado como para el detalle (comparten la misma cola).
- Sin
conDetalle: 100 ítems por petición de listado → rápido. - Con
conDetalle: una petición de detalle adicional por ítem guardado → ~1 s por ítem, más las peticiones de listado.
Fuente y aviso legal
- Fuente oficial: dataset Socrata
ybgg-dgi6("Contractació pública a Catalunya: publicacions a la Plataforma de serveis de contractació pública"), catálogo de dades obertes de la Generalitat de Catalunya —https://analisi.transparenciacatalunya.cat/resource/ybgg-dgi6.json. 1.961.041 filas y 67 campos verificados el 23-ago-2026; actualización diaria confirmada por metadato oficial y cabeceraX-SODA2-Truth-Last-Modified. - El JSON de detalle procede de
contractaciopublica.cat/portal-api/, el propio portal PSCP; surobots.txtpermite el rastreo (Allow: /) pero declaraCrawl-delay: 1,Request-rate: 60/1my una ventana de rastreo preferenteVisit-time: 18:00-07:00. El actor siempre respeta ~1 req/s; para volcados masivos conconDetalle: true, programa la ejecución en esa franja nocturna si quieres respetar también la ventana horaria. - Licencia: reutilización libre según la Llei 19/2014, de 29 de desembre, de transparència, accés a la informació pública i bon govern (art. 17.1: "la reutilització de la informació pública és lliure i no està subjecta a restriccions"), con obligación de citar la fuente. Es el marco legal más favorable de todas las fuentes evaluadas en este proyecto.
- Este actor solo lee datos públicos, sin login, sin cookies y sin saltarse ninguna medida técnica. No es un producto oficial ni está afiliado, respaldado ni verificado por la Generalitat de Catalunya.
- Los datos son dinámicos y pueden corregirse tras la extracción: para
decisiones con efectos jurídicos, consulta siempre
enlaceFichaPublica.
🇬🇧 English
What it does
catalonia-tenders scrapes Catalonia's public procurement tenders and
awards from the Generalitat's official Socrata open-data dataset (PSCP —
Plataforma de serveis de contractació pública), with optional enrichment
from the full tender record served by the portal itself.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
keywords | string list | [] | Server-side search over the contract object and title |
tipoContrato | enum | — | Real dataset value (Catalan): Serveis, Obres, Subministraments… |
estado | enum | — | anuncio / adjudicacion / formalizacion (mapped to the real dataset phase) |
importeMinimo / importeMaximo | number | — | Server-side amount filter (EUR) |
fechaDesde | ISO date | — | From this publication date on; recommended for daily incremental runs |
conDetalle | boolean | false | Chains a request to the full tender JSON. ⚠️ roughly doubles HTTP requests |
incluirContactosNominales | boolean | false | See below |
maxItems | integer | 500 | Hard cap; the actor stops cleanly |
Server-side filtering
Every input is translated to SoQL ($where, $select, $order,
$limit/$offset) and sent to the Socrata server — nothing is downloaded
in bulk to be filtered client-side. The run log prints the exact $where
clause sent.
GDPR: named individuals excluded by default
incluirContactosNominales guards two things: (1) always, in the base
listing — some Catalan tender awardees are sole traders (natural
persons), and while their tax ID comes source-masked, their full name
does not (verified: 2 of 25 real awards in a sample were natural persons)
— disabled by default, adjudicatario.nif/.razonSocial are nulled,
keeping only .tipoPersona; (2) only with conDetalle — the full tender
record lists named contact people (name, surname, role, phone, email) for
the contracting body's staff, entirely absent from the output by default.
Only the contracting body's own institutional data is kept in both cases.
Enabling the flag adds named individuals' personal data to the dataset; you
become responsible for its processing under GDPR.
Disclaimer
Data comes from the Generalitat de Catalunya's official Socrata open-data
dataset (ybgg-dgi6) and, when conDetalle is enabled, from the PSCP
portal's own portal-api. This actor is not an official product and is
not affiliated with or endorsed by the Generalitat de Catalunya. Reuse is
free under Llei 19/2014, art. 17.1 (attribution required). Data is
dynamic — for legally binding decisions, always check the official record
linked in enlaceFichaPublica.
Palabras clave / Keywords: licitaciones Cataluña, contratación pública Cataluña, PSCP, contractació pública, Generalitat de Catalunya, tenders Catalonia, public procurement Spain, adjudicaciones públicas, Socrata open data, CPV, NUTS, open data Cataluña.