situs.tax Get an API key

How it works

A rate lookup is a ladder. Each rung is more accurate than the one below it, and the response tells you which one you landed on.

1. Place the address

An address is geocoded to a point. That point is tested against the actual boundaries of every taxing jurisdiction we hold: state, county, city, transit district, and the special districts that make US sales tax hard. When that works you get precision: "address".

2. Fall back to the ZIP, and say so

When an address cannot be placed, or when we do not hold boundaries for that area yet, the lookup falls back: to a named city or county district where we have one, then to the ZIP code's rate, and in the last resort to the state rate alone. Those answers are still useful, and the ZIP rung is wrong often enough to matter: about 1 address in 11, by up to 2.70 percentage points in the worst ZIPs. So the response says precision: "zip" rather than presenting a floor as a fact. The measurement.

3. Report coverage honestly

coverage is separate from precision. It answers a different question: is the rate we just gave you the whole answer? If a local district that can tax this point is missing from our data, the rate can only be too low, never too high, and coverage: "approximate" tells you that before you charge somebody.

This is the field to read on a state answer, because the same precision covers two opposite situations. New Jersey returns 6.625% with coverage: "exact", and that is the whole rate: no locality in New Jersey levies a sales tax. Colorado returns 2.9% with coverage: "approximate", roughly five points short, because its home-rule cities publish no dataset we can use. precision alone cannot tell those apart, which is why coverage exists.

4. Keep every version

Rate data arrives from official state sources each quarter and is loaded alongside what is already there, never over it. Nothing is overwritten, so ?date= can answer for any past day, and a rate you charged in March is still explainable in November.

Where the data comes from

Official state publications and the Streamlined Sales Tax rate files, loaded directly and checksummed. Every response names its source, so a disputed rate can be traced to the document it came from rather than to a vendor's assurance.