Mercado Público Chile – Licitaciones y Órdenes de Compra
Pricing
from $2.00 / 1,000 resultado entregado / delivered results
Mercado Público Chile – Licitaciones y Órdenes de Compra
Normalized Chilean public procurement data for AI agents and developers: tenders (licitaciones) and purchase orders from the official Mercado Público API (Compra Ágil in beta), using your own free ChileCompra ticket. Not affiliated with ChileCompra.
Pricing
from $2.00 / 1,000 resultado entregado / delivered results
Rating
0.0
(0)
Developer
Francisco Rubio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Features
Share
ES · Datos normalizados de compras públicas de Chile para agentes de IA y desarrolladores, obtenidos de la API oficial de Mercado Público usando tu propio ticket. EN · Normalized Chilean public procurement data for AI agents and developers, from the official Mercado Público API, using your own ticket.
⚠️ Se requiere ticket propio / Your own ticket is required. El ticket es gratuito, personal (uno por persona) y se solicita con Clave Única en https://www.chilecompra.cl/api/. Este Actor no incluye, comparte ni revende tickets: cada ejecución usa el ticket que tú entregas, y consume tu cuota (10.000 solicitudes/día por ticket).
⚠️ No afiliado / Not affiliated. Este Actor es un proyecto independiente. No está afiliado, patrocinado ni aprobado por la Dirección ChileCompra ni por Mercado Público. "Mercado Público" y "ChileCompra" se mencionan solo para describir la fuente de los datos.
Fuente de los datos / Data source: Dirección ChileCompra (API de Mercado Público). Cada registro incluye el campo
dataSourcecon esta atribución.
Qué hace / What it does
Fuente (source) | Endpoint oficial | Filtros |
|---|---|---|
licitaciones | api.mercadopublico.cl/servicios/v1/publico/licitaciones.json | fecha (rango ≤ 31 días), estado, código de organismo, código de proveedor, códigos específicos |
ordenes_compra | api.mercadopublico.cl/servicios/v1/publico/ordenesdecompra.json | fecha, estado, organismo, proveedor, códigos |
compra_agil (BETA) | api2.mercadopublico.cl/v2/compra-agil (API v2, beta oficial desde mayo 2026; aún no validada con datos reales en este Actor: en pruebas del 09-11-2026 la API respondió 504) | fecha de publicación, estados, regiones, palabras clave, RUT de organismo (filtro local), códigos |
- Los listados por fecha de la API v1 traen solo datos básicos; con
fetchDetails: true(por defecto) se consulta la ficha de cada resultado (1 solicitud extra de tu cuota por resultado). - Salida normalizada y estable (mismos campos para las tres fuentes), fechas ISO 8601 UTC, estados en español e inglés, enlace a la ficha oficial.
- Deduplicación por fuente + código, también si la ejecución se reanuda.
- Límites y reintentos: pausa de 2,5 s por defecto entre el fin de una respuesta y la siguiente solicitud (la API rechaza peticiones simultáneas), reintentos con espera exponencial ante errores de red, 5xx y "peticiones simultáneas"; respeta
Retry-After. - Errores claros: ticket inválido o cuota agotada terminan la ejecución con un mensaje explícito; si la cuota se agota a mitad de camino, se entrega lo ya obtenido.
- Privacidad: no se exponen nombres, RUT, correos ni teléfonos de funcionarios o contactos, ni el nombre/RUT de proveedores que sean personas naturales (ni siquiera en
raw). - El ticket se marca como secreto (cifrado por Apify) y nunca se escribe en logs.
Precio / Pricing
Pago por resultado (pay per event): solo se cobra el evento result por cada registro entregado en el dataset. No se cobran consultas vacías, duplicados ni errores. Ver la pestaña Pricing del Actor. Puedes fijar un gasto máximo por ejecución; el Actor se detiene al alcanzarlo.
Input
{"ticket": "TU-TICKET-PERSONAL","source": "licitaciones","dateFrom": "2026-11-02","dateTo": "2026-11-06","tenderStatus": "publicada","buyerCode": "6945","fetchDetails": true,"maxItems": 100}
Compra Ágil (BETA, aún no validada con datos reales):
{"ticket": "TU-TICKET-PERSONAL","source": "compra_agil","agileStatuses": ["publicada"],"regions": ["13"],"keyword": "materiales electricos","maxItems": 50}
Por código / by code: { "ticket": "…", "source": "ordenes_compra", "codes": ["1057532-156-AG26"] }
| Campo | Descripción (ES) | Description (EN) |
|---|---|---|
ticket | Tu ticket (secreto, obligatorio) | Your ticket (secret, required) |
source | licitaciones · ordenes_compra · compra_agil | Data source |
codes | Códigos exactos; ignora los demás filtros | Exact codes; other filters ignored |
dateFrom / dateTo | YYYY-MM-DD, día de Chile; por defecto hoy; máx. 31 días | Chile calendar day; default today; max 31 days |
tenderStatus | activas, publicada, cerrada, desierta, adjudicada, revocada, suspendida, todos | Tender status |
purchaseOrderStatus | Valores oficiales (aceptada, cancelada, recepcionconforme, …) | PO status (official values) |
buyerCode / supplierCode | CodigoOrganismo / CodigoProveedor numéricos de Mercado Público | Numeric buyer / supplier codes |
agileStatuses, regions, keyword, buyerRut | Solo Compra Ágil | Compra Ágil only |
fetchDetails | Consultar ficha completa (por defecto true) | Fetch full record |
includeRaw | Agregar registro original sin datos personales | Add raw record (personal data removed) |
maxItems | Máximo de resultados entregados/cobrados (por defecto 50) | Max delivered/charged results |
requestIntervalMs, maxRetries | Ritmo y reintentos | Pacing and retries |
Output (diccionario / data dictionary)
| Campo | ES | EN |
|---|---|---|
source | licitacion, orden_compra, compra_agil | Record type |
code | Código oficial | Official code |
name, description | Nombre, descripción | Name, description |
statusCode, statusEs, statusEn | Código de estado de la API y su glosa | API status code and label |
type | Tipo (L1, LE, LP, SE, CM… o COMPRA_AGIL) | Procurement type |
buyerName, buyerCode, buyerRut, buyerUnit, buyerRegion | Organismo comprador | Buyer |
supplierName, supplierCode, supplierRut | Proveedor (OC). null si es persona natural | Supplier (POs); null for natural persons |
supplierType | persona_juridica, persona_natural o null | Supplier type |
publishedAt, closesAt, awardedAt, createdAt, updatedAt | Fechas ISO 8601 UTC | ISO 8601 UTC dates |
estimatedAmount | Monto estimado / disponible | Estimated / available budget |
totalAmount | Total de la OC | PO total |
currency | CLP, CLF (UF), USD, UTM, EUR | Currency |
relatedTenderCode | Licitación asociada a la OC | Related tender |
itemsCount | Cantidad de ítems/productos | Line items |
officialUrl | Ficha oficial en mercadopublico.cl | Official page |
detailLevel | full (ficha) o basic (listado) | Detail level |
dataSource, retrievedAt | Atribución y fecha de obtención | Attribution, retrieval time |
Ejemplo / example:
{"source": "licitacion","code": "1509-5-L126","name": "Servicio de aseo dependencias municipales","statusCode": "5", "statusEs": "Publicada", "statusEn": "Published","type": "L1","buyerName": "I MUNICIPALIDAD DE EJEMPLO", "buyerCode": "6945","publishedAt": "2026-11-09T13:00:00.000Z", "closesAt": "2026-11-20T18:00:00.000Z","estimatedAmount": 3500000, "currency": "CLP","officialUrl": "https://www.mercadopublico.cl/Procurement/Modules/RFB/DetailsAcquisition.aspx?idlicitacion=1509-5-L126","detailLevel": "full","dataSource": "Fuente: Dirección ChileCompra (API de Mercado Público). Registro normalizado por este Actor."}
(Ejemplo ilustrativo con datos ficticios / illustrative, fictitious data.)
Uso vía API / API usage
curl -X POST "https://api.apify.com/v2/acts/better-llama~mercado-publico-chile/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \-d '{"ticket":"'"$MP_TICKET"'","source":"compra_agil","agileStatuses":["publicada"],"regions":["13"],"maxItems":20}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('better-llama/mercado-publico-chile').call({ticket: process.env.MP_TICKET, source: 'licitaciones', tenderStatus: 'activas', maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Uso vía MCP (agentes de IA) / MCP usage (AI agents)
Agrega el servidor MCP de Apify con este Actor como herramienta / add Apify's MCP server with this Actor as a tool:
{"mcpServers": {"mercadopublico": {"url": "https://mcp.apify.com/?tools=better-llama/mercado-publico-chile","headers": { "Authorization": "Bearer <APIFY_TOKEN>" }}}}
Prompt de ejemplo: "Busca licitaciones activas de la Región de Valparaíso sobre aseo y dame código, organismo, monto estimado y fecha de cierre." El agente debe pasar tu ticket en el campo ticket; guárdalo como secreto en tu cliente y no lo incluyas en prompts compartidos.
El Actor usa permisos limitados (limited permissions), por lo que también es compatible con los pagos de agentes de Apify.
Condiciones de uso de la API / API terms
Al usar este Actor aceptas cumplir las Políticas y Condiciones de Uso de la API de Mercado Público, entre ellas:
- el ticket es personal: usa solo el tuyo, con tus datos reales;
- límite de 10.000 solicitudes diarias por ticket, que no debes exceder ni eludir (este Actor espacia las solicitudes y corta en
maxItems); - para descargas masivas se recomienda el horario 22:00–07:00;
- si publicas datos obtenidos sin modificarlos, debes indicar que la fuente es la Dirección ChileCompra.
ChileCompra puede modificar o suspender la API; la API de Compra Ágil está en versión beta. Revisa también la Ley 19.628 / 21.719 si cruzas estos datos con datos personales.
Limitaciones conocidas / Known limitations
- La API de Compra Ágil no filtra por organismo;
buyerRutse aplica localmente (combínalo conregions). - En Compra Ágil,
orden_compra.codigo_orden_comprasuele venirnullaunque exista OC (documentado por ChileCompra). - La API rechaza peticiones simultáneas (código 10500, HTTP 429) incluso con ~1 s entre inicios de solicitudes; el Actor mide el intervalo desde el fin de la respuesta anterior (2,5 s por defecto, porque con 1,5 s aún hubo rechazos en la nube) y reintenta. No bajes
requestIntervalMssin necesidad. - Consulta por fecha (v1): la API devuelve los registros asociados a ese día según su propio criterio (en pruebas reales: publicadas, cerradas y adjudicadas ese día), no solo los publicados.
Fechas.FechaAdjudicacionde la API trae la fecha estimada en licitaciones no adjudicadas;awardedAtsolo se informa si la licitación está adjudicada.- Estados no documentados observados: licitación
15= Revocada; OC5= En proceso. Otros códigos se entregan con la glosa de la ficha (statusEs) onullen modo básico. - La API de Compra Ágil (beta) puede responder
504 Endpoint request timed outtras ~30 s; el Actor reintenta y, si persiste, termina con un error claro. - Proveedores persona natural: la API no indica si el proveedor es persona natural o jurídica. Se usa la heurística habitual del RUT chileno (número < 50.000.000 = persona natural). Para personas naturales —o si el RUT no es interpretable— se ocultan nombre, RUT y código del proveedor, también en
rawy en las adjudicaciones por línea de las licitaciones. Puede haber falsos positivos/negativos en casos excepcionales. - Datos de pruebas: los tests usan fixtures construidos desde la documentación oficial (ver
test/fixtures/README.md).
Changelog
Ver / see CHANGELOG.md.