GraphQL · ¿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.
POST /graphql
La ficha por RUT
Pides exactamente los campos que necesitas — acá la razón social, los giros y el tamaño, sin domicilios. El costo no depende de cuántos campos pidas: es por RUT resuelto.
Un RUT resuelto: descuenta una consulta.
{
contribuyente(rut: "61.704.000-K") {
razon_social
actividades { codigo descripcion afecta_iva }
casilla_intercambio
tamano {
tramo_ventas { codigo descripcion categoria }
trabajadores
}
}
}
# consulta.graphql = el bloque de arriba (jq lo empaqueta)
curl -s -i https://api.datario.cl/graphql \
-H "Authorization: Bearer dtr_TU_KEY" \
-H "Content-Type: application/json" \
--data "{\"query\": $(jq -Rs . consulta.graphql)}"
import requests
query = open("consulta.graphql").read()
r = requests.post(
"https://api.datario.cl/graphql",
json={"query": query},
headers={"Authorization": "Bearer dtr_TU_KEY"},
timeout=10,
)
cuerpo = r.json()
for e in cuerpo.get("errors", []):
print(e["extensions"]["code"], e["message"])
print(cuerpo.get("data"))
consumo = cuerpo["extensions"]["consumo"]
print(consumo["consultas_cobradas"], "cobradas")
import { readFileSync } from "node:fs";
const query = readFileSync("consulta.graphql", "utf8");
const r = await fetch("https://api.datario.cl/graphql", {
method: "POST",
headers: {
"Authorization": "Bearer dtr_TU_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ query }),
});
const cuerpo = await r.json();
for (const e of cuerpo.errors ?? []) {
console.error(e.extensions.code, e.message);
}
console.log(cuerpo.data);
console.log(cuerpo.extensions.consumo);
La respuesta, con su consumo
{
"data": {
"contribuyente": {
"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"
}
],
"casilla_intercambio": "",
"tamano": {
"tramo_ventas": {
"codigo": 13,
"descripcion": "4to Rango Gran Empresa",
"categoria": "Gran empresa"
},
"trabajadores": 16946
}
}
},
"extensions": {
"consumo": {
"consultas_cobradas": 1,
"ruts_resueltos": 1,
"paginas_busqueda": 0,
"plan_restante": 19999,
"saldo_restante": 0,
"por_operacion": {
"ficha": 1
}
}
}
}
POST /graphql
Varios RUT en una query
Cada alias resuelve un RUT y descuenta el suyo: esta query descuenta 2 — una por CODELCO y una por el RUT válido que el SII no registra, que devuelve null y descuenta igual («no está» también es información, como el 404 de REST).
Dos RUT resueltos: descuenta dos consultas — el null incluido.
{
codelco: contribuyente(rut: "61.704.000-K") {
razon_social
}
ausente: contribuyente(rut: "12345678-5") {
razon_social
}
}
# consulta.graphql = el bloque de arriba (jq lo empaqueta)
curl -s -i https://api.datario.cl/graphql \
-H "Authorization: Bearer dtr_TU_KEY" \
-H "Content-Type: application/json" \
--data "{\"query\": $(jq -Rs . consulta.graphql)}"
import requests
query = open("consulta.graphql").read()
r = requests.post(
"https://api.datario.cl/graphql",
json={"query": query},
headers={"Authorization": "Bearer dtr_TU_KEY"},
timeout=10,
)
cuerpo = r.json()
for e in cuerpo.get("errors", []):
print(e["extensions"]["code"], e["message"])
print(cuerpo.get("data"))
consumo = cuerpo["extensions"]["consumo"]
print(consumo["consultas_cobradas"], "cobradas")
import { readFileSync } from "node:fs";
const query = readFileSync("consulta.graphql", "utf8");
const r = await fetch("https://api.datario.cl/graphql", {
method: "POST",
headers: {
"Authorization": "Bearer dtr_TU_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ query }),
});
const cuerpo = await r.json();
for (const e of cuerpo.errors ?? []) {
console.error(e.extensions.code, e.message);
}
console.log(cuerpo.data);
console.log(cuerpo.extensions.consumo);
La respuesta, con su consumo
{
"data": {
"codelco": {
"razon_social": "CORP NACIONAL DEL COBRE DE CHILE"
},
"ausente": null
},
"extensions": {
"consumo": {
"consultas_cobradas": 2,
"ruts_resueltos": 2,
"paginas_busqueda": 0,
"plan_restante": 19997,
"saldo_restante": 0,
"por_operacion": {
"ficha": 2
}
}
}
}
Probar en la consola Este producto por REST Este producto por SOAP Este producto por MCP Qué es Consulta de RUT