---
title: "SECOP Suppliers Search"
method: POST
path: "/co/secop/suppliers-search/v1"
tags: ["Colombia", "SECOP"]
---

# SECOP Suppliers Search

`POST /co/secop/suppliers-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/secop/suppliers-search/v1`
- Auth: HTTP bearer

Search the suppliers registered on SECOP II: who they are, the document they registered under, what category they sell in, where they are, and whether the account is still active. Use it to resolve a company name to its NIT before searching contracts, or to check that a contractor is a registered supplier at all.

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `query` string: Optional search terms matched against the free text of the record (what is being bought, the entity and the supplier). Leave empty to filter without searching.
  - `document` string: Optional document filter: a NIT or a cédula, with or without dots and verification digit (`900195855`, `900.195.855-1` and `900195855-1` all match the same records).
  - `department` string: Optional department of the contracting entity, as SECOP writes it (`Antioquia`, `Bogotá D.C.`, ...). Empty for the whole country.
  - `unspsc_code` string: Optional main UNSPSC category code of the purchase (`V1.80101500`). Empty for every category.
  - `active` 'any' | 'yes' | 'no': Restrict to active supplier accounts (`yes`), inactive ones (`no`), or `any`.
  - `page` integer: 1-based page number for paginated results.
  - `per_page` integer: Results per page (1-100).

## Response `200`

Successful response

- SecopSuppliersSearchResponse
  - `data` SecopSuppliersSearchData, required
    - `as_of` string, nullable, required: How current the data is: the moment this dataset was last brought up to date, as an ISO timestamp. Null before the first sync.
    - `total` number, required: Records matching the filters, regardless of the page size, counted up to 1000.
    - `total_is_exact` boolean, required: False when more than 1000 match: `total` is then 1000, and the pages go on.
    - `page` number, required
    - `per_page` number, required
    - `total_pages` number, required: Pages over `total`; there are more when `total_is_exact` is false.
    - `count` number, required: Records returned on this page.
    - `query` string, required
    - `document` string, nullable, required
    - `department` string, nullable, required
    - `unspsc_code` string, nullable, required
    - `active` string, required
    - `results` object[], required
      - `id` string, required: Stable identifier, `secop_ii:<supplier code>`.
      - `code` string, nullable, required: The supplier's own SECOP II code.
      - `name` string, nullable, required: Name or razón social of the supplier.
      - `document` string, nullable, required: NIT or cédula of the supplier, digits only, no verification digit.
      - `is_entity` boolean, nullable, required: True when the account belongs to a state entity rather than a vendor.
      - `is_group` boolean, nullable, required: True when the account is a consorcio or unión temporal.
      - `is_sme` boolean, nullable, required: True when the supplier is registered as a PyME.
      - `is_active` boolean, nullable, required: Whether the account is currently active.
      - `company_type` string, nullable, required: Tipo de empresa as the platform classifies it.
      - `unspsc_code` string, nullable, required: Main UNSPSC category the supplier registered under.
      - `unspsc_description` string, nullable, required: Description of that main category.
      - `country` string, nullable, required: Country of the supplier.
      - `department` string, nullable, required: Department of the supplier.
      - `city` string, nullable, required: Municipality of the supplier.
      - `address` string, nullable, required: Registered address.
      - `phone` string, nullable, required: Registered telephone.
      - `email` string, nullable, required: Registered contact email.
      - `website` string, nullable, required: Registered web site.
      - `legal_rep_name` string, nullable, required: Name of the legal representative.
      - `legal_rep_document` string, nullable, required: Document of the legal representative.
      - `legal_rep_document_type` string, nullable, required: Kind of document the legal representative holds.
      - `legal_rep_phone` string, nullable, required: Telephone of the legal representative.
      - `legal_rep_email` string, nullable, required: Email of the legal representative.
      - `registered_date` string, nullable, required: When the account was created, `yyyy-mm-dd`.
      - `year` number, nullable, required: Calendar year of `registered_date`.

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/74c745980c60?raw)
