Tjue
Pricing
from $1.00 / 1,000 results
Tjue
Automatiza la búsqueda de jurisprudencia del Tribunal de Justicia de la Unión Europea (juris.curia.europa.eu). Permite buscar documentos (sentencias, autos, conclusiones, peticiones de decisión prejudicial…) por texto libre y filtrarlos por órgano jurisdiccional, idioma y rango de fechas.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Miguel González
Maintained by CommunityActor stats
1
Bookmarked
23
Total users
5
Monthly active users
a day ago
Last modified
Categories
Share
🏛️ TJUE — Buscador de jurisprudencia (CURIA)
Actor de Apify que automatiza la búsqueda de jurisprudencia del Tribunal de Justicia de la Unión Europea (https://juris.curia.europa.eu). Permite buscar documentos (sentencias, autos, conclusiones, dictámenes…) por texto libre y filtrarlos por tipo de documento, órgano jurisdiccional, idioma y rango de fechas.
Para cada documento encontrado, el actor extrae sus metadatos (número de asunto, órgano, tipo de documento, ECLI, fecha, partes y materia) y el enlace al documento. Además puede extraer el texto íntegro, bien de todos los resultados (extractText), bien de documentos concretos en una segunda ejecución (documentUrls).
✨ Características
- 🔎 Búsqueda por múltiples términos en una sola ejecución (hasta 50).
- ⚖️ Filtros aplicados en el servidor de CURIA: tipo de documento, órgano jurisdiccional, idioma y rango de fechas.
- 📄 Metadatos completos (asunto, órgano, tipo de documento, ECLI, fecha, partes, materia).
- 🔗 Enlace estable al documento, reutilizable como entrada de la segunda fase.
- 📝 Extracción del texto íntegro, de todos los resultados o de documentos concretos.
- 🧩 Modo "párrafos" para devolver solo los pasajes relevantes (útil con LLMs).
- 🏷️ Referencias por número de asunto:
C-261/25se resuelve a su sentencia.
📥 Entrada (Input)
Debes indicar al menos uno de estos campos: searchTerms (para buscar), documentUrls (para extraer texto de documentos concretos) o un filtro (courts, dateFrom/dateTo).
| Campo | Tipo | Descripción |
|---|---|---|
searchTerms | array<string> | Términos a buscar (máx. 50). Cada término se busca por separado. Si se deja vacío con filtros, devuelve todos los documentos que los cumplan. |
documentUrls | array<string> | Documentos de los que extraer el texto íntegro (máx. 50): documentUrl de un resultado previo, un docid suelto o un número de asunto (C-261/25). Si se rellena, el actor omite la búsqueda en esa ejecución. |
extractText | boolean | Extrae el texto de cada resultado de la búsqueda. Por defecto false: ralentiza mucho el run. |
documentType | string | arret (Sentencia, por defecto), ord (Auto), concl (Conclusiones), avis (Dictamen), ALL. |
courts | array<string> | Órganos: C (Tribunal de Justicia), T (Tribunal General), F (Función Pública). Por defecto, los tres. |
language | string | Idioma de los documentos: es, en, fr, de, it, pt. Por defecto, es. |
dateType | string | Fecha sobre la que se filtra: pro (resolución), con (conclusiones), aud (vista), dep (presentación). Por defecto, pro. |
dateFrom | string | Fecha mínima (YYYY-MM-DD o DD/MM/YYYY). |
dateTo | string | Fecha máxima (YYYY-MM-DD o DD/MM/YYYY). |
paragraphs | integer | Si > 0, devuelve solo los N pasajes más relevantes (modo párrafos). Máx. 20. |
paragraphTerms | string | Términos con los que localizar los pasajes (por defecto, el término de búsqueda). |
anonymize | boolean | Anonimiza nombres de persona en los textos extraídos. Por defecto true. Ver más abajo. |
maxResults | integer | Máximo de documentos por término. Por defecto 20, máx. 500. |
Un input inválido (fecha inexistente, rango invertido, valor fuera de rango, idioma desconocido) detiene el run con un mensaje que dice qué campo está mal y qué valores se admiten, en vez de devolver resultados mal filtrados.
Ejemplo de input
{"searchTerms": ["gastos hipotecarios"],"documentType": "arret","courts": ["C"],"language": "es","dateFrom": "2020-01-01","maxResults": 20}
📤 Salida (Output)
Cada documento se guarda en el dataset con esta forma:
{"searchTerm": "cláusulas abusivas","caseNumber": "C-261/25","court": "Tribunal de Justicia","documentType": "Sentencia","ecli": "ECLI:EU:C:2026:537","date": "02/07/2026","dateISO": "2026-07-02","parties": "Ścierbek","subjectMatter": ["Protección de los consumidores"],"docid": "313156","documentUrl": "https://juris.curia.europa.eu/juris/document/document.jsf?docid=313156&doclang=es&mode=req&pageIndex=0&dir=&occ=first&part=1&text=","pdfUrl": null}
Sobre
pdfUrl: CURIA no publica PDF de las sentencias, que sirve en HTML. El campo trae enlace en los documentos que sí lo tienen (peticiones de decisión prejudicial, anuncios del Diario Oficial) ynullen el resto.
Sobre el filtro de fechas: CURIA lo aplica a nivel de asunto, de modo que un asunto en rango puede traer documentos fechados fuera de él. El actor los descarta en cliente, así que todos los resultados devueltos caen dentro del rango pedido.
📝 Extracción del texto íntegro
El texto no se extrae por defecto, para que la búsqueda sea rápida. Hay dos formas de obtenerlo:
extractText: true— extrae el texto de todos los resultados de la búsqueda. Abre los documentos uno a uno, así que conviene acotarmaxResults.- Segunda ejecución selectiva — copia en
documentUrlslos documentos que te interesen. Admite eldocumentUrlde un resultado previo, undocido un número de asunto (C-261/25).
No todos los documentos de CURIA tienen texto en HTML: las peticiones de decisión prejudicial y los anuncios del Diario Oficial solo existen en PDF. Esos registros salen con text: null y un campo error que lo explica, en vez de un texto vacío o inventado.
Modo "párrafos"
Para reducir el volumen de texto (útil con LLMs), usa paragraphs (número de pasajes) y, opcionalmente, paragraphTerms. En vez del texto íntegro se devuelven solo los pasajes relevantes en el campo paragraphs. La selección prioriza el razonamiento jurídico de la resolución (los epígrafes «Sobre el fondo», «Sobre la admisibilidad»…) frente al encabezado, la relación de hechos y el bloque de costas.
🔒 Anonimización de datos
Con anonymize: true (por defecto), los nombres de persona precedidos de tratamiento (Sr., Sra., D., D.ª, M., Mme, Herr, Frau…) se sustituyen por sus iniciales en los textos extraídos: «D.ª Justa López» → «D.ª J.L.». Se reconocen los alfabetos de todas las lenguas oficiales de la UE.
Alcance y límites — conviene conocerlos antes de apoyarse en esta función:
- El propio Tribunal de Justicia ya anonimiza a las personas físicas en origen desde 2018: en una sentencia actual las partes aparecen como iniciales («Bank BPH S.A. contra AS, NS»). Esta función es una red de seguridad para documentos antiguos, no la primera línea de protección.
- Solo se detectan nombres precedidos de tratamiento. Un nombre suelto en mitad de una frase no se sustituye. No se intenta la detección sin tratamiento a propósito: sobre estos textos produciría falsos positivos masivos («Banco Santander», «Sala Novena», «Reino de España») que destruirían el documento.
- No se anonimizan los cargos públicos ni la representación profesional: miembros del Tribunal, abogados generales, secretarios, letrados y agentes de los Estados conservan su nombre, porque forma parte de la cita jurídica.
En consecuencia, la anonimización reduce la presencia de datos personales pero no la garantiza. Si tu caso de uso exige una garantía, revisa la salida.
🧪 Pruebas
npm test # 154 pruebas unitarias contra fixtures HTML reales de CURIA (sin red)npm run test:live # 21 pruebas contra juris.curia.europa.eu (~55 s)npm run test:all
Las pruebas en vivo son la alarma temprana del actor: verifican el contrato con CURIA (parámetros de filtrado, estructura de la lista de resultados, extracción de texto) y saltan si el sitio cambia, antes de que el actor empiece a devolver datasets vacíos en producción.