Free · CC-BY-4.0 · No auth

Calcinum Tax Data API

Free read-only JSON endpoints for 2026 US federal & state tax data. Use these to build your own paycheck tools, payroll integrations, or research projects without re-curating tax data from 50 state revenue department websites.

  • License: CC BY 4.0, credit Calcinum with a link.
  • Auth: none. CORS open.
  • Cache: 24-hour CDN cache. Data refreshes daily.
  • Stability: v1 endpoint structure won't change. New tax years are added under the same shape.

Endpoints

GET /api/v1/federal-brackets.json

2026 and 2025 federal tax brackets (single / married / HoH), standard deductions, FICA rates, SE constants.

curl https://calcinum.com/api/v1/federal-brackets.json
Example response
{
  "2026": {
    "brackets": {
      "single": [
        { "limit": 12400, "rate": 0.10 },
        { "limit": 50400, "rate": 0.12 },
        ...
      ]
    },
    "standard_deduction": {
      "single": 16100,
      "married": 32200,
      "hoh": 24150
    }
  },
  "fica": { ... }
}

GET /api/v1/states.json

Tax configuration for all 50 states + DC: flat or progressive, rate or brackets, local tax flag, standard deduction notes.

curl https://calcinum.com/api/v1/states.json
Example response
{
  "states": [
    {
      "slug": "california",
      "name": "California",
      "abbreviation": "CA",
      "tax_type": "progressive",
      "brackets": [
        { "min": 0, "max": 10756, "rate": 0.01 },
        ...
      ],
      "has_local_tax": false
    },
    {
      "slug": "florida",
      "name": "Florida",
      "tax_type": "none"
    },
    ...
  ]
}

GET /api/v1/paycheck-report.json

Pre-computed take-home pay for all states at $50K, $75K, $100K (single filer). Updated daily.

curl https://calcinum.com/api/v1/paycheck-report.json

Quick examples

Python

import requests

data = requests.get("https://calcinum.com/api/v1/federal-brackets.json").json()
brackets_2026 = data["2026"]["brackets"]["single"]
std_ded = data["2026"]["standard_deduction"]["single"]

def federal_tax(salary):
    taxable = max(0, salary - std_ded)
    tax, prev = 0, 0
    for b in brackets_2026:
        limit = b["limit"] or float("inf")
        if taxable <= prev: break
        tax += (min(taxable, limit) - prev) * b["rate"]
        prev = limit
    return tax

print(federal_tax(75000))  # → 8,558.00

JavaScript

const data = await fetch("https://calcinum.com/api/v1/states.json").then(r => r.json());
const ca = data.states.find(s => s.slug === "california");
console.log(`CA top rate: ${ca.brackets.at(-1).rate * 100}%`);

Attribution

If you use this data, please link back to Calcinum. Suggested formats:

Tax data via <a href="https://calcinum.com">Calcinum</a>
Source: Calcinum (https://calcinum.com), CC-BY-4.0