REST · ¿Está creciendo?
Evolución de tamaño
El tamaño de cada empresa año comercial por año comercial: tramo de ventas, trabajadores, capital y régimen, desde el primer año que publica el SII. 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}/tamanos
Evolución de tamaño
El tamaño del RUT en cada año comercial que el SII publicó en su nómina anual, del más reciente al más viejo: tramo de ventas con su categoría, trabajadores, capital, régimen y rubro. La lista vacía también es respuesta: el SII nunca lo clasificó.
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 número del RUT es de 50 millones o más, el rango en que están casi todas las empresas y otras entidades, y false si es menor, el de las personas. Se calcula sobre el número y no dice si el RUT existe: las EIRL, las sociedades de hecho y las sucesiones dan true —las dos últimas llegan sin razón social, porque se entregan como una persona—, y cerca de una de cada 140 entidades con razón social tiene un número menor y da false. Sirve para decidir qué pedirle a quien se está registrando. Las proporciones de este bloque salen de la publicación de agosto de 2026. |
anios | array | Un elemento por año comercial, del más reciente al más viejo. Vacía si el SII nunca clasificó a este RUT en su nómina anual. |
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Nómina anual de empresas, SII»). Es constante para esta llamada: guárdalo una vez y no lo parsees. |
publicado | string | De cuándo es la nómina anual que respondió. ISO 8601 con hora y zona (2026-08-05T15:36:37+00:00), siempre en UTC. Es otro archivo que el padrón: otra fecha que padron_publicado. |
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. |
Dentro de anios
| Campo | Tipo | Qué es |
|---|---|---|
anio_comercial | integer | El año comercial de esta fila. Un ENTERO (2024), no una fecha. Las proporciones de este bloque salen de la nómina anual de los años comerciales 2020 a 2024. |
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. |
Dentro de anios.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 anios.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 anios.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 anios.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. |
Cuándo responde cada cosa
- 200 El RUT está en el padrón. Descuenta una consulta, también con la lista vacía: «el SII nunca lo clasificó» es informació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 No quedan consultas en el plan y el saldo no cubre las que faltan, o el saldo no cubre lo que la operación cobra en pesos. Nada se cobra. No descuenta.
- 402 El plan no alcanza, hay saldo, y el interruptor «usar mi saldo automáticamente» está apagado. Nada se cobra. No descuenta.
-
503
La llamada llegó mientras se aplicaba una publicación nueva del padrón y esperó todo lo que espera sin poder leerlo. No descuenta: si ya se había descontado, se devuelve. Pasa solo mientras esa publicación se aplica, casi siempre de madrugada: reintenta pasado el
Retry-After. 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/tamanos
import requests
r = requests.get(
"https://api.datario.cl/v1/rut/61.704.000-K/tamanos",
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["anios"][0]["anio_comercial"])
print(r.headers.get("X-Plan-Remaining"), "restantes")
const r = await fetch(
"https://api.datario.cl/v1/rut/61.704.000-K/tamanos",
{ 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.anios[0].anio_comercial);
<?php
$ch = curl_init(
"https://api.datario.cl/v1/rut/61.704.000-K/tamanos"
);
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["anios"][0]["anio_comercial"];
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/tamanos");
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("anios")[0];
Console.WriteLine(
item.GetProperty("anio_comercial").GetString());
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/v1/rut/61.704.000-K/tamanos"))
.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/tamanos", 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["anios"])
uri = URI("https://api.datario.cl/v1/rut/61.704.000-K/tamanos")
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["anios"][0]["anio_comercial"]
Set Variable [ $url ; Value:
"https://api.datario.cl/v1/rut/61.704.000-K/tamanos" ]
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 ; "anios[0].anio_comercial" ) ]
Respuestas
{
"rut": "61704000-K",
"rut_formateado": "61.704.000-K",
"es_empresa": true,
"anios": [
{
"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"
}
],
"fuente": "Nómina anual de empresas, SII",
"publicado": "2026-01-29T15:31:29+00:00",
"consultado_en": "2026-08-29T04:12:07+00:00"
}
El ejemplo muestra el año comercial más reciente; la respuesta trae todos los que el SII publicó para este RUT, uno por elemento.
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset X-Plan-Limit X-Plan-Remaining X-Plan-Reset X-Balance-CLP X-Charged
{
"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."
}
{
"error": "rut_invalido",
"detail": "El RUT no es válido."
}
{
"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": "Tu plan y tu saldo no alcanzan para esta operación. Las consultas del plan renuevan el día que cumple el mes (X-Plan-Reset); para seguir ahora, recarga saldo (no vence) en https://datario.cl/panel/recargas, o contrata un plan más grande 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": "Tu plan no alcanza para esta operación 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": "padron_actualizandose",
"detail": "El padrón se está actualizando: reintenta en unos segundos (Retry-After). Si sigue fallando, mira https://status.datario.cl"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset Retry-After
{
"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-Balance-CLP X-Charged
Probar en la consola Este producto por SOAP Este producto por GraphQL Este producto por MCP Qué es Evolución de tamaño