curl --request POST \
--url https://api.croma.run/co/dian-trade/profile/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_number": "899999068"
}
'import requests
url = "https://api.croma.run/co/dian-trade/profile/v1"
payload = { "document_number": "899999068" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_number: '899999068'})
};
fetch('https://api.croma.run/co/dian-trade/profile/v1', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.croma.run/co/dian-trade/profile/v1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_number' => '899999068'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.croma.run/co/dian-trade/profile/v1"
payload := strings.NewReader("{\n \"document_number\": \"899999068\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.croma.run/co/dian-trade/profile/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_number\": \"899999068\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/co/dian-trade/profile/v1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_number\": \"899999068\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"as_of": "<string>",
"found": true,
"document_number": "<string>",
"name": "<string>",
"years": [
123
],
"imports": [
{
"id": "<string>",
"flow": "import",
"year": 123,
"through_month": 123,
"rank": 123,
"document_number": "<string>",
"name": "<string>",
"natural_person": true,
"value_usd": 123,
"value_basis": "CIF",
"net_weight_kg": 123,
"declarations": 123,
"declaration_items": 123,
"top_tariff_codes": [
"<string>"
],
"top_tariff_headings": [
"<string>"
],
"top_tariff_subheadings": [
"<string>"
],
"updated_at": "<string>"
}
],
"exports": [
{
"id": "<string>",
"flow": "import",
"year": 123,
"through_month": 123,
"rank": 123,
"document_number": "<string>",
"name": "<string>",
"natural_person": true,
"value_usd": 123,
"value_basis": "CIF",
"net_weight_kg": 123,
"declarations": 123,
"declaration_items": 123,
"top_tariff_codes": [
"<string>"
],
"top_tariff_headings": [
"<string>"
],
"top_tariff_subheadings": [
"<string>"
],
"updated_at": "<string>"
}
]
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}DIAN Company Trade Profile
A Colombian company’s foreign trade history by NIT, from DIAN’s yearly directories of importers and exporters since 2017: its row in each year’s importers directory (rank, CIF value in US dollars, net weight, declarations, main subpartidas arancelarias) and in each year’s exporters directory (rank, FOB value, net weight, declaration items, main subpartidas), newest first. found: false when the NIT appears in no directory. Served by Croma (as_of says how current the data is), brought up to date weekly.
Dataset endpoint: answers from the whole source in milliseconds and carries as_of.
curl --request POST \
--url https://api.croma.run/co/dian-trade/profile/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_number": "899999068"
}
'import requests
url = "https://api.croma.run/co/dian-trade/profile/v1"
payload = { "document_number": "899999068" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_number: '899999068'})
};
fetch('https://api.croma.run/co/dian-trade/profile/v1', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.croma.run/co/dian-trade/profile/v1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_number' => '899999068'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.croma.run/co/dian-trade/profile/v1"
payload := strings.NewReader("{\n \"document_number\": \"899999068\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.croma.run/co/dian-trade/profile/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_number\": \"899999068\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/co/dian-trade/profile/v1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_number\": \"899999068\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"as_of": "<string>",
"found": true,
"document_number": "<string>",
"name": "<string>",
"years": [
123
],
"imports": [
{
"id": "<string>",
"flow": "import",
"year": 123,
"through_month": 123,
"rank": 123,
"document_number": "<string>",
"name": "<string>",
"natural_person": true,
"value_usd": 123,
"value_basis": "CIF",
"net_weight_kg": 123,
"declarations": 123,
"declaration_items": 123,
"top_tariff_codes": [
"<string>"
],
"top_tariff_headings": [
"<string>"
],
"top_tariff_subheadings": [
"<string>"
],
"updated_at": "<string>"
}
],
"exports": [
{
"id": "<string>",
"flow": "import",
"year": 123,
"through_month": 123,
"rank": 123,
"document_number": "<string>",
"name": "<string>",
"natural_person": true,
"value_usd": 123,
"value_basis": "CIF",
"net_weight_kg": 123,
"declarations": 123,
"declaration_items": 123,
"top_tariff_codes": [
"<string>"
],
"top_tariff_headings": [
"<string>"
],
"top_tariff_subheadings": [
"<string>"
],
"updated_at": "<string>"
}
]
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}Authorizations
Use Authorization: Bearer YOUR_API_KEY
Headers
Optional client-chosen key for this request (any string up to 255 characters, e.g. a UUID). Every Croma operation is an idempotent lookup: repeating a request with the same body returns the same result and creates nothing, so retrying after a timeout or network failure is always safe. The key is echoed back in the Idempotency-Key response header so you can correlate a retry with its first attempt. Each attempt that reaches the API counts against the rate limit.
255"0f8e9a42-6b7c-4d1e-9a3f-2c5d7e8f9a0b"
Body
Colombian NIT (numeric, no verification digit). 4-15 digits.
4 - 15^\d{4,15}$Response
Successful response
Show child attributes
Show child attributes