Catalonia Tenders Scraper — Licitacions Públiques PSCP
Pricing
from $2.00 / 1,000 results
Catalonia Tenders Scraper — Licitacions Públiques PSCP
Scrape Catalonia public procurement tenders and awards from the Generalitat's official PSCP open-data dataset, with optional full tender-record enrichment (contracting body, lots, awardees). Licitacions i adjudicacions públiques de Catalunya, dataset oficial PSCP.
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
19 days ago
Last modified
Categories
Share
Scrape Catalonia public tenders and awards — licitaciones públicas de Cataluña, licitacions públiques — from the official PSCP (Plataforma de serveis de contractació pública) open-data dataset of the Generalitat de Catalunya, with optional enrichment from the full tender record.
Extrae licitaciones y adjudicaciones públicas de Cataluña del dataset oficial de datos abiertos (Socrata) de la PSCP (Plataforma de serveis de contractació pública) de la Generalitat de Catalunya, con enriquecimiento opcional del expediente completo: órgano de contratación, lotes y adjudicatarios por lote.
Catalonia Tenders Scraper: what it does / qué hace este actor
Catalonia Tenders Scraper turns the PSCP master dataset into one clean item per publication —
tender notice, award, contract formalisation — with amounts as numbers, CPV and NUTS codes, deadlines
and a link back to the official record. It is not a raw dump of the source table: every field is
normalised to the same schema used by the sibling Actors euskadi-tenders and aragon-tenders, so
the three Spanish regional procurement sources can feed a single table.
Este actor convierte el dataset maestro de la PSCP en un ítem por publicación (anuncio,
adjudicación, formalización…), con los importes como número, los códigos CPV y NUTS, las fechas
límite y el enlace a la ficha oficial. No es un volcado bruto: los campos se normalizan al mismo
esquema que usan euskadi-tenders y aragon-tenders, así que las tres fuentes autonómicas de
contratación pública se pueden tratar como una sola tabla.
Catalonia tender data extracted / Qué datos extrae: licitaciones y adjudicaciones
Un ítem por publicación del dataset maestro de la PSCP / one item per PSCP publication:
| Campo / Field | Qué es / What it is |
|---|---|
idExpediente, idIntern | Número de expediente del órgano e 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 | Serveis/Obres/Subministraments…, 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 el objeto detalle (órgano de contratación, lotes y
adjudicatarios por lote — ver más abajo). · With conDetalle: true an extra detalle object is
added (contracting body, lots and per-lot awardees — see below).
PSCP tender search input / Parámetros de entrada y filtrado en servidor
| Parámetro / Parameter | Tipo / Type | Por defecto / Default | Descripción / Notes |
|---|---|---|---|
keywords | lista de textos / string list | [] | Busca en el objeto del contrato y en el título, en servidor. Vacío = sin filtro |
tipoContrato | enum | — | Valor real del dataset, en catalán: Serveis, Obres, Subministraments… |
estado | anuncio|adjudicacion|formalizacion | — | Fase de publicación. Vacío = todas |
importeMinimo / importeMaximo | número / number | — | Filtro en servidor por presupuesto/importe de adjudicación (EUR) |
fechaDesde | fecha AAAA-MM-DD / ISO date | — | Desde esta fecha de publicación de la fase elegida. Recomendado para ejecuciones diarias (el dataset se actualiza a diario) |
conDetalle | booleano / boolean | false | Encadena una petición al JSON del expediente completo. ⚠️ Multiplica las peticiones HTTP |
incluirContactosNominales | booleano / boolean | false | Ver protección de datos, más abajo |
maxItems | entero / integer | 500 | Tope de ítems; el actor para limpiamente al alcanzarlo |
Ejemplo de input / example input:
{"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. · Every input is translated to SoQL 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.
Catalonia tenders output example / Ejemplo de output real
Ítem real de una ejecución del actor con { "keywords": ["neteja"], "maxItems": 5 } (23-ago-2026).
Es el lote 1 de un acuerdo marco de la empresa pública comarcal SECOMSA. Se omite el campo
enlacesJson (objeto con tokens cifrados muy largos). · Real item from a run with
{ "keywords": ["neteja"], "maxItems": 5 }; the enlacesJson field is omitted here (long signed
tokens).
{"idExpediente": "CO 11/2026","idIntern": "fe94b195-4097-4475-b3a7-c229b56e525a_0","titulo": "Acord marc privat, amb diverses empreses, per al subministrament, mitjançant arrendament, en la modalitat de rènting, sense opció de compra, de camions per a la recollida de residus, maquinària de neteja i vehicles auxiliars de l'empresa pública Serveis Comarcals Mediambientals, SA","objeto": "Acord marc privat, amb diverses empreses, per al subministrament, mitjançant arrendament, en la modalitat de rènting, sense opció de compra, de camions per a la recollida de residus, maquinària de neteja i vehicles auxiliars de l'empresa pública Serveis Comarcals Mediambientals, SA","administracion": "Entitats de l'administració local","organoContratacion": "Serveis Comarcals Mediambientals, SA (SECOMSA)","organoSuperior": null,"unidadTramitadora": null,"codigoDir3": null,"tipoContrato": "Subministraments","procedimiento": "Obert","tramitacion": "Ordinària","estado": "Anunci de licitació","resultado": null,"esAgregada": false,"presupuestoLicitacionSinIva": 86400,"presupuestoLicitacionConIva": 104544,"valorEstimadoContrato": 172800,"importeAdjudicacionSinIva": null,"importeAdjudicacionConIva": null,"moneda": "EUR","ofertasRecibidas": null,"adjudicatario": null,"codigosCpv": ["34144431-8", "34144511-3"],"lugarEjecucion": "Botarell","codigoNuts": "ES514","duracionContrato": "2 anys","numeroLote": "1","descripcionLote": "Maquina escombradora d'aspiració o d'arrossegament","fechaPublicacionAnuncio": "2026-08-21T13:02:00Z","fechaLimiteOfertas": "2026-09-21T14:30:00Z","fechaPublicacionAdjudicacion": null,"fechaPublicacionFormalizacion": null,"fechaAdjudicacionContrato": null,"fechaFormalizacionContrato": null,"enlaceFichaPublica": "https://contractaciopublica.cat/ca/detall-publicacio/fe94b195-4097-4475-b3a7-c229b56e525a/300846891","fuente": "PSCP - Generalitat de Catalunya (dataset Socrata ybgg-dgi6)","extraidoEn": "2026-08-23T17:21:44.475Z"}
Full tender record enrichment / 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.
⚠️ One extra HTTP request per saved tender: it roughly doubles the total request count and, since the Actor keeps to ~1 req/s, the run time grows in the same proportion. Enable it only when you need that level of detail.
Catalonia public procurement use cases / Casos de uso
Empresas licitadoras — alertas diarias de licitacions públiques
Ejecuta el actor en un Schedule diario con fechaDesde y tus keywords de sector (neteja,
manteniment, obra civil…) y estado: "anuncio": obtienes solo las licitaciones nuevas de
Cataluña con su fechaLimiteOfertas, antes de que se agote el plazo. · Daily tender alerts for
bidders: only new Catalan tender notices with their submission deadline.
Consultoras y analistas — inteligencia de mercado sobre adjudicaciones
Con estado: "adjudicacion" y conDetalle: true obtienes quién gana qué, por lote, con importe y
CPV: cuota de mercado por adjudicatario, precios de referencia por código CPV y evolución del gasto
por órgano de contratación. · Market intelligence: who wins what, per lot, with amount and CPV.
Despachos y compliance — seguimiento de un órgano o de un CPV
Filtra por keywords con el nombre del órgano de contratación o por rango de importe
(importeMinimo/importeMaximo) para seguir un ayuntamiento, un consorcio o un umbral de contrato
concreto a lo largo del tiempo. · Track one contracting body or a contract-value threshold over time.
Periodismo de datos y transparencia — contractació pública Catalunya
El dataset completo son casi dos millones de filas de gasto público catalán, con NUTS y CPV: base suficiente para investigar concentración de adjudicatarios o contratos recurrentes. · Data journalism on Catalan public spending, with NUTS and CPV codes.
Catalonia tenders data source, coverage and limits / Fuente oficial, cobertura y límites
- 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 por la 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. - 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. ConconDetalle, una petición de detalle adicional por ítem guardado → ~1 s por ítem, más las peticiones de listado. - Qué NO trae: los datos son dinámicos y pueden corregirse tras la extracción; para decisiones
con efectos jurídicos, consulta siempre
enlaceFichaPublica. · Data is dynamic and may be corrected after extraction — for legally binding decisions always check the official record linked inenlaceFichaPublica.
Related Spanish public-data Actors / Actores relacionados
| Actor | Qué extrae / What it scrapes |
|---|---|
| euskadi-tenders | Anuncios de contratación pública del País Vasco (Open Data Euskadi) |
| aragon-tenders | Registro de contratos públicos de Aragón, mayores y menores (CKAN) |
| spain-boe-monitor | Boletín Oficial del Estado (BOE) por palabra clave, sección y NIF |
| spain-bocm-gazette | Boletín Oficial de la Comunidad de Madrid (BOCM), modo delta |
| spain-boja-gazette | Boletín Oficial de la Junta de Andalucía (BOJA), modo delta |
| spain-borme-companies | Actos societarios del BORME: constituciones, cargos, concursos |
| spain-grants-bdns | Subvenciones y ayudas públicas de España (BDNS/SNPSAP) |
| spain-de-minimis-aid | Ayudas de minimis y ayudas de Estado por NIF de beneficiario |
| spain-grants-registries | Grandes beneficiarios, sanciones por fraude y ayudas a partidos |
| spain-cadastre-bulk | Enriquecimiento catastral masivo (Catastro OVC) |
Is it legal to scrape Catalonia public tenders? / Protección de datos y aviso legal
- 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. · Reuse is free under Llei 19/2014, art. 17.1 (attribution required).
- 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. · This Actor is not an official product and is not affiliated with or endorsed by the Generalitat de Catalunya.
Datos personales: nombres de personas físicas fuera por defecto / GDPR
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.
GDPR, in English: 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.
FAQ — Catalonia public tenders / Preguntas frecuentes
¿Puedo recibir alertas diarias de licitaciones de Cataluña? / Can I get daily tender alerts?
Sí. El dataset se actualiza a diario: programa el actor en un Schedule de Apify con fechaDesde y
tus keywords, y cada ejecución te traerá las publicaciones nuevas del periodo.
¿Trae el importe de adjudicación y el adjudicatario? / Does it include award amount and awardee?
Sí, cuando la publicación corresponde a esa fase: importeAdjudicacionSinIva/ConIva y
adjudicatario.razonSocial/.nif para adjudicatarios que son personas jurídicas. Los autónomos se
anonimizan por defecto (ver protección de datos).
¿En qué idioma vienen los datos? / What language is the data in?
En catalán, tal y como los publica la PSCP: tipoContrato toma valores como Serveis, Obres o
Subministraments, y los títulos y objetos de contrato están en catalán. Los nombres de campo del
dataset de salida están en castellano y son comunes a los tres actores de licitaciones.
¿Necesito una API key o credenciales? / Do I need an API key?
No. Todo sale de datos abiertos públicos: el dataset Socrata y, con conDetalle, un JSON del portal
PSCP cuyo token va firmado dentro de la propia URL publicada en el open data.
¿Puedo filtrar por CPV o por territorio? / Can I filter by CPV or location?
Los campos codigosCpv, lugarEjecucion y codigoNuts vienen en cada ítem, así que puedes filtrar
por ellos en destino. El filtro en servidor cubre keywords, tipoContrato, estado, importe y
fechaDesde.
¿Cuántos ítems puedo extraer de una vez? / How many items can I get per run?
maxItems vale 500 por defecto y el actor para limpiamente al alcanzarlo. Para volcados grandes,
sube el tope y ten en cuenta el límite de ~1 petición por segundo (y de una petición extra por ítem
si activas conDetalle).
¿Sirve para contratos menores? / Does it cover minor contracts?
Este actor cubre lo que publica la PSCP. Para el registro de contratos menores de otra comunidad, mira aragon-tenders, que sí distingue entre contratos mayores y menores.
Support & feedback / Soporte
¿Falta un campo, necesitas otro filtro en servidor o quieres una versión a medida para tu flujo? Abre una incidencia desde la pestaña Issues de la ficha del actor en Apify: se leen todas. · Missing a field, need another server-side filter or a custom version for your pipeline? Open an issue from the Issues tab of this Actor's page.
Palabras clave / Keywords: licitaciones públicas Cataluña, Catalonia public tenders, PSCP licitacions, Catalonia procurement API, adjudicaciones públicas Generalitat, Spain tenders API, contractació pública Catalunya, public contract awards Catalonia, concursos públicos Cataluña, tender alerts Spain, CPV Cataluña, open data Generalitat.