Estimate import tax for a listing
curl --request POST \
--url https://import.kopagari.com/v1/estimate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://www.beforward.jp/toyota/vitz/sc123456/"
}
'import requests
url = "https://import.kopagari.com/v1/estimate"
payload = { "url": "https://www.beforward.jp/toyota/vitz/sc123456/" }
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({url: 'https://www.beforward.jp/toyota/vitz/sc123456/'})
};
fetch('https://import.kopagari.com/v1/estimate', 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://import.kopagari.com/v1/estimate",
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([
'url' => 'https://www.beforward.jp/toyota/vitz/sc123456/'
]),
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://import.kopagari.com/v1/estimate"
payload := strings.NewReader("{\n \"url\": \"https://www.beforward.jp/toyota/vitz/sc123456/\"\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://import.kopagari.com/v1/estimate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://www.beforward.jp/toyota/vitz/sc123456/\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://import.kopagari.com/v1/estimate")
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 \"url\": \"https://www.beforward.jp/toyota/vitz/sc123456/\"\n}"
response = http.request(request)
puts response.read_body{
"input": {
"url": "<string>"
},
"car": {
"make": "TOYOTA",
"model": "VITZ",
"modelCode": "SJ5",
"rawModelCode": "DBA-SJ5",
"version": "S",
"year": 2017,
"engine_cc": 1490,
"fuel": "PETROL",
"fobPriceUSD": 8500,
"cfPriceUSD": 11234,
"images": [
"<string>"
],
"conditionReportUrl": "<string>"
},
"matched": {
"make": "TOYOTA",
"makeId": 1500298,
"modelBody": "VITZ - SJ5 - SEDAN",
"matchType": "exact_code",
"matchReason": "<string>",
"confidence": "high",
"adjustments": [
{
"field": "yom",
"from": "<unknown>",
"to": "<unknown>",
"reason": "TRA has no 2013 entry for this model; using nearest year 1999."
}
],
"yom": 2017,
"country": "JAPAN",
"fuelType": "PETROL",
"capacityBand": "1501 - 2000 CC"
},
"tax": {
"referenceNumber": "25264120160",
"make": "<string>",
"model": "<string>",
"bodyType": "SUV",
"modelBody": "<string>",
"yom": 123,
"country": "<string>",
"fuelType": "<string>",
"engineCapacity": "1501 - 2000 CC",
"cifInUSD": "2,439.00",
"importDutyInUSD": "609.75",
"exiseDutyInUSD": "152.44",
"exiseDutyDueToAgeInUSD": "914.63",
"vatInUSD": "797.86",
"customProcessingFeeInUSD": "14.63",
"railwayDevLevyInUSD": "48.78",
"indDevLevy": "0.00",
"hivRespLevy": "150,000.00",
"totalImportTaxesInUSD": "2,538.08",
"totalImportTaxesInTZS": "6,512,672.49",
"vehicleRegistrationFeeInTZS": "500,000.00",
"totalTaxesInTZS": "7,162,672.49",
"quarter": 4,
"year": 2025
},
"cached": true
}{
"error": "<string>"
}{
"error": "Invalid or missing API key"
}{
"error": "<string>"
}API Reference
Estimate import tax for a listing
Scrape a vehicle listing, match it to the TRA database, and return the full TRA tax breakdown. Results are cached for 14 days per URL.
POST
/
v1
/
estimate
Estimate import tax for a listing
curl --request POST \
--url https://import.kopagari.com/v1/estimate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://www.beforward.jp/toyota/vitz/sc123456/"
}
'import requests
url = "https://import.kopagari.com/v1/estimate"
payload = { "url": "https://www.beforward.jp/toyota/vitz/sc123456/" }
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({url: 'https://www.beforward.jp/toyota/vitz/sc123456/'})
};
fetch('https://import.kopagari.com/v1/estimate', 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://import.kopagari.com/v1/estimate",
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([
'url' => 'https://www.beforward.jp/toyota/vitz/sc123456/'
]),
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://import.kopagari.com/v1/estimate"
payload := strings.NewReader("{\n \"url\": \"https://www.beforward.jp/toyota/vitz/sc123456/\"\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://import.kopagari.com/v1/estimate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://www.beforward.jp/toyota/vitz/sc123456/\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://import.kopagari.com/v1/estimate")
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 \"url\": \"https://www.beforward.jp/toyota/vitz/sc123456/\"\n}"
response = http.request(request)
puts response.read_body{
"input": {
"url": "<string>"
},
"car": {
"make": "TOYOTA",
"model": "VITZ",
"modelCode": "SJ5",
"rawModelCode": "DBA-SJ5",
"version": "S",
"year": 2017,
"engine_cc": 1490,
"fuel": "PETROL",
"fobPriceUSD": 8500,
"cfPriceUSD": 11234,
"images": [
"<string>"
],
"conditionReportUrl": "<string>"
},
"matched": {
"make": "TOYOTA",
"makeId": 1500298,
"modelBody": "VITZ - SJ5 - SEDAN",
"matchType": "exact_code",
"matchReason": "<string>",
"confidence": "high",
"adjustments": [
{
"field": "yom",
"from": "<unknown>",
"to": "<unknown>",
"reason": "TRA has no 2013 entry for this model; using nearest year 1999."
}
],
"yom": 2017,
"country": "JAPAN",
"fuelType": "PETROL",
"capacityBand": "1501 - 2000 CC"
},
"tax": {
"referenceNumber": "25264120160",
"make": "<string>",
"model": "<string>",
"bodyType": "SUV",
"modelBody": "<string>",
"yom": 123,
"country": "<string>",
"fuelType": "<string>",
"engineCapacity": "1501 - 2000 CC",
"cifInUSD": "2,439.00",
"importDutyInUSD": "609.75",
"exiseDutyInUSD": "152.44",
"exiseDutyDueToAgeInUSD": "914.63",
"vatInUSD": "797.86",
"customProcessingFeeInUSD": "14.63",
"railwayDevLevyInUSD": "48.78",
"indDevLevy": "0.00",
"hivRespLevy": "150,000.00",
"totalImportTaxesInUSD": "2,538.08",
"totalImportTaxesInTZS": "6,512,672.49",
"vehicleRegistrationFeeInTZS": "500,000.00",
"totalTaxesInTZS": "7,162,672.49",
"quarter": 4,
"year": 2025
},
"cached": true
}{
"error": "<string>"
}{
"error": "Invalid or missing API key"
}{
"error": "<string>"
}Authorizations
bearerAuthapiKeyHeader
Send your API key as Authorization: Bearer <key>.
Body
application/json
A vehicle listing URL from a supported auction site.
Response
Estimate result
Show child attributes
Show child attributes
Vehicle attributes scraped from the listing.
Show child attributes
Show child attributes
How the scraped vehicle was resolved against the TRA database.
Show child attributes
Show child attributes
The TRA tax breakdown. Monetary fields are formatted strings (e.g. "2,439.00").
Show child attributes
Show child attributes
Whether the result was served from cache.
⌘I