# Buscar claves de producto y servicio > `GET https://api.cfdi.express/v1/catalogs/products` — Búsqueda por palabra clave sobre las más de 52 000 claves del catálogo c_ClaveProdServ, incluidos los sinónimos del SAT. URL de esta página: https://cfdi.express/docs/api/catalogo-productos Autenticación: requiere API key (`Authorization: Bearer sk_test_…` o `sk_live_…`) Es la forma correcta de resolver el `productCode` de tus conceptos antes de timbrar. Si no encuentras una clave específica, `01010101` (no existe en el catálogo) es el comodín permitido. ### Query string | Campo | Tipo | Requerido | Descripción | |---|---|---|---| | `keyword` | string | no | Texto a buscar, de 1 a 120 caracteres. Sin él devuelve las primeras claves. | | `limit` | integer | no | Resultados a devolver. Entre 1 y 100. Default 20. | ## Ejemplos ### cURL ```bash curl -G https://api.cfdi.express/v1/catalogs/products \ -H "Authorization: Bearer sk_test_..." \ --data-urlencode "keyword=teclado" \ --data-urlencode "limit=3" ``` ## Respuesta ### 200 OK ```json { "object": "list", "data": [ { "clave": "43201808", "nombre": "Teclados" }, { "clave": "43211706", "nombre": "Teclados de computadora" }, { "clave": "56101804", "nombre": "Teclados musicales" } ] } ``` ## Errores | Status | code | Cuándo aparece | |---|---|---| | 401 | `unauthorized` | Falta el header Authorization o la llave es inválida. | | 429 | `rate_limited` | Excediste el límite de requests por minuto de tu cuenta (300 por default). La respuesta incluye Retry-After. | ## Relacionados - [GET /v1/catalogs/units](https://cfdi.express/docs/api/catalogo-unidades) — Claves de unidad - [POST /v1/invoices](https://cfdi.express/docs/api/timbrar-factura) — Timbrar factura --- Referencia completa: https://cfdi.express/docs/api · OpenAPI: https://api.cfdi.express/openapi.json · Llaves: https://dash.cfdi.express