Lookup sunat · locales by RUC
https://api.latinfo.dev/pe/sunat/locales/ruc/{ruc}
One annex establishment address; a company can have several records. Coverage: Annex establishments published for legal-entity RUCs. Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below. departamento is an address/unit component, not the geographic department; resolve UBIGEO for geography. Returns all records as an array. Import time is not observation time; inspect freshness headers. Add limit (1–500) and offset to retrieve an explicit page; without them the complete original array is returned. X-Total-Count gives the exact row count; follow Link rel=next to retrieve all pages.
Contrato de la fuente
- Publicador
- SUNAT, Peru
- Cobertura
- Annex establishments published for legal-entity RUCs.
- Qué representa un registro
- One annex establishment address; a company can have several records.
- Identificador
- Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below.
- Patrón admitido
^\d{11}$- Cantidad de registros
many- Licencia
- No se ha verificado el permiso de reutilización. El acceso público no equivale a una licencia de reutilización.
Limitaciones conocidas
- departamento is an address/unit component, not the geographic department; resolve UBIGEO for geography.
Contrato de la fuente para agentes · Documentación de la fuente
Parámetros
rucstringpathobligatorioRUC in the source's normalized format. Keep identifiers as strings; preserve leading zeros.
Example: 20100047218
limitintegerqueryOptional page size. Supplying limit or offset enables explicit pagination; default page size is 100.
offsetintegerqueryRow offset, default 0. Keep the same source generation while collecting pages.
generationstringqueryOpaque source-generation guard, automatically included in the next-page Link. A changed generation returns 409; restart retrieval.
Ejemplo de solicitud
curl https://api.latinfo.dev/pe/sunat/locales/ruc/20100047218 \
-H "Authorization: Bearer $LATINFO_API_KEY"
Respuestas
200Published source records. Missing data is not a clearance or a negative finding.
Encabezados de la respuesta
X-Latinfo-Imported-AtImport time, not the date of the government observation.
X-Source-Updated-AtPublisher update time, when known.
X-Latest-Observation-AtLatest date in returned records, when known.
X-Freshness-Statusstring
CURRENT · DELAYED · STALE · UNKNOWNX-Credits-CostActual credits charged for this request.
X-Source-GenerationOpaque immutable source generation. Follow the guarded next-page Link when collecting a history.
X-Total-CountExact row count for this identifier when pagination is requested.
X-Page-Offsetinteger
X-Page-Limitinteger
LinkNext page URL, rel=next. Absent at the end.
application/jsonCampos de la respuesta
[].ruc string obligatorioLookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below.
[].ubigeo string obligatorioSix-digit INEI district code; retain leading zeros.
[].tipo_via string obligatorioPublished street-type abbreviation.
[].nombre_via string obligatorioPublished street name.
[].codigo_zona string obligatorioPublished zone-type abbreviation.
[].tipo_zona string obligatorioPublished zone name.
[].numero string obligatorioExternal street number; not a count.
[].kilometro string obligatorioAddress kilometer marker; not a measured company distance.
[].interior string obligatorioInterior/unit address component.
[].lote string obligatorioAddress lot component.
[].departamento string obligatorioApartment/unit address component; not the geographic department.
[].manzana string obligatorioAddress block component.
Esquema de respuesta
{
"type": "array",
"items": {
"type": "object",
"properties": {
"ruc": {
"type": "string",
"description": "Lookup by ruc as a string, preserving leading zeros. Accepted syntax and normalization are defined by the contract below."
},
"ubigeo": {
"type": "string",
"description": "Six-digit INEI district code; retain leading zeros.",
"x-latinfo-meaning": "code"
},
"tipo_via": {
"type": "string",
"description": "Published street-type abbreviation.",
"x-latinfo-meaning": "text"
},
"nombre_via": {
"type": "string",
"description": "Published street name.",
"x-latinfo-meaning": "text"
},
"codigo_zona": {
"type": "string",
"description": "Published zone-type abbreviation.",
"x-latinfo-meaning": "text"
},
"tipo_zona": {
"type": "string",
"description": "Published zone name.",
"x-latinfo-meaning": "text"
},
"numero": {
"type": "string",
"description": "External street number; not a count.",
"x-latinfo-meaning": "text"
},
"kilometro": {
"type": "string",
"description": "Address kilometer marker; not a measured company distance.",
"x-latinfo-meaning": "text"
},
"interior": {
"type": "string",
"description": "Interior/unit address component.",
"x-latinfo-meaning": "text"
},
"lote": {
"type": "string",
"description": "Address lot component.",
"x-latinfo-meaning": "text"
},
"departamento": {
"type": "string",
"description": "Apartment/unit address component; not the geographic department.",
"x-latinfo-meaning": "text"
},
"manzana": {
"type": "string",
"description": "Address block component.",
"x-latinfo-meaning": "text"
}
},
"required": [
"ruc",
"ubigeo",
"tipo_via",
"nombre_via",
"codigo_zona",
"tipo_zona",
"numero",
"kilometro",
"interior",
"lote",
"departamento",
"manzana"
],
"additionalProperties": false
}
}400Invalid identifier or query. Correct the input before retrying.
401Missing or invalid API key. Authenticate before retrying.
404No published record, or identifier outside the legal-entity scope. Not proof that the company does not exist.
409Source generation changed during paginated retrieval. Restart from offset 0.
429Rate or credit limit exceeded. Inspect the response and rate-limit headers before retrying.
503Source unavailable. Report unavailable, not an empty result.
Ejemplo JSON
Ejemplo ilustrativo del esquema. No es una respuesta en vivo.
[
{
"ruc": "string",
"ubigeo": "string",
"tipo_via": "string",
"nombre_via": "string",
"codigo_zona": "string",
"tipo_zona": "string",
"numero": "string",
"kilometro": "string",
"interior": "string",
"lote": "string",
"departamento": "string",
"manzana": "string"
}
]Procedencia y limitaciones
La cobertura varía por país y fuente pública. Un campo ausente no demuestra que el hecho no exista. Los registros públicos pueden tener retrasos o errores; revisa la evidencia y la fecha de la fuente antes de usar un resultado.