CosIng API · Public REST endpoints · Integrity-verified SQL patches · Webhooks
API CosIng: la base de datos de ingredientes cosméticos UE, entregada como API en vivo
La base de datos CosIng UE (nombres INCI, números CAS, EINECS, restricciones Anexos II–VI) como API REST: endpoints públicos gratuitos para empezar hoy, y patches SQL incrementales verificados por integridad para producción. Para equipos que necesitan datos CosIng en su producto sin scrappear ec.europa.eu ni mantener su propio diff engine.
API key gratuita
Consultá la base de datos CosIng en una llamada
Los endpoints públicos de lectura usan una API key gratuita que obtenés con tu email. Enviala en el header X-API-Key. Copiá, pegá, y tenés datos CosIng en vivo.
# Search the CosIng database by INCI name, CAS or EC number
curl "https://api.bdapi.app/api/public/cosing/search?q=phenoxyethanol&limit=1" \
-H "X-API-Key: $BDAPI_API_KEY"
{
"rows": [{
"result_type": "ingredient",
"inci_name": "PHENOXYETHANOL",
"cas_no": "122-99-6",
"ec_no": "204-589-7",
"chemical_name": "2-Phenoxyethanol",
"function_names": ["ANTIMICROBIAL", "PRESERVATIVE"],
"slug": "phenoxyethanol",
"has_fiche": true,
"matched_via": "inci",
"fiche_url": "https://bdapi.app/en/cosing-database/ingredient/phenoxyethanol/"
}],
"total": 1
}
# Live substance counts per Annex (II-VI)
curl "https://api.bdapi.app/api/public/cosing/stats" \
-H "X-API-Key: $BDAPI_API_KEY"Respuesta recortada para facilitar la lectura. La búsqueda cubre ingredientes regulados por defecto — agregá regulated_only=false para el inventario INCI completo. La cuota diaria gratuita es de 500 requests por email. Desde el 12 de octubre de 2026, las llamadas sin key devuelven 401 api_key_required. El buscador de bdapi.app sigue siendo gratis y no necesita key.
La key gratuita cubre la identidad del ingrediente. Los datos regulatorios (Anexo, número de referencia, concentraciones máximas, condiciones y advertencias) están en los planes pagos. Ver planes →
Obtené una API key gratuita
Ingresá tu email y te enviamos una key. Se entrega solo por email. La cuota diaria gratuita es de 500 requests por email.
Referencia
Endpoints públicos de lectura, con rate limits documentados
Tres endpoints de solo lectura con la key gratuita: búsqueda de identidad, conteos por Anexo y el feed de vigilancia regulatoria. Los límites son por IP y por minuto — publicados acá porque el software de producción merece conocer su presupuesto.
GET /api/public/cosing/searchBúsqueda de identidad de ingredientes por nombre INCI, número CAS o EC. Cada fila devuelve nombre INCI, CAS, número EC, nombre químico, funciones y fiche_url, el link a la ficha pública en bdapi.app. Por defecto cubre ingredientes regulados (Anexos II–VI); pasá regulated_only=false para buscar en el inventario INCI completo.
60 req/minGET /api/public/cosing/statsCounts en vivo por Anexo (II–VI): sustancias, números CAS y totales de inventario — los mismos números que se muestran en este sitio.
30 req/minGET /api/public/watch/latestÚltimos eventos regulatorios de DG SANTE, SCCS, EUR-Lex y Safety Gate, con URLs a la fuente oficial. No requiere key.
60 req/minPlanes pagos: el resto de las rutas /api/public/cosing/* devuelve datos regulatorios y con la key gratuita responde 403 paid_plan_required: ingredient/:slug, ingredients/slugs, annex/:code/ingredients, cmr, allergens, microplastics, recently-prohibited, substance/:slug, substances/slugs, functions/slugs, function/:slug/ingredients, ingredient/:slug/publications, publication/ingredients.
Todas las respuestas llevan headers Cache-Control aptos para CDN. Códigos de error: 401 api_key_required o invalid_api_key (key ausente o inválida), 403 paid_plan_required (ruta de un plan pago; no descuenta de la cuota), 429 daily_quota_exceeded (cuota diaria agotada hasta el próximo día UTC) y 429 por rate limit, que incluye retryAfter en segundos. Especificación OpenAPI 3.1 completa a pedido →
Casos de uso
Qué construyen los equipos con esto
Software de formulación cosmética y PLM
Validá listas INCI contra las restricciones de los Anexos II–VI dentro de tu propio producto. Prototipá la búsqueda de ingredientes con los endpoints gratuitos y después pasá a un plan pago para los datos regulatorios y el sync licenciado: una réplica PostgreSQL offline sin dependencia por request.
Certificadoras y consultores regulatorios
Consultá clasificaciones CMR, altas recientes en el Anexo II y condiciones de restricción de forma programática antes de firmar un expediente — con cada respuesta trazable a la fuente oficial de la EC.
Contenido, investigación y tooling interno
Alimentá glosarios de ingredientes, dashboards y sitios estáticos con counts de Anexos en vivo y búsqueda de identidad de ingredientes. Los headers de caché aptos para CDN lo hacen barato de consumir en build.
Producción
La API de sincronización licenciada: cuatro llamadas
Cuando el prototipo funciona, producción no debería depender de llamadas por request. La API licenciada replica el dataset CosIng completo en tu propio PostgreSQL con patches SQL incrementales verificados por integridad.
# 1. Check whether a newer CosIng version exists
curl -X POST https://api.bdapi.app/api/versions/check \
-H "Authorization: Bearer $LICENSE_KEY" \
-H "Content-Type: application/json" \
-d '{"current_version": "1.0.0"}'
# 2. Download the incremental SQL patch
curl https://api.bdapi.app/api/versions/1.1.0/patch \
-H "Authorization: Bearer $LICENSE_KEY" \
-o patch.sql
# 3. Verify SHA-256 integrity before applying
curl -sI https://api.bdapi.app/api/versions/1.1.0/patch \
-H "Authorization: Bearer $LICENSE_KEY" \
| grep -i x-hash-sha256
# 4. Apply in a single PostgreSQL transaction, then confirm
psql -1 -f patch.sql && curl -X POST .../api/versions/confirm \
-H "Authorization: Bearer $LICENSE_KEY" \
-d '{"version":"1.1.0","success":true,"error":null}'Si el hash no coincide, el apply no ocurre. Rollback automático si la transacción falla. Sin sorpresas.
Evaluación
API CosIng frente a las alternativas
Tres formas de acceder a los datos CosIng. Solo una está diseñada para producción.
| BD-API CosIng API | Descarga del .xls oficial | APIs de consulta de ingredientes | |
|---|---|---|---|
| Actualización | Sincronización automática en cada cambio de XLS de la EC (CRON, semanal por defecto, hasta diario) | Re-descarga manual necesaria — notás cambios solo cuando revisás | Variable; frecuentemente con días o semanas de retraso sobre la fuente oficial |
| Integridad | Patches verificados con SHA-256 + notificaciones webhook con firma HMAC-SHA256 | Ninguna — sin hash, sin firma, sin forma de detectar manipulación | Ninguna a nivel de datos |
| Formato | PostgreSQL estructurado con FK entre Anexos, sustancias y números CAS | Celdas de hoja de cálculo crudas — columnas que cambian entre versiones | JSON por request — una consulta a la vez, sin estructura relacional |
| Entrega | Patches incrementales verificados con SHA-256 aplicados dentro de una sola transacción SQL | Descarga del archivo completo cada vez, aunque haya cambiado una sola fila | Un ingrediente por llamada a la API — sin batch, sin sincronización |
| Trazabilidad | Fuente, marca temporal y prueba verificable por cambio — lo que exigen los auditores | Ninguna — no podés probar cuándo recibiste los datos ni qué cambió | Ninguna a nivel de datos |
| Diseñado para | Vendors de software cosmético que necesitan CosIng en vivo en su producto | Consultas humanas puntuales por equipos de asuntos regulatorios | Apps B2C y puntuaciones de seguridad de ingredientes para usuarios finales |
BD-API CosIng API
Sincronización automática en cada cambio de XLS de la EC (CRON, semanal por defecto, hasta diario)
Descarga del .xls oficial
Re-descarga manual necesaria — notás cambios solo cuando revisás
APIs de consulta
Variable; frecuentemente con días o semanas de retraso sobre la fuente oficial
BD-API CosIng API
Patches verificados con SHA-256 + notificaciones webhook con firma HMAC-SHA256
Descarga del .xls oficial
Ninguna — sin hash, sin firma, sin forma de detectar manipulación
APIs de consulta
Ninguna a nivel de datos
BD-API CosIng API
PostgreSQL estructurado con FK entre Anexos, sustancias y números CAS
Descarga del .xls oficial
Celdas de hoja de cálculo crudas — columnas que cambian entre versiones
APIs de consulta
JSON por request — una consulta a la vez, sin estructura relacional
BD-API CosIng API
Patches incrementales verificados con SHA-256 aplicados dentro de una sola transacción SQL
Descarga del .xls oficial
Descarga del archivo completo cada vez, aunque haya cambiado una sola fila
APIs de consulta
Un ingrediente por llamada a la API — sin batch, sin sincronización
BD-API CosIng API
Fuente, marca temporal y prueba verificable por cambio — lo que exigen los auditores
Descarga del .xls oficial
Ninguna — no podés probar cuándo recibiste los datos ni qué cambió
APIs de consulta
Ninguna a nivel de datos
BD-API CosIng API
Vendors de software cosmético que necesitan CosIng en vivo en su producto
Descarga del .xls oficial
Consultas humanas puntuales por equipos de asuntos regulatorios
APIs de consulta
Apps B2C y puntuaciones de seguridad de ingredientes para usuarios finales
API CosIng
Preguntas sobre los datos y la entrega
¿Hay una API CosIng pública gratuita que pueda probar?+
Sí. La búsqueda de identidad de ingredientes (/api/public/cosing/search: nombre INCI, CAS, número EC, nombre químico, funciones y el link a la ficha pública) y los conteos por Anexo (/api/public/cosing/stats) son gratuitos con una API key que obtenés con tu email. Enviala en el header X-API-Key. Los datos regulatorios (entradas de Anexo, concentraciones máximas, condiciones, advertencias, los listados por Anexo y CMR, y el detalle completo del ingrediente) están en los planes pagos; con la key gratuita esas rutas responden 403 paid_plan_required. La cuota diaria gratuita es de 500 requests por email, además de los límites por IP (de 30 a 60 requests por minuto según la ruta). Desde el 12 de octubre de 2026, las llamadas sin key devuelven 401 api_key_required. El buscador de bdapi.app sigue siendo gratis y no necesita key, y tampoco la necesita el feed de vigilancia regulatoria (/api/public/watch). Las respuestas llevan headers de caché aptos para CDN. La API licenciada suma lo que producción necesita: patches SQL incrementales verificados con SHA-256 hacia tu propio PostgreSQL, webhooks y alertas por email.
¿Por qué la búsqueda pública no devuelve resultados para algunos ingredientes conocidos?+
Por defecto /cosing/search solo devuelve ingredientes cuya entrada en los Anexos II–VI está enlazada en la capa relacional — que es lo que necesita la mayoría de las consultas de cumplimiento. Algunas entradas del inventario, retinol entre ellas, están registradas bajo un registro de sustancia separado, por lo que no aparecen en el resultado por defecto. Pasá regulated_only=false para buscar en el inventario INCI completo de aproximadamente 33.000 entradas.
¿Qué devuelve exactamente la API CosIng?+
Cada sincronización devuelve un patch SQL incremental con verificación de integridad SHA-256: solo las filas que cambiaron desde tu versión actual. El patch contiene sentencias UPSERT para sustancias, números CAS, entradas EINECS y restricciones de Anexos (Anexos II–VI), más un hash SHA-256 en los headers de la respuesta. Lo aplicás en una sola transacción PostgreSQL y confirmás con una llamada de seguimiento. Nada se sobreescribe sin control — cada columna que cambió tiene traza de antes y después.
¿Cómo se mantiene sincronizado con el CosIng oficial?+
BD-API hace polling del XLS oficial de la Comisión Europea con un CRON configurable — semanal por defecto, configurable hasta diario. Cuando se publica un XLS nuevo, el diff engine corre en minutos, produce un patch SQL versionado y lo encola para entrega. Tu instalación hace polling a /api/versions/check con la frecuencia que querés — solo descargás cuando existe una versión más nueva.
¿Es una consulta por request o un dataset completo?+
Ninguna de las dos. Es incremental: en la primera sincronización recibís una base completa; en cada sincronización siguiente, solo lo que cambió. Tenés una réplica PostgreSQL en vivo del dataset CosIng completo — ~2.385 entradas en los Anexos II–VI — con claves foráneas entre Anexos, sustancias y números CAS. Sin cargo por consulta, sin round-trips en tiempo de request, sin sorpresas de rate-limit en producción. Explorar la base de datos CosIng →
¿Cómo verifico que la data no haya sido manipulada?+
Cada patch viene con un hash SHA-256 en el header x-hash-sha256 de la respuesta. Tu cliente descarga el patch, computa el hash localmente y compara antes de llamar a psql. Si los hashes no coinciden, el apply nunca ocurre. Las notificaciones webhook del pipeline de vigilancia llevan firma HMAC-SHA256 que verificás con tu secreto compartido antes de procesar.
¿Puedo alojar la data yo mismo?+
Sí — ese es el punto. Los patches son SQL puro en tu propio PostgreSQL. BD-API no tiene path de lectura a tu base, no hay SDK que deba quedar corriendo, no hay formato binario propietario. Si algún día dejás de usar BD-API, la data que ya aplicaste queda en tu base, intacta y queryable para siempre. Siete criterios para evaluar una fuente de datos CosIng →