API para Desarrolladores
Ofrecemos una API REST pública y gratuita para consultar el Registro Nacional de Contribuyentes (RNC) de la DGII de República Dominicana. Ideal para integrar verificación de RNC en tus aplicaciones, sistemas contables, ERPs o cualquier proyecto.
Actualización de Datos
La base de datos del RNC se actualiza automáticamente cada día en la madrugada con la información más reciente publicada por la DGII. Esto garantiza que las consultas reflejen los datos oficiales más actualizados disponibles.
Documentación Interactiva (Swagger)
Explora y prueba todos los endpoints directamente desde la documentación interactiva de Swagger. Puedes ejecutar consultas en tiempo real sin necesidad de escribir código.
Abrir Swagger UIURL Base
https://api.directoriornc.com/api/DGIITodas las peticiones son GET y devuelven JSON. No se requiere autenticación ni API key. CORS está habilitado para peticiones GET desde el navegador.
Límites de uso: 60 solicitudes por minuto y 10,000 por día, por dirección IP. Si los superas, la API responde HTTP 429 con la cabecera Retry-After (segundos de espera).
Servicio gratuito y no oficial: usa datos públicos de la DGII, sin garantía de disponibilidad. ¿Necesitas más volumen? Escríbenos a [email protected]. Guía de integración: cómo integrar la consulta de RNC. Al usar la API aceptas los términos de uso.
Endpoints Disponibles
/api/DGII/{rnc}Busca un contribuyente por su número de RNC o cédula. Devuelve un resultado exacto.
Ejemplo de uso
GET https://api.directoriornc.com/api/DGII/132790316Respuesta exitosa
{
"rnc": "132790316",
"nombreCompleto": "OSCARSOFT SRL",
"nombreComercial": "OSCARSOFT",
"actividad": "PLANIFICACIÓN Y DISEÑO DE LOS",
"fechaRegistro": "14/11/2022",
"estado": "ACTIVO",
"categoria": "RST"
}/api/DGII/GetByName/{nombre}Busca un contribuyente por su nombre exacto (razón social completa).
Ejemplo de uso
GET https://api.directoriornc.com/api/DGII/GetByName/OscarsoftRespuesta exitosa
{
"rnc": "132790316",
"nombreCompleto": "OSCARSOFT SRL",
"nombreComercial": "OSCARSOFT",
"actividad": "PLANIFICACIÓN Y DISEÑO DE LOS",
"fechaRegistro": "14/11/2022",
"estado": "ACTIVO",
"categoria": "RST"
}/api/DGII/search/{criterio}Busca contribuyentes que coincidan con el criterio de búsqueda. Retorna hasta 10 resultados.
Ejemplo de uso
GET https://api.directoriornc.com/api/DGII/search/OscarsofRespuesta exitosa
[
{
"rnc": "132790316",
"nombreCompleto": "OSCARSOFT SRL",
"nombreComercial": "OSCARSOFT",
"actividad": "PLANIFICACIÓN Y DISEÑO DE LOS",
"fechaRegistro": "14/11/2022",
"estado": "ACTIVO",
"categoria": "RST"
},
...
]Campos de Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| rnc | string | Número de RNC o cédula |
| nombreCompleto | string | Razón social o nombre completo |
| nombreComercial | string | Nombre comercial del negocio |
| actividad | string | Actividad económica registrada |
| fechaRegistro | string | Fecha de registro (DD/MM/YYYY) |
| estado | string | Estado del contribuyente (ACTIVO, SUSPENDIDO, etc.) |
| categoria | string | Categoría tributaria (NORMAL, RST, etc.) |
Ejemplos de Integración
JavaScript / Fetch
const response = await fetch(
'https://api.directoriornc.com/api/DGII/132790316'
);
const data = await response.json();
console.log(data.nombreCompleto); // "OSCARSOFT SRL"Python
import requests
response = requests.get(
'https://api.directoriornc.com/api/DGII/132790316'
)
data = response.json()
print(data['nombreCompleto']) # "OSCARSOFT SRL"cURL
curl https://api.directoriornc.com/api/DGII/132790316C# / .NET
using var client = new HttpClient();
var response = await client.GetAsync(
"https://api.directoriornc.com/api/DGII/132790316"
);
var json = await response.Content.ReadAsStringAsync();
Console.WriteLine(json);Visual FoxPro 9
*==========================================================================
* ConsultaRnc.prg - Consulta de RNC (API gratuita directoriornc.com)
* Compatible con Visual FoxPro 8 y 9. Requiere Windows con TLS 1.2.
*
* Uso:
* SET PROCEDURE TO ConsultaRnc.prg ADDITIVE
* loEmp = ConsultarRnc("132790316")
* IF loEmp.Ok
* ? loEmp.NombreCompleto, loEmp.Estado
* ELSE
* ? loEmp.Mensaje
* ENDIF
*==========================================================================
FUNCTION ConsultarRnc
LPARAMETERS tcRnc
LOCAL loHttp, lcJson, lcRnc, loEmp, loEx, lcRetry
* Quita guiones y espacios del RNC o cedula
lcRnc = STRTRAN(STRTRAN(ALLTRIM(tcRnc), "-", ""), " ", "")
loEmp = CREATEOBJECT("Empty")
ADDPROPERTY(loEmp, "Ok", .F.) && .T. si se encontro el contribuyente
ADDPROPERTY(loEmp, "Status", 0) && codigo HTTP (200, 404, 429...)
ADDPROPERTY(loEmp, "Mensaje", "") && texto de error, si lo hay
ADDPROPERTY(loEmp, "Rnc", "")
ADDPROPERTY(loEmp, "NombreCompleto", "")
ADDPROPERTY(loEmp, "NombreComercial", "")
ADDPROPERTY(loEmp, "Actividad", "")
ADDPROPERTY(loEmp, "FechaRegistro", "")
ADDPROPERTY(loEmp, "Estado", "")
ADDPROPERTY(loEmp, "Categoria", "")
TRY
loHttp = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
loHttp.Open("GET", "https://api.directoriornc.com/api/DGII/" + lcRnc, .F.)
loHttp.SetTimeouts(10000, 10000, 15000, 15000)
loHttp.Send()
loEmp.Status = loHttp.Status
DO CASE
CASE loHttp.Status = 200
lcJson = loHttp.ResponseText
loEmp.Ok = .T.
loEmp.Rnc = JsonStr(lcJson, "rnc")
loEmp.NombreCompleto = JsonStr(lcJson, "nombreCompleto")
loEmp.NombreComercial = JsonStr(lcJson, "nombreComercial")
loEmp.Actividad = JsonStr(lcJson, "actividad")
loEmp.FechaRegistro = JsonStr(lcJson, "fechaRegistro")
loEmp.Estado = JsonStr(lcJson, "estado")
loEmp.Categoria = JsonStr(lcJson, "categoria")
CASE loHttp.Status = 404
loEmp.Mensaje = "El RNC no figura en el registro."
CASE loHttp.Status = 429
lcRetry = loHttp.GetResponseHeader("Retry-After")
loEmp.Mensaje = "Limite de uso alcanzado. Reintente en " + lcRetry + " segundos."
OTHERWISE
loEmp.Mensaje = "Error del servicio: HTTP " + TRANSFORM(loHttp.Status)
ENDCASE
CATCH TO loEx
* Sin conexion, sin TLS 1.2 en Windows viejo, tiempo agotado, etc.
loEmp.Mensaje = loEx.Message
ENDTRY
RETURN loEmp
ENDFUNC
*--------------------------------------------------------------------------
* JsonStr: devuelve el valor de texto de una clave de un JSON plano.
* Maneja comillas escapadas (\") y secuencias \uXXXX.
*--------------------------------------------------------------------------
FUNCTION JsonStr
LPARAMETERS tcJson, tcKey
LOCAL lcPat, lnPos, lnLen, lcOut, lcCh, lcNext, lnCode
lcPat = '"' + tcKey + '":"'
lnPos = AT(lcPat, tcJson)
IF lnPos = 0
RETURN ""
ENDIF
lnPos = lnPos + LEN(lcPat)
lnLen = LEN(tcJson)
lcOut = ""
DO WHILE lnPos <= lnLen
lcCh = SUBSTR(tcJson, lnPos, 1)
DO CASE
CASE lcCh == '"'
EXIT
CASE lcCh == "\"
lnPos = lnPos + 1
lcNext = SUBSTR(tcJson, lnPos, 1)
DO CASE
CASE lcNext == "n"
lcOut = lcOut + CHR(10)
CASE lcNext == "r"
lcOut = lcOut + CHR(13)
CASE lcNext == "t"
lcOut = lcOut + CHR(9)
CASE lcNext == "u"
* \uXXXX: se convierte a ANSI si cabe en un byte; si no, "?"
lnCode = EVALUATE("0x" + SUBSTR(tcJson, lnPos + 1, 4))
lcOut = lcOut + IIF(lnCode < 256, CHR(lnCode), "?")
lnPos = lnPos + 4
OTHERWISE
lcOut = lcOut + lcNext
ENDCASE
OTHERWISE
lcOut = lcOut + lcCh
ENDCASE
lnPos = lnPos + 1
ENDDO
RETURN lcOut
ENDFUNC- Probado en Visual FoxPro 9 SP2 y en VFP 10 (versión externa). Usa solo funciones de VFP 8 y 9 (
TRY/CATCH,ADDPROPERTY,CREATEOBJECT). - VFP no trae soporte JSON;
JsonStrextrae los campos de texto de la respuesta (comillas escapadas y\uXXXXincluidos). - En Windows 7 / Server 2008 R2 o anteriores, WinHTTP no usa TLS 1.2 por defecto y la llamada HTTPS falla hasta que se habilite (actualización KB 3140245 y la clave de registro
DefaultSecureProtocols).
PowerShell
# Consulta de RNC - PowerShell (5.1 o superior)
# En Windows antiguos, active TLS 1.2 antes de llamar a la API:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
function Consultar-Rnc([string]$Rnc) {
$Rnc = $Rnc -replace '[-\s]', ''
try {
return Invoke-RestMethod -Uri "https://api.directoriornc.com/api/DGII/$Rnc" -TimeoutSec 15
}
catch {
$codigo = [int]$_.Exception.Response.StatusCode
if ($codigo -eq 404) { return $null } # no existe
if ($codigo -eq 429) {
$espera = $_.Exception.Response.Headers['Retry-After'] # segundos
throw "Limite de uso alcanzado. Reintente en $espera segundos."
}
throw
}
}
$empresa = Consultar-Rnc "132790316"
if ($empresa) { "$($empresa.nombreCompleto) - $($empresa.estado)" } else { "No figura en el registro" }VBScript / VBA (Excel, Access)
' Consulta de RNC - VBScript / VBA (Excel, Access, Word)
' Para VBA: agregue "Option Explicit" al inicio y declare los tipos si lo desea.
Function ValorJson(json, clave)
Dim patron, p, q
patron = """" & clave & """:"""
p = InStr(json, patron)
If p = 0 Then
ValorJson = ""
Exit Function
End If
p = p + Len(patron)
q = InStr(p, json, """")
ValorJson = Replace(Mid(json, p, q - p), "\""", """")
End Function
Function ConsultarRnc(rnc)
Dim http, estado
rnc = Replace(Replace(Trim(rnc), "-", ""), " ", "")
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "https://api.directoriornc.com/api/DGII/" & rnc, False
http.SetTimeouts 10000, 10000, 15000, 15000
http.Send
estado = http.Status
If estado = 200 Then
ConsultarRnc = http.ResponseText ' JSON con los datos
ElseIf estado = 404 Then
ConsultarRnc = "" ' no figura en el registro
ElseIf estado = 429 Then
Err.Raise vbObjectError + 429, , "Limite de uso alcanzado. Reintente en " & _
http.GetResponseHeader("Retry-After") & " segundos."
Else
Err.Raise vbObjectError + estado, , "Error del servicio: HTTP " & estado
End If
End Function
Dim json
json = ConsultarRnc("132790316")
If json <> "" Then
WScript.Echo ValorJson(json, "nombreCompleto") & " - " & ValorJson(json, "estado")
Else
WScript.Echo "No figura en el registro"
End IfNotas Importantes
Gratuita y sin límites: La API es actualmente gratuita y de uso libre. No se requiere registro ni API key para usarla.
Datos públicos: La información proviene de la base de datos pública de la DGII. Puede haber caracteres especiales (ñ, tildes) con encoding no estándar en algunos registros.
Datos siempre frescos: La base de datos se sincroniza automáticamente con la DGII cada madrugada. Además, es posible forzar una actualización manual a través de la API cuando se requiera información al instante.
Uso responsable: Pedimos que hagas un uso responsable de la API. Evita hacer miles de peticiones por minuto. Si necesitas datos masivos, contáctanos.
¿Preguntas o sugerencias?
Contáctanos para reportar problemas, solicitar nuevos endpoints o colaborar en tu integración.
