Sales Tax Rate by ZIP Code: Streamlined Sales Tax States
Pricing
from $4.00 / 1,000 sales tax rates
Sales Tax Rate by ZIP Code: Streamlined Sales Tax States
Sales tax rates by ZIP code or ZIP+4 for the 24 Streamlined Sales Tax member states, from the free SST rate and boundary files: state, county, city and district rates, the combined rate, the food rate and the dates they apply. No CA, TX, NY or FL. Unofficial tool.
Pricing
from $4.00 / 1,000 sales tax rates
Rating
0.0
(0)
Developer
Plain Record Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Security
Limited permissionsShare
Sales Tax Rate by ZIP Code for the Streamlined Sales Tax States
Look up the sales tax rate by ZIP code or ZIP+4 and get the state, county, city and special district rates, the combined rate, the food rate and the dates they apply. The rates come from the free rate and boundary files the Streamlined Sales Tax Governing Board posts for its member states, and every row names the file it came from.
Covered: the 24 Streamlined Sales Tax member states. Arkansas, Georgia, Indiana, Iowa, Kansas, Kentucky, Michigan, Minnesota, Nebraska, Nevada, New Jersey, North Carolina, North Dakota, Ohio, Oklahoma, Rhode Island, South Dakota, Tennessee, Utah, Vermont, Washington, West Virginia, Wisconsin and Wyoming.
Not covered: California, Texas, New York, Florida, Illinois, Pennsylvania, Arizona, Colorado, Louisiana and every other state that is not a member. A ZIP there returns no row and costs nothing.
This is an unofficial tool, not affiliated with the Streamlined Sales Tax Governing Board or any state. It is a lookup, not tax advice. The state files are the source of truth, and the state's own rate lookup is the place to confirm a rate before you file. It is not a certified service provider, so using it does not give you the liability relief the Streamlined agreement gives sellers who use the state files or certified software.
What people use it for
- Invoicing, quoting and checkout tools: a sales tax rates API you can call with the ship to ZIP instead of keeping your own rate table for these states.
- Spreadsheets and bookkeeping: paste a column of customer ZIPs and get the combined rate for each one.
- Rate table updates: run your ZIP list each quarter, or with next quarter's date once the new files are posted.
Input
| Field | What it does |
|---|---|
| ZIP codes | 5-digit ZIPs like 84003 or ZIP+4s like 84003-1234. Up to 10,000 per run. |
| Date | The day the rate should apply, like 2026-10-01. Empty means today. |
| Only these states | Two letter codes like UT or WA. Empty means all 24. Handy for a ZIP on a state line. |
| Max results | A cap on how many rows one run returns. |
Give the ZIP+4 when you have it. A 5-digit ZIP can cover more than one city or district, and when it does, the state's file gives the ZIP the lowest combined rate in it. The ZIP+4 record gives the rate for that part of the ZIP. A ZIP+4 with no record of its own falls back to the 5-digit record, and the row says so.
Output
One row per ZIP and matching record. Most ZIPs return one row. A ZIP that sits in two states' files returns one row per state. This one is from a test run on 2026-10-27:
{"zip": "98101-1234","zip5": "98101","plus4": "1234","state": "WA","stateName": "Washington","matchLevel": "zip+4","date": "2026-10-27","combinedRate": 0.1055,"combinedRatePercent": 10.55,"stateRate": 0.065,"countyFips": null,"countyRate": 0,"placeFips": "63000","placeClass": null,"cityRate": 0.0405,"specialDistrictRate": 0,"specialDistricts": [],"foodCombinedRate": 0.1055,"foodStateRate": 0.065,"combinedInterstateRate": 0.1055,"compositeSerCode": "01726","effectiveFrom": "2026-01-01","effectiveTo": "2027-03-31","rateFile": "WAR2026Q4AUG27.zip","boundaryFile": "WAB2026Q4AUG27.zip","rateFileUrl": "https://www.streamlinedsalestax.org/ratesandboundry/Rates/WAR2026Q4AUG27.zip","boundaryFileUrl": "https://www.streamlinedsalestax.org/ratesandboundry/Boundary/WAB2026Q4AUG27.zip","notes": []}
Washington files its local rate under the city code, so Seattle's 4.05% sits in cityRate here.
Things to know before you rely on it:
- Rates are decimals, so
0.0725is 7.25%.combinedRatePercentgives the same number as a percent. foodCombinedRateis the food and drug rate from the rate file. A state with no separate food rate repeats its general rate there, and that includes states where groceries are not taxed at all, like Washington. Whether food is taxable is set by state law, not by this field. Kansas puts its food rates in a separate file this tool does not read, so Kansas rows leave the food fields empty.- Fifteen of these states also publish address level records. The Streamlined rules say to use the address record when a state has one. This tool reads only the ZIP+4 and 5-digit ZIP records, so for an exact address use the state's own address lookup.
- The files cover the general sales tax rate and the food rate. The Technology Guide says they cannot be used for items a state may tax at another rate, like motor fuel, electricity and gas, or vehicles, boats and aircraft.
effectiveFromandeffectiveToare the days every record in the row is in effect. An emptyeffectiveTomeans the file gives no end date yet.- A ZIP that is not in any member state's file, or that has no record in effect on your date, returns no row. The run's SUMMARY record lists those ZIPs and the reason.
| Field | What it holds |
|---|---|
zip, zip5, plus4 | The ZIP as you gave it, its 5-digit part and the 4-digit extension. |
state, stateName | The member state whose file the row came from. |
matchLevel | zip+4, zip5, or zip5-fallback when a ZIP+4 had no record of its own. |
date | The day the rates were looked up for. |
combinedRate, combinedRatePercent | The total general rate as a decimal and as a percent. |
stateRate, countyRate, cityRate, specialDistrictRate | The parts of the combined rate, as decimals. |
countyFips, placeFips, placeClass | The county and place codes from the boundary file. |
specialDistricts | Each district with its code, type, rate and food rate. |
foodCombinedRate, foodStateRate | The food and drug rate and its state part. |
combinedInterstateRate, compositeSerCode | The rate for sales from out of state and the state's reporting code. |
effectiveFrom, effectiveTo | The days the row's records are in effect. |
rateFile, boundaryFile, rateFileUrl, boundaryFileUrl | The SST files behind the row, with links. |
notes | Anything to know about the row. |
Where the data comes from
Each member state has to publish a rate file and a boundary file in one format, and the Governing Board posts them at
streamlinedsalestax.org under Rate and Boundary Files. States post new files before each quarter when anything
changes. This tool reads an index we build from those files, so a run does not download them. The rateFile and
boundaryFile fields name the exact files behind each row, with links to them.
How fresh it is: early each month we check the posted files and rebuild every state that posted a new one. States post next quarter's files by the first day of the month before the quarter starts, so they are usually in the index weeks before they take effect. A file a state posts or corrects later in a month can take up to a month to show up here. The run's SUMMARY record says when the index was last built and which file each state's rows came from.
FAQ
What is the sales tax rate for my ZIP code? Put the ZIP in ZIP codes and press Start. If the ZIP is in one of the 24 member states you get the combined rate and its parts.
Can I call it as a sales tax rates API? Yes. Call it from the Apify API with a list of ZIPs and read the rows as JSON, CSV or Excel from the run's dataset.
Why is California or Texas missing? They are not Streamlined Sales Tax members, so they do not publish these files. This tool covers only the states that do.
Does it work out the tax on an order? No. It gives you the rates. Which items are taxable, exemptions and shipping rules are up to you and the state.
How current are the rates? As current as the files posted when we last checked, and we check once a month. Each row names its file, and the file name carries the quarter it starts. If a rate looks off, compare it with the linked file or the state's own lookup.
Use it from an AI agent or MCP
AI agents can find and run this Actor through the Apify MCP server. Its search-actors
tool finds it, fetch-actor-details reads the input and output fields described above, and call-actor runs it on
your Apify account at the prices on the Pricing tab. To give an agent only this Actor as a tool, add it to the server
URL: https://mcp.apify.com?tools=plainrecordlabs/sst-sales-tax-rates.
zips is the only field a run needs. For example, this input returns today's rates for a ZIP in Utah and a ZIP+4 in
Seattle:
{ "zips": ["84003", "98101-1234"] }
Pricing
You pay per rate row returned: 0.005 USD a row on the Free and Bronze plans (5 USD per 1,000 rows), 0.0045 on Silver and 0.004 on Gold and up. There is no start fee, and a ZIP that returns no row costs nothing. The Pricing tab has the current prices. Max results and your run's cost limit cap what one run can cost.
Feedback
Need a state's address records or another field? Open an issue on the Issues tab.
Plain Record Labs