Catalonia Public Tenders Scraper (PSCP) avatar

Catalonia Public Tenders Scraper (PSCP)

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Catalonia Public Tenders Scraper (PSCP)

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

Santi Belloso Lopez

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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:

CampoQué es
idExpediente, idInternNúmero de expediente del órgano y ID interno de la PSCP
titulo, objetoTítulo de la publicación y objeto del contrato
administracion, organoContratacion, organoSuperiorQuién contrata, por niveles
tipoContrato, procedimiento, tramitacionServicios/Obras/Suministros…, procedimiento de adjudicación
estadoFase real del dataset (Anunci de licitació, Adjudicació, Formalització, Execució…)
presupuestoLicitacionSinIva/ConIva, valorEstimadoContratoImportes como número
importeAdjudicacionSinIva/ConIvaImporte de adjudicación, como número
adjudicatario.nif, .razonSocialEmpresa adjudicataria — dato mercantil, se publica
codigosCpv, lugarEjecucion, codigoNutsClasificación económica y territorio
fechaPublicacionAnuncio, fechaLimiteOfertas, fechaPublicacionAdjudicacion, fechaPublicacionFormalizacionFechas clave
enlaceFichaPublicaFicha pública en contractaciopublica.cat
enlacesJsonTodas 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ámetroTipoPor defectoDescripción
keywordslista de textos[]Busca en el objeto del contrato y en el título, en servidor. Vacío = sin filtro
tipoContratoenumValor real del dataset (Serveis, Obres, Subministraments…)
estadoanuncio|adjudicacion|formalizacionFase de publicación. Vacío = todas
importeMinimo / importeMaximonúmeroFiltro en servidor por presupuesto/importe de adjudicación (EUR)
fechaDesdefecha AAAA-MM-DDDesde esta fecha de publicación de la fase elegida. Recomendado para ejecuciones diarias (el dataset se actualiza a diario)
conDetallebooleanofalseVer más abajo. ⚠️ Multiplica las peticiones HTTP
incluirContactosNominalesbooleanofalseVer más abajo
maxItemsentero500Tope 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):

  1. 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. Con incluirContactosNominales: false — el valor por defecto — adjudicatario.nif y .razonSocial se anulan y solo queda adjudicatario.tipoPersona (fisica/juridica/desconocido, con la misma clasificación de NIF que usa spain-grants-bdns, fail-closed). El resto del contrato (importe, órgano, fechas…) se conserva: es gasto público, no dato personal.
  2. Solo si conDetalle: true: el JSON de expediente completo incluye, para cada órgano de contratación, una lista personesContacte con 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 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 cabecera X-SODA2-Truth-Last-Modified.
  • El JSON de detalle procede de contractaciopublica.cat/portal-api/, el propio portal PSCP; su robots.txt permite el rastreo (Allow: /) pero declara Crawl-delay: 1, Request-rate: 60/1m y una ventana de rastreo preferente Visit-time: 18:00-07:00. El actor siempre respeta ~1 req/s; para volcados masivos con conDetalle: 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

FieldTypeDefaultNotes
keywordsstring list[]Server-side search over the contract object and title
tipoContratoenumReal dataset value (Catalan): Serveis, Obres, Subministraments
estadoenumanuncio / adjudicacion / formalizacion (mapped to the real dataset phase)
importeMinimo / importeMaximonumberServer-side amount filter (EUR)
fechaDesdeISO dateFrom this publication date on; recommended for daily incremental runs
conDetallebooleanfalseChains a request to the full tender JSON. ⚠️ roughly doubles HTTP requests
incluirContactosNominalesbooleanfalseSee below
maxItemsinteger500Hard 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.