Catalonia Tenders Scraper — Licitacions Públiques PSCP avatar

Catalonia Tenders Scraper — Licitacions Públiques PSCP

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Catalonia Tenders Scraper — Licitacions Públiques PSCP

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

Santi Belloso Lopez

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 days ago

Last modified

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 / FieldQué es / What it is
idExpediente, idInternNúmero de expediente del órgano e 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, tramitacionServeis/Obres/Subministraments…, 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 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 / ParameterTipo / TypePor defecto / DefaultDescripción / Notes
keywordslista de textos / string list[]Busca en el objeto del contrato y en el título, en servidor. Vacío = sin filtro
tipoContratoenumValor real del dataset, en catalán: Serveis, Obres, Subministraments
estadoanuncio|adjudicacion|formalizacionFase de publicación. Vacío = todas
importeMinimo / importeMaximonúmero / numberFiltro en servidor por presupuesto/importe de adjudicación (EUR)
fechaDesdefecha AAAA-MM-DD / ISO dateDesde esta fecha de publicación de la fase elegida. Recomendado para ejecuciones diarias (el dataset se actualiza a diario)
conDetallebooleano / booleanfalseEncadena una petición al JSON del expediente completo. ⚠️ Multiplica las peticiones HTTP
incluirContactosNominalesbooleano / booleanfalseVer protección de datos, más abajo
maxItemsentero / integer500Tope 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 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.
  • 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.
  • 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 in enlaceFichaPublica.
ActorQué extrae / What it scrapes
euskadi-tendersAnuncios de contratación pública del País Vasco (Open Data Euskadi)
aragon-tendersRegistro de contratos públicos de Aragón, mayores y menores (CKAN)
spain-boe-monitorBoletín Oficial del Estado (BOE) por palabra clave, sección y NIF
spain-bocm-gazetteBoletín Oficial de la Comunidad de Madrid (BOCM), modo delta
spain-boja-gazetteBoletín Oficial de la Junta de Andalucía (BOJA), modo delta
spain-borme-companiesActos societarios del BORME: constituciones, cargos, concursos
spain-grants-bdnsSubvenciones y ayudas públicas de España (BDNS/SNPSAP)
spain-de-minimis-aidAyudas de minimis y ayudas de Estado por NIF de beneficiario
spain-grants-registriesGrandes beneficiarios, sanciones por fraude y ayudas a partidos
spain-cadastre-bulkEnriquecimiento catastral masivo (Catastro OVC)
  • 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):

  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.

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.