REST · ¿Quién es este RUT?
Consulta de RUT
Razón social, giros con su afectación de IVA, domicilios y la casilla a la que enviarle un documento electrónico. Los ejemplos de abajo son la petición y la respuesta real de cada operación, no una aproximación.
Lo que descuenta cada operación es lo mismo por REST, SOAP, GraphQL y MCP —pagas por el dato, no por el protocolo—; la tabla completa está en Empezar.
GET /v1/rut/{rut}
La ficha completa
Todo lo que el padrón sabe del RUT: identidad, giros con su afectación de IVA, domicilios y la casilla a la que enviarle un documento electrónico.
Lo que devuelve
| Campo | Tipo | Qué es |
|---|---|---|
rut | string | El RUT que consultaste, normalizado: con guion y sin puntos. |
rut_formateado | string | El mismo RUT listo para mostrar: con puntos y guion. |
es_empresa | boolean | true si el RUT es de una empresa y false si es de una persona. Sirve para decidir qué pedirle a quien se está registrando. |
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Nóminas públicas de contribuyentes, SII»). Es constante para esta llamada: guárdalo una vez y no lo parsees. |
padron_publicado | string | Qué versión de los datos respondió. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. Cámbiala de zona al mostrarla. |
consultado_en | string | Cuándo se respondió esta llamada. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. |
razon_social | string | El nombre legal, para imprimir en una factura. Cadena vacía cuando el RUT es de una persona: ahí el nombre hay que pedírselo a ella. |
tipo_sociedad | string | En qué familia cae: «PERSONA JURIDICA COMERCIAL», «INSTITUCIONES FISCALES», «ORG. SIN FINES DE LUCRO»… Cadena vacía si no viene clasificada. |
subtipo_sociedad | string | La forma exacta dentro de esa familia: «SOCIEDAD POR ACCIONES», «SOC. RESPONSABILIDAD LIMITADA»… Cadena vacía si no viene clasificada. |
cod_subtipo | string | El código de tres dígitos de ese subtipo («223»). Compara contra ESTE si tu lógica depende del tipo de sociedad: las dos descripciones son texto y pueden cambiar de redacción. Puede llegar con código y con las descripciones vacías. |
inicio_actividades | string | Desde cuándo la empresa opera formalmente. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. null en casi uno de cada dos RUT: no llega para todos. |
termino_giro | string | Cuándo la empresa cerró su giro. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. null en siete de cada diez, que es el caso normal: quiere decir que no consta un cierre, no que siga operando. |
actividades | array | Todos sus giros. Viene VACÍO en casi la mitad de las empresas, así que no es un caso raro: cuenta con él. Las proporciones de este bloque salen de la publicación de agosto de 2026. |
domicilios | array | Su casa matriz y todas sus sucursales. Viene vacío en una de cada noventa empresas. |
casilla_intercambio | string | El correo al que enviarle un DTE. Cadena vacía si no tiene uno registrado: ahí el documento hay que hacérselo llegar por otra vía. |
tamano | object | Tamaño y régimen del último año comercial, desde la nómina anual de empresas del SII: tramo de ventas, trabajadores, capital, régimen, rubro y actividad principal. null cuando esa nómina no clasifica al RUT como empresa en los dos últimos años, que es distinto de un campo vacío adentro: le pasa a siete de cada diez, así que es lo normal y no la excepción. Sin costo adicional. Las proporciones de este bloque salen de la nómina anual de los años comerciales 2020 a 2024. |
gran_contribuyente | boolean | true si el RUT está en la nómina de Grandes Contribuyentes del SII —el anexo de la resolución que la Dirección de Grandes Contribuyentes dicta cada año; hoy la 208 de 2025—. false para casi todos: son cerca de 4.300 RUT. Sin costo adicional. |
grupo_economico | integer | El número de grupo económico con que esa nómina lista al RUT: un entero sin nombre (el SII no publica el nombre del grupo). null cuando no está en la nómina. |
concursal | object | Sus procedimientos concursales —liquidación o reorganización—, según el Boletín Concursal de la Superintendencia de Insolvencia y Reemprendimiento, con su propia fuente y su propia fecha. null cuando no hay con qué contestar: la fuente no está disponible, o el RUT es de una persona, cuyos procedimientos no se publican. Sin costo adicional. Las proporciones de este bloque salen del Boletín Concursal al 9 de septiembre de 2026 y de la publicación del SII de agosto de 2026. |
origenes | array | De qué publicación sale cada dato de esta ficha: una entrada por publicación, con quién la publica, su enlace público, su fecha y los campos que aporta. Sirve para citar la fuente de cada dato o para ir a verlo donde se publicó. Solo lista publicaciones abiertas, así que casilla_intercambio no tiene entrada; la del Boletín Concursal viene cuando viene concursal. Sin costo adicional. |
Dentro de actividades
| Campo | Tipo | Qué es |
|---|---|---|
codigo | integer | El código de actividad económica (ACTECO) que va en el DTE. |
descripcion | string | Ese giro, escrito. |
afecta_iva | boolean | true si el giro está gravado con IVA. Es lo que decide qué documento tributario corresponde emitir. |
desde | string | Desde cuándo tiene este giro. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. null si no consta: uno de cada treinta y cuatro mil. |
Dentro de domicilios
| Campo | Tipo | Qué es |
|---|---|---|
tipo | string | matriz o sucursal. |
direccion | string | La dirección ya compuesta, lista para imprimir. Si solo vas a mostrarla, usa este campo y no los de abajo. No incluye bloque ni villa. |
calle | string | La calle. A veces trae el número adentro y entonces numero viene vacío: si necesitas los componentes por separado, cuenta con ese caso. |
numero | string | El número, cuando viene aparte. Cadena vacía en cerca de una de cada tres direcciones, casi siempre porque la calle ya lo trae adentro. |
departamento | string | Oficina, departamento o local. Cadena vacía en tres de cada cuatro direcciones. |
comuna | string | La comuna. |
ciudad | string | La ciudad. Cadena vacía en dos de cada cinco direcciones. |
region | string | La región, con su numeral romano. |
bloque | string | Bloque o torre. Cadena vacía en diecinueve de cada veinte. |
villa | string | Villa o población. Cadena vacía en tres de cada cuatro. |
vigente_desde | string | Desde cuándo rige esta dirección. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. Puede venir null si no consta, aunque en esta publicación viene siempre. |
Dentro de tamano
| Campo | Tipo | Qué es |
|---|---|---|
anio_comercial | integer | El año comercial al que corresponde todo el bloque: el último que la nómina anual trae del RUT, o el anterior si el último no lo trae. Un ENTERO (2024), no una fecha. |
tramo_ventas | object | El tramo de ventas anuales, en UF, con su leyenda. Código 1 es «Sin Información» y le toca a cerca de una de cada cuatro empresas: cuenta con él. |
trabajadores | integer | Trabajadores dependientes informados en el año. 0 en cerca de siete de cada diez: no distingue «sin trabajadores» de «no informó». |
tramo_capital | object | El tramo de capital propio, con su leyenda y el signo aparte. null cuando el SII no lo informa: cerca de tres de cada diez empresas. |
regimen | object | El régimen tributario: 14A, 14D, 14D8, no14 u otros, con el texto del SII. null cuando el SII no lo informa: una de cada veinte empresas. |
renta_presunta | boolean | true si tributa por renta presunta. |
rubro | object | El rubro: la letra de la sección CIIU y el texto del SII. null cuando el SII no lo informa: una de cada ciento ochenta empresas, las mismas que tampoco traen subrubro ni actividad_principal. |
subrubro | string | El subrubro, tal como lo escribe el SII. null cuando el SII no lo informa: una de cada ciento ochenta empresas, la misma proporción que rubro. |
actividad_principal | integer | El código de la actividad principal declarada: el mismo codigo de actividades, para cruzarlo. null cuando el SII no la informa: una de cada ciento ochenta empresas, las mismas de rubro. |
primera_inscripcion | string | La primera inscripción de actividades. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. null cuando el SII no la informa: una de cada trescientas empresas. |
comuna | string | La comuna de la casa matriz según la nómina anual. Viene siempre: no hay ninguna empresa clasificada sin ella. |
Dentro de tamano.tramo_ventas
| Campo | Tipo | Qué es |
|---|---|---|
codigo | integer | El código del tramo en la leyenda del SII. Compara contra este. |
descripcion | string | El nombre del tramo, tal como lo escribe el SII («4to Rango Gran Empresa»). |
desde_uf | number | Desde cuántas UF vende. null en «Sin Información» (código 1). |
hasta_uf | number | Hasta cuántas UF. null en el tramo abierto —el más alto— y en «Sin Información». |
categoria | string | El tamaño que la leyenda del SII nombra dentro del tramo: «Micro empresa», «Pequeña empresa», «Mediana empresa» o «Gran empresa». null en «Sin Información» (código 1), que no estima ninguno. |
Dentro de tamano.tramo_capital
| Campo | Tipo | Qué es |
|---|---|---|
codigo | integer | El código del tramo en la leyenda del SII. Compara contra este. |
descripcion | string | El nombre del tramo, tal como lo escribe el SII («más de 250 y hasta 500 UF»). |
desde_uf | number | Desde cuántas UF va el tramo. |
hasta_uf | number | Hasta cuántas UF. null en el tramo abierto, el más alto. |
negativo | boolean | true si el capital propio es negativo. |
Dentro de tamano.regimen
| Campo | Tipo | Qué es |
|---|---|---|
codigo | string | El código. Compara contra este: la descripción es texto del SII. |
descripcion | string | El texto del SII. |
Dentro de tamano.rubro
| Campo | Tipo | Qué es |
|---|---|---|
codigo | string | El código. Compara contra este: la descripción es texto del SII. |
descripcion | string | El texto del SII. |
Dentro de concursal
| Campo | Tipo | Qué es |
|---|---|---|
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Boletín Concursal, Superintendencia de Insolvencia y Reemprendimiento»). Es constante para esta llamada: guárdalo una vez y no lo parsees. |
actualizado_al | string | El día de la publicación más reciente del Boletín que este bloque incluye. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. No es padron_publicado: el Boletín y el SII publican en fechas distintas. |
procedimientos | array | Sus procedimientos, el más reciente primero. Vacía cuando el Boletín no le registra ninguno, que es lo normal: cerca de una de cada mil empresas tiene uno. |
Dentro de concursal.procedimientos
| Campo | Tipo | Qué es |
|---|---|---|
rol_causa | string | El rol de la causa en su tribunal (C-1234-2026). Junto con tribunal, identifica el procedimiento en el Boletín. |
tribunal | string | El tribunal que lo tramita. |
tipo | string | El tipo, tal como lo escribe el Boletín («Liquidación forzosa - Empresa Deudora»). Es texto y cambia de redacción: si tu lógica depende de si la empresa se liquida o se reorganiza, compara contra materia. |
materia | string | liquidacion, reorganizacion u otro: si el procedimiento liquida la empresa o busca reorganizarla. null cuando el tipo es nuevo en el Boletín y todavía no tiene materia asignada; hoy, ninguno. |
apertura | string | Su publicación más antigua en el Boletín. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. |
ultima_actuacion | string | Su publicación más reciente. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. |
ultima_actuacion_nombre | string | Qué fue esa última publicación, tal como la nombra el Boletín («Cuenta provisoria del liquidador»). |
publicaciones | integer | Cuántas publicaciones lleva en el Boletín. |
Dentro de origenes
| Campo | Tipo | Qué es |
|---|---|---|
publicacion | string | El nombre de la publicación («Nómina de personas jurídicas»). |
organismo | string | Quién la publica («Servicio de Impuestos Internos»). |
enlace | string | El enlace público al archivo o a la página de esa publicación: se abre sin cuenta. Cambia cuando el organismo publica una versión con otro nombre —la nómina anual, cada año—, así que léelo de acá y no lo guardes fijo. |
publicado | string | Cuándo publicó el SII ese archivo. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. null en el Boletín Concursal, que lleva su fecha en actualizado_al. |
actualizado_al | string | Solo en el Boletín Concursal: el día de su publicación más reciente que esta ficha incluye, el mismo de concursal.actualizado_al. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. null en las publicaciones del SII. |
campos | array | Qué campos de esta ficha salen de esa publicación. |
Cuándo responde cada cosa
- 200 El RUT está en el padrón. Descuenta una consulta.
- 401 No mandaste el header, o no empieza con dtr_. No descuenta.
- 401 La key viajó bien pero ya no sirve: la revocaste o la rotaste. No descuenta.
- 422 El dígito verificador no corresponde al cuerpo. No se cobra: no hubo consulta. No descuenta.
- 422 No tiene forma de RUT: cuerpo fuera de 7-8 dígitos, o los ocho caracteres sin guion, que son ambiguos. No descuenta.
- 503 El padrón todavía no tiene datos que responder. Es excepcional: reintenta más tarde y, si sigue, mira el estado del servicio. No descuenta.
-
429
Fuiste más rápido que las consultas por minuto de tu plan.
Retry-Afterdice cuánto esperar. No descuenta. - 402 Se agotaron las consultas del plan y no hay saldo de recargas. Las consultas se detienen hasta que renueven. No descuenta.
- 402 Se agotaron las consultas del plan, hay saldo de recargas, y el interruptor «usar mi saldo automáticamente» está apagado. Nada se cobra. No descuenta.
- 404 El RUT es válido pero el SII no lo tiene. SÍ descuenta lo que cuesta la operación pedida: «no está» también es información. Descuenta una consulta.
curl -s -i -H "Authorization: Bearer dtr_TU_KEY" \
https://api.datario.cl/v1/rut/61.704.000-K
import requests
r = requests.get(
"https://api.datario.cl/v1/rut/61.704.000-K",
headers={"Authorization": "Bearer dtr_TU_KEY"},
timeout=10,
)
cuerpo = r.json()
if r.status_code != 200:
raise SystemExit(f"{cuerpo['error']}: {cuerpo['detail']}")
print(cuerpo["razon_social"])
print(r.headers.get("X-Plan-Remaining"), "restantes")
const r = await fetch(
"https://api.datario.cl/v1/rut/61.704.000-K",
{ headers: { "Authorization": "Bearer dtr_TU_KEY" } },
);
const cuerpo = await r.json();
if (!r.ok) {
if (r.status === 429) {
const s = r.headers.get("Retry-After");
throw new Error(`Reintenta en ${s} s`);
}
throw new Error(`${cuerpo.error}: ${cuerpo.detail}`);
}
console.log(cuerpo.razon_social);
<?php
$ch = curl_init(
"https://api.datario.cl/v1/rut/61.704.000-K"
);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer dtr_TU_KEY"],
]);
$cuerpo = json_decode(curl_exec($ch), true);
$estado = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($estado !== 200) {
throw new Exception(
$cuerpo["error"] . ": " . $cuerpo["detail"]
);
}
echo $cuerpo["razon_social"];
using var http = new HttpClient();
http.DefaultRequestHeaders.Add(
"Authorization", "Bearer dtr_TU_KEY");
var r = await http.GetAsync(
"https://api.datario.cl/v1/rut/61.704.000-K");
var raiz = JsonDocument.Parse(
await r.Content.ReadAsStringAsync()).RootElement;
if (!r.IsSuccessStatusCode)
{
throw new Exception(
raiz.GetProperty("error").GetString() + ": " +
raiz.GetProperty("detail").GetString());
}
Console.WriteLine(
raiz.GetProperty("razon_social").GetString());
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/v1/rut/61.704.000-K"))
.header("Authorization", "Bearer dtr_TU_KEY")
.build();
var r = HttpClient.newHttpClient()
.send(req, BodyHandlers.ofString());
if (r.statusCode() != 200) {
// El cuerpo trae siempre {error, detail}.
throw new IOException(r.body());
}
System.out.println(r.body());
req, _ := http.NewRequest("GET",
"https://api.datario.cl/v1/rut/61.704.000-K", nil)
req.Header.Set("Authorization", "Bearer dtr_TU_KEY")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
var e struct {
Error string `json:"error"`
Detail string `json:"detail"`
}
json.NewDecoder(res.Body).Decode(&e)
log.Fatalf("%s: %s", e.Error, e.Detail)
}
var cuerpo map[string]any
json.NewDecoder(res.Body).Decode(&cuerpo)
fmt.Println(cuerpo["razon_social"])
uri = URI("https://api.datario.cl/v1/rut/61.704.000-K")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer dtr_TU_KEY"
res = Net::HTTP.start(
uri.host, uri.port, use_ssl: uri.scheme == "https"
) { |h| h.request(req) }
cuerpo = JSON.parse(res.body)
unless res.code == "200"
raise "#{cuerpo['error']}: #{cuerpo['detail']}"
end
puts cuerpo["razon_social"]
Set Variable [ $url ; Value:
"https://api.datario.cl/v1/rut/61.704.000-K" ]
Insert from URL [ Select ; With dialog: Off ; Target: $r ;
$url ; cURL options:
"-H \"Authorization: Bearer dtr_TU_KEY\"" ]
Set Variable [ $e ; Value: JSONGetElement ( $r ; "error" ) ]
If [ not IsEmpty ( $e ) ]
Show Custom Dialog [ $e & ": " &
JSONGetElement ( $r ; "detail" ) ]
Exit Script [ Text Result: $e ]
End If
Show Custom Dialog [
JSONGetElement ( $r ; "razon_social" ) ]
Respuestas
{
"rut": "61704000-K",
"rut_formateado": "61.704.000-K",
"es_empresa": true,
"fuente": "Nóminas públicas de contribuyentes, SII",
"padron_publicado": "2026-08-05T15:36:37+00:00",
"consultado_en": "2026-08-29T04:12:07+00:00",
"razon_social": "CORP NACIONAL DEL COBRE DE CHILE",
"actividades": [
{
"codigo": 40000,
"descripcion": "EXTRACCION Y PROCESAMIENTO DE COBRE",
"afecta_iva": true,
"desde": "1993-01-01"
},
{
"codigo": 351020,
"descripcion": "TRANSMISION DE ENERGIA ELECTRICA",
"afecta_iva": true,
"desde": "2012-11-16"
}
],
"domicilios": [
{
"tipo": "matriz",
"direccion": "HUERFANOS 1270",
"calle": "HUERFANOS 1270",
"numero": "",
"departamento": "",
"comuna": "SANTIAGO",
"ciudad": "",
"region": "XIII REGION METROPOLITANA",
"bloque": "",
"villa": "",
"vigente_desde": "2007-03-27"
},
{
"tipo": "sucursal",
"direccion": "AV. LA MONTANA 1550",
"calle": "AV. LA MONTANA",
"numero": "1550",
"departamento": "",
"comuna": "LAMPA",
"ciudad": "SANTIAGO",
"region": "XIII REGION METROPOLITANA",
"bloque": "",
"villa": "VALLE GRANDE",
"vigente_desde": "2012-03-20"
}
],
"casilla_intercambio": "",
"tipo_sociedad": "INSTITUCIONES FISCALES",
"subtipo_sociedad": "ORG. ADMINISTRACION PUBLICA",
"cod_subtipo": "517",
"inicio_actividades": "1993-01-01",
"termino_giro": null,
"tamano": {
"anio_comercial": 2024,
"tramo_ventas": {
"codigo": 13,
"descripcion": "4to Rango Gran Empresa",
"desde_uf": 1000000.01,
"hasta_uf": null,
"categoria": "Gran empresa"
},
"trabajadores": 16946,
"tramo_capital": null,
"regimen": {
"codigo": "no14",
"descripcion": "CONTRIBUYENTES NO SUJETOS AL ARTICULO 14"
},
"renta_presunta": false,
"rubro": {
"codigo": "B",
"descripcion": "EXPLOTACION DE MINAS Y CANTERAS"
},
"subrubro": "EXTRACCION Y PROCESAMIENTO DE COBRE",
"actividad_principal": 40000,
"primera_inscripcion": "1993-01-01",
"comuna": "SANTIAGO"
},
"gran_contribuyente": true,
"grupo_economico": 39,
"concursal": {
"fuente": "Boletín Concursal, Superintendencia de Insolvencia y Reemprendimiento",
"actualizado_al": "2026-09-09",
"procedimientos": []
},
"origenes": [
{
"publicacion": "Nómina de personas jurídicas",
"organismo": "Servicio de Impuestos Internos",
"enlace": "https://www.sii.cl/estadisticas/nominas/PUB_NOMBRES_PJ.zip",
"publicado": "2026-08-05T15:32:50+00:00",
"actualizado_al": null,
"campos": [
"razon_social",
"tipo_sociedad",
"subtipo_sociedad",
"cod_subtipo",
"inicio_actividades",
"termino_giro"
]
},
{
"publicacion": "Nómina de actividades económicas",
"organismo": "Servicio de Impuestos Internos",
"enlace": "https://www.sii.cl/estadisticas/nominas/PUB_NOM_ACTECOS.zip",
"publicado": "2026-08-05T15:34:49+00:00",
"actualizado_al": null,
"campos": [
"actividades"
]
},
{
"publicacion": "Nómina de direcciones",
"organismo": "Servicio de Impuestos Internos",
"enlace": "https://www.sii.cl/estadisticas/nominas/PUB_NOM_DIRECCIONES.zip",
"publicado": "2026-08-05T15:36:37+00:00",
"actualizado_al": null,
"campos": [
"domicilios"
]
},
{
"publicacion": "Nómina anual de empresas",
"organismo": "Servicio de Impuestos Internos",
"enlace": "https://www.sii.cl/estadisticas/nominas/PUB_EMPRESAS_PJ_2020_A_2024.zip",
"publicado": "2026-01-29T15:31:29+00:00",
"actualizado_al": null,
"campos": [
"tamano"
]
},
{
"publicacion": "Nómina de Grandes Contribuyentes",
"organismo": "Servicio de Impuestos Internos",
"enlace": "https://www.sii.cl/normativa_legislacion/resoluciones/2025/reso208_anexo1.pdf",
"publicado": "2025-12-31T15:38:32+00:00",
"actualizado_al": null,
"campos": [
"gran_contribuyente",
"grupo_economico"
]
},
{
"publicacion": "Boletín Concursal",
"organismo": "Superintendencia de Insolvencia y Reemprendimiento",
"enlace": "https://www.boletinconcursal.cl/boletin/procedimientos",
"publicado": null,
"actualizado_al": "2026-09-09",
"campos": [
"concursal"
]
}
]
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
{
"error": "api_key_invalida",
"detail": "Falta la API key: envíala en el header Authorization: Bearer dtr_…."
}
{
"error": "api_key_invalida",
"detail": "La API key no existe o fue revocada."
}
{
"error": "rut_invalido",
"detail": "El RUT no es válido: revisa el dígito verificador."
}
{
"error": "rut_invalido",
"detail": "Eso no parece un RUT: son 7 u 8 dígitos más el verificador."
}
{
"error": "padron_no_disponible",
"detail": "El padrón aún no está cargado; intenta más tarde. Estado del servicio: https://status.datario.cl"
}
{
"error": "limite_de_velocidad",
"detail": "Superaste las consultas por minuto de tu plan: X-RateLimit-Limit dice cuántas y Retry-After cuánto esperar."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset Retry-After
{
"error": "sin_saldo",
"detail": "Se acabaron las consultas de tu plan y no te queda saldo. Renuevan el día que tu plan cumple el mes (X-Plan-Reset); para seguir ahora, recarga saldo (no vence) en https://datario.cl/panel/packs, o contrata el plan de ese mismo volumen en https://datario.cl/panel/planes, que sale más barato por consulta"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "saldo_protegido",
"detail": "Las consultas del plan no alcanzan y tu saldo está protegido (pediste no gastarlo automáticamente): actívalo en https://datario.cl/panel/configuracion/avisos o renueva tu plan"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "rut_no_registrado",
"detail": "El SII no registra datos para 12345678-5."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
Una empresa con un procedimiento concursal
Un fragmento de la respuesta de GET /v1/rut/96.892.540-7: la identidad del RUT y concursal.
{
"rut": "96892540-7",
"rut_formateado": "96.892.540-7",
"razon_social": "NOVA AUSTRAL S A",
"concursal": {
"fuente": "Boletín Concursal, Superintendencia de Insolvencia y Reemprendimiento",
"actualizado_al": "2026-09-09",
"procedimientos": [
{
"rol_causa": "C-110-2023",
"tribunal": "Juzgado de Letras y Garantía de Porvenir",
"tipo": "Reorganización de la Empresa Deudora",
"materia": "reorganizacion",
"apertura": "2023-07-10",
"ultima_actuacion": "2026-03-02",
"ultima_actuacion_nombre": "Resolución que declara aprobado el acuerdo por vencer el plazo para impugnarlo",
"publicaciones": 121
}
]
}
}
GET /v1/rut/{rut}/actividades
Solo las actividades
Los giros y su afectación de IVA, sin domicilios ni casilla. Útil cuando lo único que necesitas decidir es qué documento tributario corresponde.
Lo que devuelve
| Campo | Tipo | Qué es |
|---|---|---|
rut | string | El RUT que consultaste, normalizado: con guion y sin puntos. |
rut_formateado | string | El mismo RUT listo para mostrar: con puntos y guion. |
es_empresa | boolean | true si el RUT es de una empresa y false si es de una persona. Sirve para decidir qué pedirle a quien se está registrando. |
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Nóminas públicas de contribuyentes, SII»). Es constante para esta llamada: guárdalo una vez y no lo parsees. |
padron_publicado | string | Qué versión de los datos respondió. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. Cámbiala de zona al mostrarla. |
consultado_en | string | Cuándo se respondió esta llamada. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. |
actividades | array | Todos sus giros. Viene VACÍO en casi la mitad de las empresas, así que no es un caso raro: cuenta con él. Las proporciones de este bloque salen de la publicación de agosto de 2026. |
Dentro de actividades
| Campo | Tipo | Qué es |
|---|---|---|
codigo | integer | El código de actividad económica (ACTECO) que va en el DTE. |
descripcion | string | Ese giro, escrito. |
afecta_iva | boolean | true si el giro está gravado con IVA. Es lo que decide qué documento tributario corresponde emitir. |
desde | string | Desde cuándo tiene este giro. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. null si no consta: uno de cada treinta y cuatro mil. |
Cuándo responde cada cosa
- 200 El RUT está en el padrón. Descuenta una consulta.
- 401 No mandaste el header, o no empieza con dtr_. No descuenta.
- 401 La key viajó bien pero ya no sirve: la revocaste o la rotaste. No descuenta.
- 422 El dígito verificador no corresponde al cuerpo. No se cobra: no hubo consulta. No descuenta.
- 422 No tiene forma de RUT: cuerpo fuera de 7-8 dígitos, o los ocho caracteres sin guion, que son ambiguos. No descuenta.
- 503 El padrón todavía no tiene datos que responder. Es excepcional: reintenta más tarde y, si sigue, mira el estado del servicio. No descuenta.
-
429
Fuiste más rápido que las consultas por minuto de tu plan.
Retry-Afterdice cuánto esperar. No descuenta. - 402 Se agotaron las consultas del plan y no hay saldo de recargas. Las consultas se detienen hasta que renueven. No descuenta.
- 402 Se agotaron las consultas del plan, hay saldo de recargas, y el interruptor «usar mi saldo automáticamente» está apagado. Nada se cobra. No descuenta.
- 404 El RUT es válido pero el SII no lo tiene. SÍ descuenta lo que cuesta la operación pedida: «no está» también es información. Descuenta una consulta.
curl -s -i -H "Authorization: Bearer dtr_TU_KEY" \
https://api.datario.cl/v1/rut/61.704.000-K/actividades
import requests
r = requests.get(
"https://api.datario.cl/v1/rut/61.704.000-K/actividades",
headers={"Authorization": "Bearer dtr_TU_KEY"},
timeout=10,
)
cuerpo = r.json()
if r.status_code != 200:
raise SystemExit(f"{cuerpo['error']}: {cuerpo['detail']}")
print(cuerpo["actividades"][0]["descripcion"])
print(r.headers.get("X-Plan-Remaining"), "restantes")
const r = await fetch(
"https://api.datario.cl/v1/rut/61.704.000-K/actividades",
{ headers: { "Authorization": "Bearer dtr_TU_KEY" } },
);
const cuerpo = await r.json();
if (!r.ok) {
if (r.status === 429) {
const s = r.headers.get("Retry-After");
throw new Error(`Reintenta en ${s} s`);
}
throw new Error(`${cuerpo.error}: ${cuerpo.detail}`);
}
console.log(cuerpo.actividades[0].descripcion);
<?php
$ch = curl_init(
"https://api.datario.cl/v1/rut/61.704.000-K/actividades"
);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer dtr_TU_KEY"],
]);
$cuerpo = json_decode(curl_exec($ch), true);
$estado = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($estado !== 200) {
throw new Exception(
$cuerpo["error"] . ": " . $cuerpo["detail"]
);
}
echo $cuerpo["actividades"][0]["descripcion"];
using var http = new HttpClient();
http.DefaultRequestHeaders.Add(
"Authorization", "Bearer dtr_TU_KEY");
var r = await http.GetAsync(
"https://api.datario.cl/v1/rut/61.704.000-K/actividades");
var raiz = JsonDocument.Parse(
await r.Content.ReadAsStringAsync()).RootElement;
if (!r.IsSuccessStatusCode)
{
throw new Exception(
raiz.GetProperty("error").GetString() + ": " +
raiz.GetProperty("detail").GetString());
}
var item = raiz.GetProperty("actividades")[0];
Console.WriteLine(
item.GetProperty("descripcion").GetString());
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/v1/rut/61.704.000-K/actividades"))
.header("Authorization", "Bearer dtr_TU_KEY")
.build();
var r = HttpClient.newHttpClient()
.send(req, BodyHandlers.ofString());
if (r.statusCode() != 200) {
// El cuerpo trae siempre {error, detail}.
throw new IOException(r.body());
}
System.out.println(r.body());
req, _ := http.NewRequest("GET",
"https://api.datario.cl/v1/rut/61.704.000-K/actividades", nil)
req.Header.Set("Authorization", "Bearer dtr_TU_KEY")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
var e struct {
Error string `json:"error"`
Detail string `json:"detail"`
}
json.NewDecoder(res.Body).Decode(&e)
log.Fatalf("%s: %s", e.Error, e.Detail)
}
var cuerpo map[string]any
json.NewDecoder(res.Body).Decode(&cuerpo)
fmt.Println(cuerpo["actividades"])
uri = URI("https://api.datario.cl/v1/rut/61.704.000-K/actividades")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer dtr_TU_KEY"
res = Net::HTTP.start(
uri.host, uri.port, use_ssl: uri.scheme == "https"
) { |h| h.request(req) }
cuerpo = JSON.parse(res.body)
unless res.code == "200"
raise "#{cuerpo['error']}: #{cuerpo['detail']}"
end
puts cuerpo["actividades"][0]["descripcion"]
Set Variable [ $url ; Value:
"https://api.datario.cl/v1/rut/61.704.000-K/actividades" ]
Insert from URL [ Select ; With dialog: Off ; Target: $r ;
$url ; cURL options:
"-H \"Authorization: Bearer dtr_TU_KEY\"" ]
Set Variable [ $e ; Value: JSONGetElement ( $r ; "error" ) ]
If [ not IsEmpty ( $e ) ]
Show Custom Dialog [ $e & ": " &
JSONGetElement ( $r ; "detail" ) ]
Exit Script [ Text Result: $e ]
End If
Show Custom Dialog [
JSONGetElement ( $r ; "actividades[0].descripcion" ) ]
Respuestas
{
"rut": "61704000-K",
"rut_formateado": "61.704.000-K",
"es_empresa": true,
"fuente": "Nóminas públicas de contribuyentes, SII",
"padron_publicado": "2026-08-05T15:36:37+00:00",
"consultado_en": "2026-08-29T04:12:07+00:00",
"actividades": [
{
"codigo": 40000,
"descripcion": "EXTRACCION Y PROCESAMIENTO DE COBRE",
"afecta_iva": true,
"desde": "1993-01-01"
},
{
"codigo": 351020,
"descripcion": "TRANSMISION DE ENERGIA ELECTRICA",
"afecta_iva": true,
"desde": "2012-11-16"
}
]
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
{
"error": "api_key_invalida",
"detail": "Falta la API key: envíala en el header Authorization: Bearer dtr_…."
}
{
"error": "api_key_invalida",
"detail": "La API key no existe o fue revocada."
}
{
"error": "rut_invalido",
"detail": "El RUT no es válido: revisa el dígito verificador."
}
{
"error": "rut_invalido",
"detail": "Eso no parece un RUT: son 7 u 8 dígitos más el verificador."
}
{
"error": "padron_no_disponible",
"detail": "El padrón aún no está cargado; intenta más tarde. Estado del servicio: https://status.datario.cl"
}
{
"error": "limite_de_velocidad",
"detail": "Superaste las consultas por minuto de tu plan: X-RateLimit-Limit dice cuántas y Retry-After cuánto esperar."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset Retry-After
{
"error": "sin_saldo",
"detail": "Se acabaron las consultas de tu plan y no te queda saldo. Renuevan el día que tu plan cumple el mes (X-Plan-Reset); para seguir ahora, recarga saldo (no vence) en https://datario.cl/panel/packs, o contrata el plan de ese mismo volumen en https://datario.cl/panel/planes, que sale más barato por consulta"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "saldo_protegido",
"detail": "Las consultas del plan no alcanzan y tu saldo está protegido (pediste no gastarlo automáticamente): actívalo en https://datario.cl/panel/configuracion/avisos o renueva tu plan"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "rut_no_registrado",
"detail": "El SII no registra datos para 12345678-5."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
GET /v1/rut/{rut}/domicilios
Solo los domicilios
Casa matriz y sucursales, con comuna y región. Útil para autocompletar una dirección o para saber dónde opera un proveedor.
Lo que devuelve
| Campo | Tipo | Qué es |
|---|---|---|
rut | string | El RUT que consultaste, normalizado: con guion y sin puntos. |
rut_formateado | string | El mismo RUT listo para mostrar: con puntos y guion. |
es_empresa | boolean | true si el RUT es de una empresa y false si es de una persona. Sirve para decidir qué pedirle a quien se está registrando. |
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Nóminas públicas de contribuyentes, SII»). Es constante para esta llamada: guárdalo una vez y no lo parsees. |
padron_publicado | string | Qué versión de los datos respondió. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. Cámbiala de zona al mostrarla. |
consultado_en | string | Cuándo se respondió esta llamada. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. |
domicilios | array | Su casa matriz y todas sus sucursales. Viene vacío en una de cada noventa empresas. |
Dentro de domicilios
| Campo | Tipo | Qué es |
|---|---|---|
tipo | string | matriz o sucursal. |
direccion | string | La dirección ya compuesta, lista para imprimir. Si solo vas a mostrarla, usa este campo y no los de abajo. No incluye bloque ni villa. |
calle | string | La calle. A veces trae el número adentro y entonces numero viene vacío: si necesitas los componentes por separado, cuenta con ese caso. |
numero | string | El número, cuando viene aparte. Cadena vacía en cerca de una de cada tres direcciones, casi siempre porque la calle ya lo trae adentro. |
departamento | string | Oficina, departamento o local. Cadena vacía en tres de cada cuatro direcciones. |
comuna | string | La comuna. |
ciudad | string | La ciudad. Cadena vacía en dos de cada cinco direcciones. |
region | string | La región, con su numeral romano. |
bloque | string | Bloque o torre. Cadena vacía en diecinueve de cada veinte. |
villa | string | Villa o población. Cadena vacía en tres de cada cuatro. |
vigente_desde | string | Desde cuándo rige esta dirección. ISO 8601 solo fecha (1993-01-01), sin hora ni zona. Puede venir null si no consta, aunque en esta publicación viene siempre. |
Cuándo responde cada cosa
- 200 El RUT está en el padrón. Descuenta una consulta.
- 401 No mandaste el header, o no empieza con dtr_. No descuenta.
- 401 La key viajó bien pero ya no sirve: la revocaste o la rotaste. No descuenta.
- 422 El dígito verificador no corresponde al cuerpo. No se cobra: no hubo consulta. No descuenta.
- 422 No tiene forma de RUT: cuerpo fuera de 7-8 dígitos, o los ocho caracteres sin guion, que son ambiguos. No descuenta.
- 503 El padrón todavía no tiene datos que responder. Es excepcional: reintenta más tarde y, si sigue, mira el estado del servicio. No descuenta.
-
429
Fuiste más rápido que las consultas por minuto de tu plan.
Retry-Afterdice cuánto esperar. No descuenta. - 402 Se agotaron las consultas del plan y no hay saldo de recargas. Las consultas se detienen hasta que renueven. No descuenta.
- 402 Se agotaron las consultas del plan, hay saldo de recargas, y el interruptor «usar mi saldo automáticamente» está apagado. Nada se cobra. No descuenta.
- 404 El RUT es válido pero el SII no lo tiene. SÍ descuenta lo que cuesta la operación pedida: «no está» también es información. Descuenta una consulta.
curl -s -i -H "Authorization: Bearer dtr_TU_KEY" \
https://api.datario.cl/v1/rut/61.704.000-K/domicilios
import requests
r = requests.get(
"https://api.datario.cl/v1/rut/61.704.000-K/domicilios",
headers={"Authorization": "Bearer dtr_TU_KEY"},
timeout=10,
)
cuerpo = r.json()
if r.status_code != 200:
raise SystemExit(f"{cuerpo['error']}: {cuerpo['detail']}")
print(cuerpo["domicilios"][0]["direccion"])
print(r.headers.get("X-Plan-Remaining"), "restantes")
const r = await fetch(
"https://api.datario.cl/v1/rut/61.704.000-K/domicilios",
{ headers: { "Authorization": "Bearer dtr_TU_KEY" } },
);
const cuerpo = await r.json();
if (!r.ok) {
if (r.status === 429) {
const s = r.headers.get("Retry-After");
throw new Error(`Reintenta en ${s} s`);
}
throw new Error(`${cuerpo.error}: ${cuerpo.detail}`);
}
console.log(cuerpo.domicilios[0].direccion);
<?php
$ch = curl_init(
"https://api.datario.cl/v1/rut/61.704.000-K/domicilios"
);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer dtr_TU_KEY"],
]);
$cuerpo = json_decode(curl_exec($ch), true);
$estado = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($estado !== 200) {
throw new Exception(
$cuerpo["error"] . ": " . $cuerpo["detail"]
);
}
echo $cuerpo["domicilios"][0]["direccion"];
using var http = new HttpClient();
http.DefaultRequestHeaders.Add(
"Authorization", "Bearer dtr_TU_KEY");
var r = await http.GetAsync(
"https://api.datario.cl/v1/rut/61.704.000-K/domicilios");
var raiz = JsonDocument.Parse(
await r.Content.ReadAsStringAsync()).RootElement;
if (!r.IsSuccessStatusCode)
{
throw new Exception(
raiz.GetProperty("error").GetString() + ": " +
raiz.GetProperty("detail").GetString());
}
var item = raiz.GetProperty("domicilios")[0];
Console.WriteLine(
item.GetProperty("direccion").GetString());
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/v1/rut/61.704.000-K/domicilios"))
.header("Authorization", "Bearer dtr_TU_KEY")
.build();
var r = HttpClient.newHttpClient()
.send(req, BodyHandlers.ofString());
if (r.statusCode() != 200) {
// El cuerpo trae siempre {error, detail}.
throw new IOException(r.body());
}
System.out.println(r.body());
req, _ := http.NewRequest("GET",
"https://api.datario.cl/v1/rut/61.704.000-K/domicilios", nil)
req.Header.Set("Authorization", "Bearer dtr_TU_KEY")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != 200 {
var e struct {
Error string `json:"error"`
Detail string `json:"detail"`
}
json.NewDecoder(res.Body).Decode(&e)
log.Fatalf("%s: %s", e.Error, e.Detail)
}
var cuerpo map[string]any
json.NewDecoder(res.Body).Decode(&cuerpo)
fmt.Println(cuerpo["domicilios"])
uri = URI("https://api.datario.cl/v1/rut/61.704.000-K/domicilios")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer dtr_TU_KEY"
res = Net::HTTP.start(
uri.host, uri.port, use_ssl: uri.scheme == "https"
) { |h| h.request(req) }
cuerpo = JSON.parse(res.body)
unless res.code == "200"
raise "#{cuerpo['error']}: #{cuerpo['detail']}"
end
puts cuerpo["domicilios"][0]["direccion"]
Set Variable [ $url ; Value:
"https://api.datario.cl/v1/rut/61.704.000-K/domicilios" ]
Insert from URL [ Select ; With dialog: Off ; Target: $r ;
$url ; cURL options:
"-H \"Authorization: Bearer dtr_TU_KEY\"" ]
Set Variable [ $e ; Value: JSONGetElement ( $r ; "error" ) ]
If [ not IsEmpty ( $e ) ]
Show Custom Dialog [ $e & ": " &
JSONGetElement ( $r ; "detail" ) ]
Exit Script [ Text Result: $e ]
End If
Show Custom Dialog [
JSONGetElement ( $r ; "domicilios[0].direccion" ) ]
Respuestas
{
"rut": "61704000-K",
"rut_formateado": "61.704.000-K",
"es_empresa": true,
"fuente": "Nóminas públicas de contribuyentes, SII",
"padron_publicado": "2026-08-05T15:36:37+00:00",
"consultado_en": "2026-08-29T04:12:07+00:00",
"domicilios": [
{
"tipo": "matriz",
"direccion": "HUERFANOS 1270",
"calle": "HUERFANOS 1270",
"numero": "",
"departamento": "",
"comuna": "SANTIAGO",
"ciudad": "",
"region": "XIII REGION METROPOLITANA",
"bloque": "",
"villa": "",
"vigente_desde": "2007-03-27"
},
{
"tipo": "sucursal",
"direccion": "AV. LA MONTANA 1550",
"calle": "AV. LA MONTANA",
"numero": "1550",
"departamento": "",
"comuna": "LAMPA",
"ciudad": "SANTIAGO",
"region": "XIII REGION METROPOLITANA",
"bloque": "",
"villa": "VALLE GRANDE",
"vigente_desde": "2012-03-20"
}
]
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
{
"error": "api_key_invalida",
"detail": "Falta la API key: envíala en el header Authorization: Bearer dtr_…."
}
{
"error": "api_key_invalida",
"detail": "La API key no existe o fue revocada."
}
{
"error": "rut_invalido",
"detail": "El RUT no es válido: revisa el dígito verificador."
}
{
"error": "rut_invalido",
"detail": "Eso no parece un RUT: son 7 u 8 dígitos más el verificador."
}
{
"error": "padron_no_disponible",
"detail": "El padrón aún no está cargado; intenta más tarde. Estado del servicio: https://status.datario.cl"
}
{
"error": "limite_de_velocidad",
"detail": "Superaste las consultas por minuto de tu plan: X-RateLimit-Limit dice cuántas y Retry-After cuánto esperar."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset Retry-After
{
"error": "sin_saldo",
"detail": "Se acabaron las consultas de tu plan y no te queda saldo. Renuevan el día que tu plan cumple el mes (X-Plan-Reset); para seguir ahora, recarga saldo (no vence) en https://datario.cl/panel/packs, o contrata el plan de ese mismo volumen en https://datario.cl/panel/planes, que sale más barato por consulta"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "saldo_protegido",
"detail": "Las consultas del plan no alcanzan y tu saldo está protegido (pediste no gastarlo automáticamente): actívalo en https://datario.cl/panel/configuracion/avisos o renueva tu plan"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"error": "rut_no_registrado",
"detail": "El SII no registra datos para 12345678-5."
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Credits-Remaining
Probar en la consola Este producto por SOAP Este producto por GraphQL Este producto por MCP Qué es Consulta de RUT