SOAP · ¿Quién está detrás?
Sociedades y grupos
En qué sociedades participa un RUT, quiénes participan en él y el grupo que se arma siguiendo esas participaciones. 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 /soap/v1
ObtenerSociedades — Sociedades y socios
En qué sociedades participa el RUT y con cuánto, qué personas jurídicas participan en él, y cuánto suman sus personas naturales — sin nombrarlas: el SII publica el porcentaje agregado, no quiénes son. Las listas vacías también son respuesta: «no tiene» es información.
El RUT está en el padrón. Descuenta dos consultas — como su gemelo REST.
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="https://api.datario.cl/soap/v1">
<soapenv:Header/>
<soapenv:Body>
<tns:ObtenerSociedades>
<tns:rut>61.704.000-K</tns:rut>
</tns:ObtenerSociedades>
</soapenv:Body>
</soapenv:Envelope>
curl -s -i https://api.datario.cl/soap/v1 \
-H "Authorization: Bearer dtr_TU_KEY" \
-H "Content-Type: text/xml; charset=utf-8" \
--data-binary @peticion.xml
import requests
sobre = open("peticion.xml", "rb").read()
r = requests.post(
"https://api.datario.cl/soap/v1",
data=sobre,
headers={
"Authorization": "Bearer dtr_TU_KEY",
"Content-Type": "text/xml; charset=utf-8",
},
timeout=10,
)
if "<soap:Fault>" in r.text:
raise SystemExit(r.text) # faultstring dice qué pasó
print(r.text)
<?php
// SoapClient lee el WSDL y genera las operaciones solo.
$contexto = stream_context_create(["http" => [
"header" => "Authorization: Bearer dtr_TU_KEY",
]]);
$cliente = new SoapClient(
"https://api.datario.cl/soap/v1?wsdl",
["stream_context" => $contexto]
);
try {
$ficha = $cliente->ObtenerSociedades([
"rut" => "61.704.000-K",
]);
print_r($ficha);
} catch (SoapFault $f) {
echo $f->faultcode . ": " . $f->faultstring;
}
using var http = new HttpClient();
http.DefaultRequestHeaders.Add(
"Authorization", "Bearer dtr_TU_KEY");
var sobre = new StringContent(
File.ReadAllText("peticion.xml"),
Encoding.UTF8, "text/xml");
var r = await http.PostAsync(
"https://api.datario.cl/soap/v1", sobre);
var xml = await r.Content.ReadAsStringAsync();
if (xml.Contains("<soap:Fault>"))
throw new Exception(xml); // faultstring dice qué pasó
Console.WriteLine(xml);
var sobre = Path.of("peticion.xml");
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/soap/v1"))
.header("Authorization", "Bearer dtr_TU_KEY")
.header("Content-Type",
"text/xml; charset=utf-8")
.POST(BodyPublishers.ofFile(sobre))
.build();
var r = HttpClient.newHttpClient()
.send(req, BodyHandlers.ofString());
// 500 = fault: el faultstring dice qué pasó.
System.out.println(r.body());
Set Variable [ $accion ; Value:
"https://api.datario.cl/soap/v1/ObtenerSociedades" ]
Insert from URL [ Select ; With dialog: Off ; Target: $r ;
"https://api.datario.cl/soap/v1" ; cURL options:
"-X POST" &
" -H \"Authorization: Bearer dtr_TU_KEY\"" &
" -H \"Content-Type: text/xml\"" &
" -H \"SOAPAction: " & $accion & "\"" &
" -D @peticion.xml" ]
# 500 = fault: el faultstring dice qué pasó.
Show Custom Dialog [ $r ]
La respuesta
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ObtenerSociedadesResponse xmlns="https://api.datario.cl/soap/v1">
<sociedades>
<rut>61704000-K</rut>
<rut_formateado>61.704.000-K</rut_formateado>
<es_empresa>true</es_empresa>
<participaciones>
<participacion>
<rut>76028880-2</rut>
<rut_formateado>76.028.880-2</rut_formateado>
<razon_social>SOCIEDAD CONTRACTUAL MINERA PUREN</razon_social>
<participacion>35.0</participacion>
</participacion>
<participacion>
<rut>76148338-2</rut>
<rut_formateado>76.148.338-2</rut_formateado>
<razon_social>SOCIEDAD DE PROCESAMIENTO DE MOLIBDENO SPA</razon_social>
<participacion>100.0</participacion>
</participacion>
</participaciones>
<socios/>
<fuente>Composición de sociedades, SII</fuente>
<publicado>2025-11-25T16:11:42+00:00</publicado>
<consultado_en>2026-08-29T04:12:07+00:00</consultado_en>
</sociedades>
</ObtenerSociedadesResponse>
</soap:Body>
</soap:Envelope>
POST /soap/v1
ObtenerGrupos — El grupo
Las empresas que se alcanzan siguiendo las participaciones desde el RUT —en las dos direcciones— hasta saltos de distancia, y las participaciones entre ellas. El grupo se corta en 200 empresas y lo dice.
El RUT está en el padrón. Descuenta cinco consultas, con el grupo entero o truncado.
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="https://api.datario.cl/soap/v1">
<soapenv:Header/>
<soapenv:Body>
<tns:ObtenerGrupos>
<tns:rut>61.704.000-K</tns:rut>
<tns:saltos>2</tns:saltos>
</tns:ObtenerGrupos>
</soapenv:Body>
</soapenv:Envelope>
curl -s -i https://api.datario.cl/soap/v1 \
-H "Authorization: Bearer dtr_TU_KEY" \
-H "Content-Type: text/xml; charset=utf-8" \
--data-binary @peticion.xml
import requests
sobre = open("peticion.xml", "rb").read()
r = requests.post(
"https://api.datario.cl/soap/v1",
data=sobre,
headers={
"Authorization": "Bearer dtr_TU_KEY",
"Content-Type": "text/xml; charset=utf-8",
},
timeout=10,
)
if "<soap:Fault>" in r.text:
raise SystemExit(r.text) # faultstring dice qué pasó
print(r.text)
<?php
// SoapClient lee el WSDL y genera las operaciones solo.
$contexto = stream_context_create(["http" => [
"header" => "Authorization: Bearer dtr_TU_KEY",
]]);
$cliente = new SoapClient(
"https://api.datario.cl/soap/v1?wsdl",
["stream_context" => $contexto]
);
try {
$ficha = $cliente->ObtenerGrupos([
"rut" => "61.704.000-K",
]);
print_r($ficha);
} catch (SoapFault $f) {
echo $f->faultcode . ": " . $f->faultstring;
}
using var http = new HttpClient();
http.DefaultRequestHeaders.Add(
"Authorization", "Bearer dtr_TU_KEY");
var sobre = new StringContent(
File.ReadAllText("peticion.xml"),
Encoding.UTF8, "text/xml");
var r = await http.PostAsync(
"https://api.datario.cl/soap/v1", sobre);
var xml = await r.Content.ReadAsStringAsync();
if (xml.Contains("<soap:Fault>"))
throw new Exception(xml); // faultstring dice qué pasó
Console.WriteLine(xml);
var sobre = Path.of("peticion.xml");
var req = HttpRequest.newBuilder()
.uri(URI.create(
"https://api.datario.cl/soap/v1"))
.header("Authorization", "Bearer dtr_TU_KEY")
.header("Content-Type",
"text/xml; charset=utf-8")
.POST(BodyPublishers.ofFile(sobre))
.build();
var r = HttpClient.newHttpClient()
.send(req, BodyHandlers.ofString());
// 500 = fault: el faultstring dice qué pasó.
System.out.println(r.body());
Set Variable [ $accion ; Value:
"https://api.datario.cl/soap/v1/ObtenerGrupos" ]
Insert from URL [ Select ; With dialog: Off ; Target: $r ;
"https://api.datario.cl/soap/v1" ; cURL options:
"-X POST" &
" -H \"Authorization: Bearer dtr_TU_KEY\"" &
" -H \"Content-Type: text/xml\"" &
" -H \"SOAPAction: " & $accion & "\"" &
" -D @peticion.xml" ]
# 500 = fault: el faultstring dice qué pasó.
Show Custom Dialog [ $r ]
La respuesta
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ObtenerGruposResponse xmlns="https://api.datario.cl/soap/v1">
<grupos>
<rut>61704000-K</rut>
<rut_formateado>61.704.000-K</rut_formateado>
<es_empresa>true</es_empresa>
<saltos>2</saltos>
<empresas>
<empresa>
<rut>76063022-5</rut>
<rut_formateado>76.063.022-5</rut_formateado>
<razon_social>INCA DE ORO S.A.</razon_social>
<distancia>1</distancia>
</empresa>
<empresa>
<rut>76092641-8</rut>
<rut_formateado>76.092.641-8</rut_formateado>
<razon_social>PANAUST MINERA IDO LIMITADA</razon_social>
<distancia>2</distancia>
</empresa>
</empresas>
<participaciones>
<arista>
<socio>61704000-K</socio>
<sociedad>76063022-5</sociedad>
<participacion>30.6</participacion>
</arista>
<arista>
<socio>76092641-8</socio>
<sociedad>76063022-5</sociedad>
<participacion>69.4</participacion>
</arista>
</participaciones>
<truncado>true</truncado>
<fuente>Composición de sociedades, SII</fuente>
<publicado>2025-11-25T16:11:42+00:00</publicado>
<consultado_en>2026-08-29T04:12:07+00:00</consultado_en>
</grupos>
</ObtenerGruposResponse>
</soap:Body>
</soap:Envelope>
Probar en la consola Este producto por REST Este producto por GraphQL Este producto por MCP Qué es Sociedades y grupos