---
title: "SIC Trademarks Search"
method: POST
path: "/co/sic-ip/trademarks-search/v1"
tags: ["Colombia", "SIC, Registro de la Propiedad Industrial"]
---

# SIC Trademarks Search

`POST /co/sic-ip/trademarks-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/sic-ip/trademarks-search/v1`
- Auth: HTTP bearer

Search Colombia's trademark register (SIC), about 0.9 million cases filed since 1930, by words of the sign or the owner's name, narrowed by `status` (as the register words it, e.g. `Registrada`), `nice_class` (1-45), `certificate_number` and the filing date (`from_date`/`to_date`). Each result carries the file number, certificate, sign, status, vigencia, owners, Nice classes, gazette and the label. Read one case in full with `sic_ip_trademark`. Served by Croma from its copy (`as_of` says how current it is).

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

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `query` string: Optional words to find in the sign or in the owner's name, e.g. `credisander`, `bancolombia`. Every word must appear.
  - `status` string: Optional status exactly as the register words it, e.g. `Registrada`, `Publicada`, `Concedida`, `Negada`, `Caducado`, `Bajo Examen Formal`. Case and accents matter.
  - `nice_class` string: Optional Nice class of the goods or services, 1 to 45, e.g. `36` (financial services), `25` (clothing).
  - `certificate_number` string: Optional registration certificate number, e.g. `612592`.
  - `from_date` string, date: Optional date filter in yyyy-mm-dd format.
  - `to_date` string, date: Optional date filter in yyyy-mm-dd format.
  - `page` integer: 1-based page number for paginated results.
  - `per_page` integer: Results per page (1-50).

## Response `200`

Successful response

- SicIpTrademarksSearchResponse
  - `data` SicIpTrademarksSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `query` string, required
    - `status` string, nullable, required
    - `nice_class` string, nullable, required
    - `certificate_number` string, nullable, required
    - `from_date` string, nullable, required
    - `to_date` string, nullable, required
    - `total` number, required: Matches, 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
    - `results` object[], required
      - `file_number` string, required: The file number (expediente) the register gave the case when it was filed, e.g. `SD2026/0031979`, `NC2026/0006185`, or the bare digits of a file opened before 2016 (`16137606`). It identifies the case for its whole life.
      - `status` string, nullable, required: The case's status as the register words it, e.g. `Registrada`, `Publicada`, `Concedida`, `Negada`, `Caducado`.
      - `filing_date` string, nullable, required: `yyyy-mm-dd` the application was filed (fecha de presentación); what `from_date` and `to_date` filter on.
      - `owners` string[], required: The owners (titulares), or the applicants while the case is pending, as the register lists them.
      - `certificate_number` string, nullable, required: The registration certificate number, once the mark registered, e.g. `612592`.
      - `sign` string, nullable, required: The sign (denominación) as filed, e.g. `CAFÉ BOSQUE ADENTRO`. Null for a purely figurative mark.
      - `expires_on` string, nullable, required: `yyyy-mm-dd` the registration runs out unless renewed (vigencia).
      - `nice_classes` string[], required: The Nice classes the mark covers, e.g. ["29", "30"].
      - `gazette_number` string, nullable, required: The number of the Gaceta de Propiedad Industrial that published the application.
      - `label_url` string, nullable, required: Croma's copy of the mark's label (etiqueta), byte for byte as the register serves it. Null for a mark with no label.
      - `source_label_url` string, nullable, required: The register's own link to the label.

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an 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/df016cdb29d7?raw)
