REST · ¿Quiénes se parecen a mi cliente?
Prospección
Listas de empresas por tamaño, rubro, régimen y comuna de su casa matriz, sin escribir un nombre, y cuántas son antes de pedirlas. 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/prospeccion
Prospección de empresas
Empresas por lo que son —tamaño, rubro, régimen y la comuna de su casa matriz—, sin escribir un nombre, en el orden de su RUT. Descuenta una consulta por empresa que no hayas recibido antes en este ciclo: pedir de nuevo una ya recibida no descuenta, y la página vacía descuenta una. Cada plan entrega un máximo de empresas por ciclo, y antes de pedirlas puedes contarlas gratis.
Parámetros
| Parámetro | Tipo | Qué es |
|---|---|---|
categoria | string | El tamaño: micro, pequena, mediana, grande, o varios separados por coma. Según el tramo de ventas del año comercial más reciente. |
tramo_minimo | integer | Tramo de ventas mínimo, 1 a 13 (el tramo_ventas.codigo). |
tramo_maximo | integer | Tramo de ventas máximo, 1 a 13. |
trabajadores_minimo | integer | Trabajadores mínimos del año comercial más reciente. |
trabajadores_maximo | integer | Trabajadores máximos del año comercial más reciente. |
rubro | string | La letra de la sección CIIU del rubro (B es minería), o varias separadas por coma. |
regimen | string | El régimen tributario: 14A, 14D, 14D8, no14, otros, o varios separados por coma. |
actividad | integer | Código numérico de un giro (el codigo de las actividades). |
region | string | La región de la casa matriz: su código (13) o su nombre («Metropolitana»). |
provincia | string | La provincia de la casa matriz: su código (131) o su nombre. |
comuna | string | La comuna de la casa matriz: su código (13101) o su nombre («Santiago»). |
vigentes | boolean | true (por defecto) deja solo las empresas sin término de giro; false las incluye. |
crecio | boolean | true deja solo las empresas que subieron de tamaño —de micro a pequeña, de pequeña a mediana o de mediana a grande— entre su último año comercial y el anterior, los dos clasificados por el SII; sin el año anterior no cuenta como crecida. false (por defecto) no filtra por eso. |
limite | integer | Empresas por página: 1 a 100. Por defecto 25. |
pagina | string | El pagina_siguiente de la respuesta anterior. Lleva los filtros adentro: o no los repites, o los repites todos iguales. |
Lo que devuelve
| Campo | Tipo | Qué es |
|---|---|---|
filtros | object | La pregunta como se leyó: los lugares en código y los tamaños por su nombre. |
empresas | array | Las empresas de la página. Vacía si ninguna calza. |
nuevas | integer | Cuántas de la página no habías recibido en este ciclo: las que descontaron. |
hay_mas | boolean | true si quedan más empresas por pedir. |
pagina_siguiente | string | Pásalo tal cual en pagina para pedir la siguiente. null cuando no hay más. Lleva los filtros adentro: no los repitas distintos. |
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Nóminas públicas de contribuyentes y nómina anual de empresas, 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. |
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 filtros
| Campo | Tipo | Qué es |
|---|---|---|
categoria | array | El tamaño: micro, pequena, mediana, grande, o varios separados por coma. Según el tramo de ventas del año comercial más reciente. |
tramo_minimo | integer | Tramo de ventas mínimo, 1 a 13 (el tramo_ventas.codigo). |
tramo_maximo | integer | Tramo de ventas máximo, 1 a 13. |
trabajadores_minimo | integer | Trabajadores mínimos del año comercial más reciente. |
trabajadores_maximo | integer | Trabajadores máximos del año comercial más reciente. |
rubro | array | La letra de la sección CIIU del rubro (B es minería), o varias separadas por coma. |
regimen | array | El régimen tributario: 14A, 14D, 14D8, no14, otros, o varios separados por coma. |
actividad | integer | Código numérico de un giro (el codigo de las actividades). |
region | string | La región de la casa matriz: su código (13) o su nombre («Metropolitana»). |
provincia | string | La provincia de la casa matriz: su código (131) o su nombre. |
comuna | string | La comuna de la casa matriz: su código (13101) o su nombre («Santiago»). |
vigentes | boolean | true (por defecto) deja solo las empresas sin término de giro; false las incluye. |
crecio | boolean | true deja solo las empresas que subieron de tamaño —de micro a pequeña, de pequeña a mediana o de mediana a grande— entre su último año comercial y el anterior, los dos clasificados por el SII; sin el año anterior no cuenta como crecida. false (por defecto) no filtra por eso. |
Dentro de empresas
| Campo | Tipo | Qué es |
|---|---|---|
rut | string | El RUT, normalizado: con guion y sin puntos. Pide la ficha con él. |
rut_formateado | string | El mismo RUT listo para mostrar. |
razon_social | string | El nombre legal. |
vigente | boolean | true si no tiene término de giro ante el SII. |
anio_comercial | integer | El año comercial del tamaño. Un ENTERO (2024), no una fecha. null si el SII no la clasifica en su nómina anual. |
tramo_ventas | object | El tramo de ventas con su categoría, con la forma del bloque tamano de la ficha. null si el SII no la clasifica. |
trabajadores | integer | Sus trabajadores. null si el SII no la clasifica. |
rubro | object | Su rubro: la letra CIIU y el texto del SII. null si no lo informa. |
subrubro | string | Su subrubro, tal como lo escribe el SII. null si no lo informa. |
regimen | object | Su régimen tributario. null si el SII no lo informa. |
casa_matriz | object | La ubicación de su casa matriz vigente: comuna, provincia y región. null si su comuna no calza con la división oficial. |
Dentro de empresas.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 empresas.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 empresas.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 empresas.casa_matriz
| Campo | Tipo | Qué es |
|---|---|---|
comuna | object | Su comuna. |
provincia | object | Su provincia. |
region | object | Su región. |
Dentro de empresas.casa_matriz.comuna
| Campo | Tipo | Qué es |
|---|---|---|
codigo | string | El código único territorial. Compara contra este. |
nombre | string | El nombre oficial. |
Dentro de empresas.casa_matriz.provincia
| Campo | Tipo | Qué es |
|---|---|---|
codigo | string | El código único territorial. Compara contra este. |
nombre | string | El nombre oficial. |
Dentro de empresas.casa_matriz.region
| Campo | Tipo | Qué es |
|---|---|---|
codigo | string | El código único territorial. Compara contra este. |
nombre | string | El nombre oficial. |
Cuándo responde cada cosa
- 200 Hay página que devolver — también la vacía, que descuenta una. Con empresas, descuenta una por cada una que no hayas recibido en este ciclo. 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
categoriano es un tamaño. No descuenta. - 422 Un tramo fuera de la leyenda del SII. No descuenta.
- 422 Un mínimo o máximo de trabajadores negativo. No descuenta.
- 422 Un mínimo mayor que su máximo. No descuenta.
-
422
rubrono es una sección CIIU. No descuenta. -
422
regimenno es uno de los publicados. No descuenta. -
422
regionno es una región de Chile. No descuenta. -
422
provinciano es una provincia de Chile. No descuenta. -
422
comunano es una comuna de Chile. No descuenta. -
422
vigentesno estruenifalse. No descuenta. -
422
creciono estruenifalse. No descuenta. -
422
El giro se filtra por su código (el mismo
codigode las actividades), no por texto. No descuenta. -
422
limitequedó fuera del rango publicado. No se cobra: no hubo lectura. No descuenta. - 422 El token de página llegó adulterado o incompleto. Se pide de nuevo desde la primera. No descuenta.
-
422
Con
pagina, los filtros van DENTRO del token. Idénticos se aceptan; distintos no. 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.
- 503 La lectura tardó más que su techo de tiempo. No se cobra: agrega un filtro. No descuenta.
-
429
Fuiste más rápido que las consultas por minuto de tu plan.
Retry-Afterdice cuánto esperar. No descuenta. -
429
Ya recibiste en este ciclo todas las empresas que tu plan entrega. No descuenta;
X-Plan-Resetdice cuándo vuelven. 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.
curl -s -i -G -H "Authorization: Bearer dtr_TU_KEY" \
https://api.datario.cl/v1/prospeccion \
-d categoria=grande \
-d rubro=B \
-d comuna=13101 \
-d trabajadores_minimo=10000
import requests
r = requests.get(
"https://api.datario.cl/v1/prospeccion"
"?categoria=grande&rubro=B&comuna=13101"
"&trabajadores_minimo=10000",
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["empresas"][0]["razon_social"])
print(r.headers.get("X-Plan-Remaining"), "restantes")
const r = await fetch(
"https://api.datario.cl/v1/prospeccion" +
"?categoria=grande&rubro=B&comuna=13101" +
"&trabajadores_minimo=10000",
{ 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.empresas[0].razon_social);
<?php
$ch = curl_init(
"https://api.datario.cl/v1/prospeccion" .
"?categoria=grande&rubro=B&comuna=13101" .
"&trabajadores_minimo=10000"
);
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["empresas"][0]["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/prospeccion" +
"?categoria=grande&rubro=B&comuna=13101" +
"&trabajadores_minimo=10000");
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("empresas")[0];
Console.WriteLine(
item.GetProperty("razon_social").GetString());
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/v1/prospeccion" +
"?categoria=grande&rubro=B&comuna=13101" +
"&trabajadores_minimo=10000"))
.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/prospeccion" +
"?categoria=grande&rubro=B&comuna=13101" +
"&trabajadores_minimo=10000", 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["empresas"])
uri = URI("https://api.datario.cl/v1/prospeccion")
uri.query = URI.encode_www_form(
categoria: "grande",
rubro: "B",
comuna: "13101",
trabajadores_minimo: "10000",
)
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["empresas"][0]["razon_social"]
Set Variable [ $url ; Value:
"https://api.datario.cl/v1/prospeccion" &
"?categoria=grande&rubro=B&comuna=13101" &
"&trabajadores_minimo=10000" ]
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 ; "empresas[0].razon_social" ) ]
Respuestas
{
"filtros": {
"categoria": [
"grande"
],
"tramo_minimo": null,
"tramo_maximo": null,
"trabajadores_minimo": 10000,
"trabajadores_maximo": null,
"rubro": [
"B"
],
"regimen": [],
"actividad": null,
"region": null,
"provincia": null,
"comuna": "13101",
"vigentes": true,
"crecio": false
},
"empresas": [
{
"rut": "61704000-K",
"rut_formateado": "61.704.000-K",
"razon_social": "CORP NACIONAL DEL COBRE DE CHILE",
"vigente": true,
"anio_comercial": 2024,
"tramo_ventas": {
"codigo": 13,
"descripcion": "4to Rango Gran Empresa",
"desde_uf": 1000000.01,
"hasta_uf": null,
"categoria": "Gran empresa"
},
"trabajadores": 16946,
"rubro": {
"codigo": "B",
"descripcion": "EXPLOTACION DE MINAS Y CANTERAS"
},
"subrubro": "EXTRACCION Y PROCESAMIENTO DE COBRE",
"regimen": {
"codigo": "no14",
"descripcion": "CONTRIBUYENTES NO SUJETOS AL ARTICULO 14"
},
"casa_matriz": {
"comuna": {
"codigo": "13101",
"nombre": "Santiago"
},
"provincia": {
"codigo": "131",
"nombre": "Santiago"
},
"region": {
"codigo": "13",
"nombre": "Región Metropolitana de Santiago"
}
}
}
],
"nuevas": 1,
"hay_mas": false,
"pagina_siguiente": null,
"fuente": "Nóminas públicas de contribuyentes y nómina anual de empresas, SII",
"padron_publicado": "2026-08-05T15:36:37+00:00",
"consultado_en": "2026-08-29T04:12:07+00:00"
}
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": "parametros_invalidos",
"detail": "categoria debe ser micro, pequena, mediana o grande, o varias separadas por coma."
}
{
"error": "parametros_invalidos",
"detail": "tramo_minimo y tramo_maximo deben ser enteros entre 1 y 13."
}
{
"error": "parametros_invalidos",
"detail": "trabajadores_minimo y trabajadores_maximo deben ser enteros positivos."
}
{
"error": "parametros_invalidos",
"detail": "El mínimo no puede ser mayor que el máximo."
}
{
"error": "parametros_invalidos",
"detail": "rubro debe ser la letra de una sección CIIU (A a U), o varias separadas por coma."
}
{
"error": "parametros_invalidos",
"detail": "regimen debe ser 14A, 14D, 14D8, no14 o otros, o varios separados por coma."
}
{
"error": "parametros_invalidos",
"detail": "region no es una región de Chile: usa su código (13) o su nombre."
}
{
"error": "parametros_invalidos",
"detail": "provincia no es una provincia de Chile: usa su código (131) o su nombre."
}
{
"error": "parametros_invalidos",
"detail": "comuna no es una comuna de Chile: usa su código (13101) o su nombre."
}
{
"error": "parametros_invalidos",
"detail": "vigentes debe ser true o false."
}
{
"error": "parametros_invalidos",
"detail": "crecio debe ser true o false."
}
{
"error": "parametros_invalidos",
"detail": "actividad debe ser el código numérico del giro."
}
{
"error": "parametros_invalidos",
"detail": "limite debe ser un entero entre 1 y 100."
}
{
"error": "parametros_invalidos",
"detail": "pagina no es válida: pide la primera página sin ese parámetro."
}
{
"error": "parametros_invalidos",
"detail": "pagina ya lleva los filtros: no los repitas distintos."
}
{
"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": "lectura_expirada",
"detail": "La lectura tardó demasiado: agrega un filtro de tamaño, rubro o ubicación. Si sigue fallando, mira https://status.datario.cl"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"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": "prospeccion_agotada",
"detail": "Ya recibiste todas las empresas que tu plan entrega en este ciclo. Vuelven cuando se renueva, y las que ya recibiste puedes volver a pedirlas sin costo."
}
Headers: X-Plan-Reset
{
"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
GET /v1/prospeccion/conteo
Cuántas empresas calzan
Cuántas empresas calzan con los mismos filtros de la prospección y cómo se reparten por tamaño, región y rubro, sin listarlas. No descuenta, y sirve en cualquier plan: es cómo se mide un mercado antes de pedir la lista.
Parámetros
| Parámetro | Tipo | Qué es |
|---|---|---|
categoria | string | El tamaño: micro, pequena, mediana, grande, o varios separados por coma. Según el tramo de ventas del año comercial más reciente. |
tramo_minimo | integer | Tramo de ventas mínimo, 1 a 13 (el tramo_ventas.codigo). |
tramo_maximo | integer | Tramo de ventas máximo, 1 a 13. |
trabajadores_minimo | integer | Trabajadores mínimos del año comercial más reciente. |
trabajadores_maximo | integer | Trabajadores máximos del año comercial más reciente. |
rubro | string | La letra de la sección CIIU del rubro (B es minería), o varias separadas por coma. |
regimen | string | El régimen tributario: 14A, 14D, 14D8, no14, otros, o varios separados por coma. |
actividad | integer | Código numérico de un giro (el codigo de las actividades). |
region | string | La región de la casa matriz: su código (13) o su nombre («Metropolitana»). |
provincia | string | La provincia de la casa matriz: su código (131) o su nombre. |
comuna | string | La comuna de la casa matriz: su código (13101) o su nombre («Santiago»). |
vigentes | boolean | true (por defecto) deja solo las empresas sin término de giro; false las incluye. |
crecio | boolean | true deja solo las empresas que subieron de tamaño —de micro a pequeña, de pequeña a mediana o de mediana a grande— entre su último año comercial y el anterior, los dos clasificados por el SII; sin el año anterior no cuenta como crecida. false (por defecto) no filtra por eso. |
Lo que devuelve
| Campo | Tipo | Qué es |
|---|---|---|
filtros | object | La pregunta como se leyó, igual que en la prospección. |
total | integer | Cuántas empresas calzan. |
por_categoria | array | Cuántas por tamaño, de micro a grande, y al final las que el SII no estimó. Solo las que tienen empresas. |
por_region | array | Cuántas por región de su casa matriz, de norte a sur. Solo las que tienen empresas. |
por_rubro | array | Cuántas por rubro. Solo los que tienen empresas. |
fuente | string | De dónde salen los datos de esta respuesta, en texto listo para citar («Nóminas públicas de contribuyentes y nómina anual de empresas, 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. |
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 filtros
| Campo | Tipo | Qué es |
|---|---|---|
categoria | array | El tamaño: micro, pequena, mediana, grande, o varios separados por coma. Según el tramo de ventas del año comercial más reciente. |
tramo_minimo | integer | Tramo de ventas mínimo, 1 a 13 (el tramo_ventas.codigo). |
tramo_maximo | integer | Tramo de ventas máximo, 1 a 13. |
trabajadores_minimo | integer | Trabajadores mínimos del año comercial más reciente. |
trabajadores_maximo | integer | Trabajadores máximos del año comercial más reciente. |
rubro | array | La letra de la sección CIIU del rubro (B es minería), o varias separadas por coma. |
regimen | array | El régimen tributario: 14A, 14D, 14D8, no14, otros, o varios separados por coma. |
actividad | integer | Código numérico de un giro (el codigo de las actividades). |
region | string | La región de la casa matriz: su código (13) o su nombre («Metropolitana»). |
provincia | string | La provincia de la casa matriz: su código (131) o su nombre. |
comuna | string | La comuna de la casa matriz: su código (13101) o su nombre («Santiago»). |
vigentes | boolean | true (por defecto) deja solo las empresas sin término de giro; false las incluye. |
crecio | boolean | true deja solo las empresas que subieron de tamaño —de micro a pequeña, de pequeña a mediana o de mediana a grande— entre su último año comercial y el anterior, los dos clasificados por el SII; sin el año anterior no cuenta como crecida. false (por defecto) no filtra por eso. |
Dentro de por_categoria
| Campo | Tipo | Qué es |
|---|---|---|
categoria | string | El tamaño: micro, pequena, mediana, grande. null en las que el SII no estimó. |
nombre | string | El nombre del tamaño. |
empresas | integer | Cuántas. |
Dentro de por_region
| Campo | Tipo | Qué es |
|---|---|---|
codigo | string | El código único territorial. null sin ubicación. |
nombre | string | El nombre oficial. |
empresas | integer | Cuántas. |
Dentro de por_rubro
| Campo | Tipo | Qué es |
|---|---|---|
codigo | string | La letra CIIU. null sin rubro. |
descripcion | string | El texto del SII. |
empresas | integer | Cuántas. |
Cuándo responde cada cosa
- 200 Siempre: contar no descuenta, tampoco cuando no calza ninguna. No descuenta.
- 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
categoriano es un tamaño. No descuenta. - 422 Un tramo fuera de la leyenda del SII. No descuenta.
- 422 Un mínimo o máximo de trabajadores negativo. No descuenta.
- 422 Un mínimo mayor que su máximo. No descuenta.
-
422
rubrono es una sección CIIU. No descuenta. -
422
regimenno es uno de los publicados. No descuenta. -
422
regionno es una región de Chile. No descuenta. -
422
provinciano es una provincia de Chile. No descuenta. -
422
comunano es una comuna de Chile. No descuenta. -
422
vigentesno estruenifalse. No descuenta. -
422
creciono estruenifalse. No descuenta. -
422
El giro se filtra por su código (el mismo
codigode las actividades), no por texto. 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.
- 503 La lectura tardó más que su techo de tiempo. No se cobra: agrega un filtro. No descuenta.
-
429
Fuiste más rápido que las consultas por minuto de tu plan.
Retry-Afterdice cuánto esperar. 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.
curl -s -i -G -H "Authorization: Bearer dtr_TU_KEY" \
https://api.datario.cl/v1/prospeccion/conteo \
-d categoria=grande \
-d rubro=B \
-d comuna=13101 \
-d trabajadores_minimo=10000
import requests
r = requests.get(
"https://api.datario.cl/v1/prospeccion/conteo"
"?categoria=grande&rubro=B&comuna=13101"
"&trabajadores_minimo=10000",
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["total"])
print(r.headers.get("X-Plan-Remaining"), "restantes")
const r = await fetch(
"https://api.datario.cl/v1/prospeccion/conteo" +
"?categoria=grande&rubro=B&comuna=13101" +
"&trabajadores_minimo=10000",
{ 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.total);
<?php
$ch = curl_init(
"https://api.datario.cl/v1/prospeccion/conteo" .
"?categoria=grande&rubro=B&comuna=13101" .
"&trabajadores_minimo=10000"
);
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["total"];
using var http = new HttpClient();
http.DefaultRequestHeaders.Add(
"Authorization", "Bearer dtr_TU_KEY");
var r = await http.GetAsync(
"https://api.datario.cl/v1/prospeccion/conteo" +
"?categoria=grande&rubro=B&comuna=13101" +
"&trabajadores_minimo=10000");
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("total").GetString());
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/v1/prospeccion/conteo" +
"?categoria=grande&rubro=B&comuna=13101" +
"&trabajadores_minimo=10000"))
.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/prospeccion/conteo" +
"?categoria=grande&rubro=B&comuna=13101" +
"&trabajadores_minimo=10000", 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["total"])
uri = URI("https://api.datario.cl/v1/prospeccion/conteo")
uri.query = URI.encode_www_form(
categoria: "grande",
rubro: "B",
comuna: "13101",
trabajadores_minimo: "10000",
)
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["total"]
Set Variable [ $url ; Value:
"https://api.datario.cl/v1/prospeccion/conteo" &
"?categoria=grande&rubro=B&comuna=13101" &
"&trabajadores_minimo=10000" ]
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 ; "total" ) ]
Respuestas
{
"filtros": {
"categoria": [
"grande"
],
"tramo_minimo": null,
"tramo_maximo": null,
"trabajadores_minimo": 10000,
"trabajadores_maximo": null,
"rubro": [
"B"
],
"regimen": [],
"actividad": null,
"region": null,
"provincia": null,
"comuna": "13101",
"vigentes": true,
"crecio": false
},
"total": 1,
"por_categoria": [
{
"categoria": "grande",
"nombre": "Gran empresa",
"empresas": 1
}
],
"por_region": [
{
"codigo": "13",
"nombre": "Región Metropolitana de Santiago",
"empresas": 1
}
],
"por_rubro": [
{
"codigo": "B",
"descripcion": "EXPLOTACION DE MINAS Y CANTERAS",
"empresas": 1
}
],
"fuente": "Nóminas públicas de contribuyentes y nómina anual de empresas, SII",
"padron_publicado": "2026-08-05T15:36:37+00:00",
"consultado_en": "2026-08-29T04:12:07+00:00"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"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": "parametros_invalidos",
"detail": "categoria debe ser micro, pequena, mediana o grande, o varias separadas por coma."
}
{
"error": "parametros_invalidos",
"detail": "tramo_minimo y tramo_maximo deben ser enteros entre 1 y 13."
}
{
"error": "parametros_invalidos",
"detail": "trabajadores_minimo y trabajadores_maximo deben ser enteros positivos."
}
{
"error": "parametros_invalidos",
"detail": "El mínimo no puede ser mayor que el máximo."
}
{
"error": "parametros_invalidos",
"detail": "rubro debe ser la letra de una sección CIIU (A a U), o varias separadas por coma."
}
{
"error": "parametros_invalidos",
"detail": "regimen debe ser 14A, 14D, 14D8, no14 o otros, o varios separados por coma."
}
{
"error": "parametros_invalidos",
"detail": "region no es una región de Chile: usa su código (13) o su nombre."
}
{
"error": "parametros_invalidos",
"detail": "provincia no es una provincia de Chile: usa su código (131) o su nombre."
}
{
"error": "parametros_invalidos",
"detail": "comuna no es una comuna de Chile: usa su código (13101) o su nombre."
}
{
"error": "parametros_invalidos",
"detail": "vigentes debe ser true o false."
}
{
"error": "parametros_invalidos",
"detail": "crecio debe ser true o false."
}
{
"error": "parametros_invalidos",
"detail": "actividad debe ser el código numérico del giro."
}
{
"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": "lectura_expirada",
"detail": "La lectura tardó demasiado: agrega un filtro de tamaño, rubro o ubicación. Si sigue fallando, mira https://status.datario.cl"
}
Headers: X-RateLimit-Limit X-RateLimit-Remaining X-RateLimit-Reset
{
"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": "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
Probar en la consola Este producto por SOAP Este producto por GraphQL Este producto por MCP Qué es Prospección