Taxrates.io API
taxrates · Finance
Introduction Taxrates.io is a global tax rate service that automates the management of monitoring tax rates changes in 181 countries. We monitor over 14,000 US sales tax, VAT, GST rates for you and make updates via our API so you always have the most update tax rates. You can use Taxrates.io as a virtual sandbox where we provide you with 30 days free trial. Countries We currently support the following countries around the world. If you would like to request the
Authentication
Sample Requests
Get request. This method returns all tax rates for country discovered based on country code. The country code must be 2 letters ISO 3166-1 alfa-2 country code (see here for more information). You can use 'filter' parameter to
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/countrycode?zip=71642&date=2020-09-02&domain=api.taxrates.io&filter=&province =&country_code=US&product_codes[]=C010"
import requests
params = {
"zip": "71642",
"date": "2020-09-02",
"domain": "api.taxrates.io",
"filter": "",
"province ": "",
"country_code": "US",
"product_codes[]": "C010"
}
response = requests.get(
"https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/countrycode",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/countrycode');
url.searchParams.set('zip', '71642');
url.searchParams.set('date', '2020-09-02');
url.searchParams.set('domain', 'api.taxrates.io');
url.searchParams.set('filter', '');
url.searchParams.set('province ', '');
url.searchParams.set('country_code', 'US');
url.searchParams.set('product_codes[]', 'C010');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/countrycode")
q := baseURL.Query()
q.Set("zip", "71642")
q.Set("date", "2020-09-02")
q.Set("domain", "api.taxrates.io")
q.Set("filter", "")
q.Set("province ", "")
q.Set("country_code", "US")
q.Set("product_codes[]", "C010")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/countrycode")
uri.query = URI.encode_www_form({
"zip" => "71642",
"date" => "2020-09-02",
"domain" => "api.taxrates.io",
"filter" => "",
"province " => "",
"country_code" => "US",
"product_codes[]" => "C010"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/countrycode?" . http_build_query([
"zip" => "71642",
"date" => "2020-09-02",
"domain" => "api.taxrates.io",
"filter" => "",
"province " => "",
"country_code" => "US",
"product_codes[]" => "C010"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Get request. This method returns all tax rates for country discovered on either your IP address or IP address param. The IP param is not required. When empty, the taxrates.io will try to discover your IP address and based on this will retrieve the tax rates. You can use 'filter' parameter to narrow
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/ip?ip=86.139.70.49&zip=&domain=api.taxrates.io&filter=&product_code=C010"
import requests
params = {
"ip": "86.139.70.49",
"zip": "",
"domain": "api.taxrates.io",
"filter": "",
"product_code": "C010"
}
response = requests.get(
"https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/ip",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/ip');
url.searchParams.set('ip', '86.139.70.49');
url.searchParams.set('zip', '');
url.searchParams.set('domain', 'api.taxrates.io');
url.searchParams.set('filter', '');
url.searchParams.set('product_code', 'C010');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/ip")
q := baseURL.Query()
q.Set("ip", "86.139.70.49")
q.Set("zip", "")
q.Set("domain", "api.taxrates.io")
q.Set("filter", "")
q.Set("product_code", "C010")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/ip")
uri.query = URI.encode_www_form({
"ip" => "86.139.70.49",
"zip" => "",
"domain" => "api.taxrates.io",
"filter" => "",
"product_code" => "C010"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v1/tax/ip?" . http_build_query([
"ip" => "86.139.70.49",
"zip" => "",
"domain" => "api.taxrates.io",
"filter" => "",
"product_code" => "C010"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Get request. This method returns all tax rates configured on your account. Based on your country selection the endpoint will return all taxes for all countries. You can use the 'filter' parameter to narrow results to selected type of tax. Use 'zip' parameter when you have selected the United Stat
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v3/tax/rates?cursor=&domain=%3Cstring%3E&filter=&Product_code=C012"
import requests
params = {
"cursor": "",
"domain": "<string>",
"filter": "",
"Product_code": "C012"
}
response = requests.get(
"https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v3/tax/rates",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v3/tax/rates');
url.searchParams.set('cursor', '');
url.searchParams.set('domain', '<string>');
url.searchParams.set('filter', '');
url.searchParams.set('Product_code', 'C012');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v3/tax/rates")
q := baseURL.Query()
q.Set("cursor", "")
q.Set("domain", "<string>")
q.Set("filter", "")
q.Set("Product_code", "C012")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v3/tax/rates")
uri.query = URI.encode_www_form({
"cursor" => "",
"domain" => "<string>",
"filter" => "",
"Product_code" => "C012"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/taxrates.io/1.0.0/v3/tax/rates?" . http_build_query([
"cursor" => "",
"domain" => "<string>",
"filter" => "",
"Product_code" => "C012"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with Taxrates.io API?
Taxrates.io API is a Finance API. Developers commonly use finance APIs for:
- processing payments and handling transactions
- building subscription and billing systems
- automating invoicing and financial reporting
- fraud detection and risk scoring
- connecting to banking and accounting software
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Taxrates.io API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide · Learn about API keys · What is REST?