Saltar al contenido principal
COMPRASAL es el sistema de compras públicas de El Salvador, a cargo de la Dirección Nacional de Compras Públicas (DINAC) del Ministerio de Hacienda. Cada ministerio, municipio y entidad autónoma publica ahí sus compras: unas 150.000 adjudicaciones desde que el sistema actual empezó en diciembre de 2024, un registro de unos 8.600 proveedores, la lista de proveedores sancionados y los cerca de 500 procesos abiertos a ofertas en cada momento. Croma lo guarda todo, así que tienen respuesta preguntas que COMPRASAL mismo no responde: cada adjudicación a un proveedor en todas las instituciones, cuánto ha vendido y a quién, si su nombre aparece en la lista de sancionados, y qué procesos abiertos se parecen a lo que ya ha vendido. Busca en el registro por nombre (tolerante a errores de escritura), lee el perfil de un proveedor, busca adjudicaciones y procesos abiertos, lee el informe de una adjudicación con sus oferentes y cifrados presupuestarios, y cruza un proveedor con las licitaciones a las que podría ofertar esta semana.

Buscar proveedores

POST /sv/comprasal-sv/suppliers-search/v1 Dataset Encuentra el id de un proveedor por su nombre, como sea que se haya escrito.
Devuelve as_of (qué tan actualizados están los datos), los filtros aplicados, total y total_is_exact, page, per_page, total_pages, count y results[]. Cada proveedor incluye id, name (la razón social, o el nombre de la persona si es persona natural), trade_name, sanctioned y score (de 0 a 100, qué tan cerca está el nombre de query; null sin búsqueda).
El registro de COMPRASAL no publica el NIT de los proveedores, así que se busca por nombre.

Perfil de un proveedor

POST /sv/comprasal-sv/supplier/v1 Dataset Todo lo que las compras públicas saben de un proveedor, en una sola respuesta.
Devuelve as_of, found, supplier_id, supplier (id, name, trade_name, sanctioned), sanctions[] (name, start_date, end_date, sanctioning_entity, list, active, score) y awards: total, summarized y summary_is_complete (los montos suman las 2.000 adjudicaciones más recientes), amount, first_awarded_date, last_awarded_date, entities[] (entity_id, entity_name, awards, amount) y latest[], las diez adjudicaciones más recientes.
Un id que el registro no tiene devuelve found: false con HTTP 200, no un error. Las sanciones se cruzan por nombre, porque la lista no trae el id del proveedor: revisa score antes de dar una coincidencia por buena.

Buscar adjudicaciones

POST /sv/comprasal-sv/awards-search/v1 Dataset Cada adjudicación, por proveedor, institución, proceso, fecha o palabras.
Devuelve as_of (qué tan actualizados están los datos), los filtros aplicados, total y total_is_exact, page, per_page, total_pages, count y results[]. Cada adjudicación incluye id, amount (dólares), awarded_date, process_id, process_code, process_name (lo que se compró), contracting_method y contracting_method_code, entity_id, entity_code, entity_name, supplier_id, supplier_name, supplier_trade_name y official_url (la adjudicación en COMPRASAL).

Informe de una adjudicación

POST /sv/comprasal-sv/award/v1 Lookup
Responde desde la copia de Croma cuando tiene una respuesta reciente para la llave; si no, lee la fuente y guarda la respuesta. Cada respuesta dice cuándo se consultó la fuente por última vez (checked_at) y de dónde salió la respuesta (served_from).
Devuelve found, award_id, checked_at, served_from y award: contract_name, contracting_method, term_days, planned_amount, certified_amount, published_at, opened_at, closed_at, process_status, signed_at, budget_codes[], bidders[] (name, submitted_at), modifications, payments y official_url.
Un id que COMPRASAL no tiene devuelve found: false con HTTP 200, no un error.

Buscar procesos abiertos

POST /sv/comprasal-sv/tenders-search/v1 Dataset Los procesos que reciben ofertas ahora, el que cierra primero arriba.
Devuelve as_of (qué tan actualizados están los datos), los filtros aplicados, total y total_is_exact, page, per_page, total_pages, count y results[]. Cada proceso incluye id, code, name (lo que se compra), entity_name, contracting_method y contracting_method_code, status, stage, current_stages[] y stages[] (name, starts_at, ends_at), offers_due_at (cuándo cierra la recepción de ofertas), activities[] (code, name: las actividades económicas a las que está abierto) y activity_codes.

Licitaciones para un proveedor

POST /sv/comprasal-sv/tenders-for-supplier/v1 Dataset De lo que un proveedor ya vendió a lo que podría ofertar esta semana.
Devuelve as_of, found, supplier_id, supplier_name, awards_considered, count y results[], la mejor coincidencia primero. Cada proceso incluye id, code, name (lo que se compra), entity_name, contracting_method y contracting_method_code, status, stage, current_stages[] y stages[] (name, starts_at, ends_at), offers_due_at (cuándo cierra la recepción de ofertas), activities[] (code, name: las actividades económicas a las que está abierto) y activity_codes. Cada coincidencia agrega score, matched_terms y similar_award_ids.
Un proveedor sin adjudicaciones no tiene coincidencias: el cruce sale de lo que ha vendido.

Referencia completa

Esquemas, todos los campos de respuesta y un playground interactivo.