Mercado Público Chile – Licitaciones y Órdenes de Compra avatar

Mercado Público Chile – Licitaciones y Órdenes de Compra

Pricing

from $2.00 / 1,000 resultado entregado / delivered results

Go to Apify Store
Mercado Público Chile – Licitaciones y Órdenes de Compra

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

Francisco Rubio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Features

Limited permissions

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 dataSource con esta atribución.

Qué hace / What it does

Fuente (source)Endpoint oficialFiltros
licitacionesapi.mercadopublico.cl/servicios/v1/publico/licitaciones.jsonfecha (rango ≤ 31 días), estado, código de organismo, código de proveedor, códigos específicos
ordenes_compraapi.mercadopublico.cl/servicios/v1/publico/ordenesdecompra.jsonfecha, 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"] }

CampoDescripción (ES)Description (EN)
ticketTu ticket (secreto, obligatorio)Your ticket (secret, required)
sourcelicitaciones · ordenes_compra · compra_agilData source
codesCódigos exactos; ignora los demás filtrosExact codes; other filters ignored
dateFrom / dateToYYYY-MM-DD, día de Chile; por defecto hoy; máx. 31 díasChile calendar day; default today; max 31 days
tenderStatusactivas, publicada, cerrada, desierta, adjudicada, revocada, suspendida, todosTender status
purchaseOrderStatusValores oficiales (aceptada, cancelada, recepcionconforme, …)PO status (official values)
buyerCode / supplierCodeCodigoOrganismo / CodigoProveedor numéricos de Mercado PúblicoNumeric buyer / supplier codes
agileStatuses, regions, keyword, buyerRutSolo Compra ÁgilCompra Ágil only
fetchDetailsConsultar ficha completa (por defecto true)Fetch full record
includeRawAgregar registro original sin datos personalesAdd raw record (personal data removed)
maxItemsMáximo de resultados entregados/cobrados (por defecto 50)Max delivered/charged results
requestIntervalMs, maxRetriesRitmo y reintentosPacing and retries

Output (diccionario / data dictionary)

CampoESEN
sourcelicitacion, orden_compra, compra_agilRecord type
codeCódigo oficialOfficial code
name, descriptionNombre, descripciónName, description
statusCode, statusEs, statusEnCódigo de estado de la API y su glosaAPI status code and label
typeTipo (L1, LE, LP, SE, CM… o COMPRA_AGIL)Procurement type
buyerName, buyerCode, buyerRut, buyerUnit, buyerRegionOrganismo compradorBuyer
supplierName, supplierCode, supplierRutProveedor (OC). null si es persona naturalSupplier (POs); null for natural persons
supplierTypepersona_juridica, persona_natural o nullSupplier type
publishedAt, closesAt, awardedAt, createdAt, updatedAtFechas ISO 8601 UTCISO 8601 UTC dates
estimatedAmountMonto estimado / disponibleEstimated / available budget
totalAmountTotal de la OCPO total
currencyCLP, CLF (UF), USD, UTM, EURCurrency
relatedTenderCodeLicitación asociada a la OCRelated tender
itemsCountCantidad de ítems/productosLine items
officialUrlFicha oficial en mercadopublico.clOfficial page
detailLevelfull (ficha) o basic (listado)Detail level
dataSource, retrievedAtAtribución y fecha de obtenciónAttribution, 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; buyerRut se aplica localmente (combínalo con regions).
  • En Compra Ágil, orden_compra.codigo_orden_compra suele venir null aunque 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 requestIntervalMs sin 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.FechaAdjudicacion de la API trae la fecha estimada en licitaciones no adjudicadas; awardedAt solo se informa si la licitación está adjudicada.
  • Estados no documentados observados: licitación 15 = Revocada; OC 5 = En proceso. Otros códigos se entregan con la glosa de la ficha (statusEs) o null en modo básico.
  • La API de Compra Ágil (beta) puede responder 504 Endpoint request timed out tras ~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 raw y 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.