US Salary & Cost of Living API + MCP Server (Free Tier)

The Kultranz API turns the data engine behind this site into clean JSON: 2026 take-home pay for all 50 states + DC, cost-of-living comparisons across 50 metros, and real BLS wage percentiles by job and city. Nine REST endpoints plus a remote MCP server, with every number traceable to a named federal release: BLS OEWS wages, BEA Regional Price Parities, Census ACS housing and income, IRS 2026 tax rules. No estimates, no scraping, no guesswork - the same engine that powers the calculators on this site, exposed for developers.

Free to start: 25 requests a day, no key, no signup, no credit card.

Start free

Base URL: https://api.kultranz.com. One curl is the whole onboarding:

curl "https://api.kultranz.com/paycheck?salary=120000&state=CA&filingStatus=single"

What a call returns

A live response from GET /cost-of-living - two metros, their BEA price parities, and the salary you would need in the second city to hold purchasing power constant:

{
  "data": {
    "from": { "city": "Austin, TX", "rpp": 98.1 },
    "to": { "city": "San Francisco, CA", "rpp": 115.6 },
    "equivalent_salary": 117838.94,
    "gap_pct": 17.84
  },
  "meta": {
    "source": "BLS OEWS + BEA RPP + U.S. Census ACS + IRS (via kultranz.com)",
    "vintage": "2026",
    "year": 2026
  }
}

Every response carries the same meta envelope naming the source agencies and the data vintage, so a downstream product can display provenance without hard-coding it. Errors return { "error": { "code": "...", "message": "..." } } with the appropriate HTTP status.

Pricing

TierPriceQuota
Free$025 requests/day, no card, no key
Data Pass$5 one-timeno daily cap - direct billing, limited to the first 500 buyers
RapidAPI Pro$10/mo100,000 requests/month
RapidAPI Ultra$15/momarketplace tier for heavier volume
RapidAPI Mega$20/motop marketplace tier for production volume

Buy the $5 Data Pass →

The Data Pass is direct billing - one payment, yours for the life of the API, no subscription to cancel. After the first 500 are sold, the pass becomes $5/month for everyone after.

Prefer a marketplace? The same API is listed on RapidAPI, where keys, metering and billing are handled for you: Pro at $10/month per 100,000 requests. Ultra and Mega are mid-reprice on the marketplace dashboard: they bill $49/month and $199/month today, moving to $15/month and $20/month, so check the listing before subscribing. Direct billing via the $5 Data Pass is live now and stays the cheap route.

Building a product on the data? Data licensing covers the maintained feed, bulk exports, commercial redistribution and white-label rights: Business at $19/mo and Redistribution at $20/mo (launch pricing), both self-serve at the Business checkout and the Redistribution checkout.

Need salary data for a negotiation? The $19 Salary Negotiation Brief (our product) turns the same BLS and BEA data into a one-page counter-offer packet. Starting one instead? The free counter-offer email template on the same page costs an email address, not $19.

Disclosure: the Data Pass and the RapidAPI listing are both ours - this is our API, sold direct and through a marketplace. Questions or bulk/commercial needs: [email protected].

The MCP server at /mcp is free with a generous 200 tool calls per day per visitor. It only exposes what the site’s public calculators already give away.

REST endpoints

EndpointReturnsExample
GET /paycheckTake-home pay: federal + FICA + state?salary=120000&state=CA&filingStatus=single
GET /cost-of-livingEquivalent salary between two metros (BEA RPP)?fromCity=Austin, TX&toCity=San Francisco, CA&salary=100000
GET /tax-brackets2026 federal + one state’s brackets?state=NY&filingStatus=single
GET /col-index50-metro RPP table with rent/home/income?city=Albuquerque, NM
GET /salariesReal BLS wage percentiles by job x city?job=nurse&city=Chicago
GET /compound-interestFuture value + yearly series?principal=10000&monthly=500&rate=7&years=20
GET /net-worthAssets, liabilities, net worth?cash=10000&investments=150000
GET /debt-payoffAvalanche / snowball schedule?debts=[{"name":"Card","balance":5000,"rate":22,"min":150}]&extra=200
GET /budget50/30/20 split or full category budget?income=5000

Parameter details:

  • /paycheck - salary (required, > 0), state (required, two-letter code, 50 states + DC), filingStatus (single | mfj, default single), pretax401k (optional, >= 0).
  • /cost-of-living - fromCity, toCity (required, exact metro names as returned by /col-index), salary (default 100000), rich=1 adds a per-category monthly cost breakdown for both cities.
  • /tax-brackets - state (optional; omit for federal only), filingStatus. Returns the standard deduction and the full bracket ladder.
  • /col-index - city optional; omit for the full 50-metro table.
  • /salaries - job and/or city (partial match, e.g. nurse, Chicago), optional state. Up to 100 records, 16 fields each: percentiles (10th/25th/median/75th/90th), averages, employment, and the metro’s cost-of-living context.

Examples

Take-home pay (curl)

curl "https://api.kultranz.com/paycheck?salary=120000&state=CA&filingStatus=single&pretax401k=10000"
{
  "data": {
    "gross": 120000,
    "pretax": 10000,
    "taxable_income": 93900,
    "federal_tax": 15370,
    "social_security": 7440,
    "medicare": 1740,
    "state_tax": 6153.42,
    "total_tax": 30703.42,
    "net": 79296.58,
    "effective_rate": 25.59
  },
  "meta": { "source": "BLS OEWS + BEA RPP + U.S. Census ACS + IRS (via kultranz.com)", "vintage": "2026", "year": 2026 }
}

Cost of living (curl)

curl "https://api.kultranz.com/cost-of-living?fromCity=Austin,%20TX&toCity=San%20Francisco,%20CA&salary=100000"

Salary percentiles (curl)

curl "https://api.kultranz.com/salaries?job=nurse&city=Chicago"
{
  "data": {
    "count": 1,
    "records": [
      {
        "job_title": "Registered Nurse",
        "job_code": "29-1141",
        "city": "Chicago",
        "state": "IL",
        "avg_salary": 90810.0,
        "salary_10th": 67560.0,
        "salary_25th": 79590.0,
        "salary_median": 85160.0,
        "salary_75th": 102440.0,
        "salary_90th": 107980.0,
        "national_avg": 94480.0,
        "employment": 102330,
        "rpp_all_items": 103.595,
        "median_rent": 1380.0,
        "median_home_value": 315200.0,
        "city_median_income": 75134.0,
        "city_population": 2707648
      }
    ]
  },
  "meta": { "source": "BLS OEWS + BEA RPP + U.S. Census ACS + IRS (via kultranz.com)", "vintage": "2026", "year": 2026 }
}

Python

import requests

BASE = "https://api.kultranz.com"

r = requests.get(f"{BASE}/paycheck", params={
    "salary": 120000, "state": "CA", "filingStatus": "single"
})
pay = r.json()
print(pay["data"]["net"], "take-home on", pay["data"]["gross"])

r = requests.get(f"{BASE}/cost-of-living", params={
    "fromCity": "Austin, TX", "toCity": "San Francisco, CA", "salary": 100000
})
col = r.json()["data"]
print(f'${col["equivalent_salary"]:,.2f} in {col["to"]["city"]} '
      f'= $100,000 in {col["from"]["city"]} ({col["gap_pct"]:+.2f}%)')

MCP server

The same data engine is exposed as a remote MCP server - no install, no local process, no API key.

Endpointhttps://api.kultranz.com/mcp (POST)
TransportStreamable HTTP (stateless - the spec-permitted no-session mode; GET answers 405)
AuthNone required
Protocol versions2025-06-18 (latest), 2025-03-26, 2024-11-05
Content typeapplication/json (anything else gets 415)
CostFree, 200 tool calls/day

The five tools

ToolWhat it doesArguments
get_take_home_pay2026 net pay: federal + Social Security + Medicare + state, all 50 states + DCsalary, state (2-letter), filingStatus (single|mfj), pretax401k
compare_cost_of_livingEquivalent salary between two metros from BEA parities, with per-category monthly breakdownfromCity, toCity, salary (default 100000)
get_tax_brackets2026 IRS brackets + standard deduction, plus one state’s rules (none / flat / progressive)state, filingStatus
list_metrosThe 50 supported metros with RPP index, median rent, home value, incomecity (optional, one metro)
get_salary_percentilesBLS OEWS annual wages - 10th/25th/median/75th/90th - by job and metrojob, city, state (at least one)

* required. City names must match list_metros exactly (e.g. "Austin, TX"); call list_metros first to resolve them. Tool results carry both content (JSON text) and structuredContent with the same data + meta envelope as the REST API.

Why five tools and not nine: the four generic calculators (compound interest, net worth, debt payoff, budget) are arithmetic any model can already do. These five are the ones that need the 50-state tax engine, BEA parities or BLS wage tables - things a model genuinely cannot compute by itself.

curl

# 1. initialize
curl https://api.kultranz.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

# 2. tools/call (after the initialized notification)
curl https://api.kultranz.com/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_take_home_pay","arguments":{"salary":120000,"state":"TX"}}}'

Python client

import requests

MCP = "https://api.kultranz.com/mcp"

def rpc(id, method, params=None):
    body = {"jsonrpc": "2.0", "id": id, "method": method}
    if params is not None:
        body["params"] = params
    return requests.post(MCP, json=body, timeout=30).json()

# handshake: initialize -> initialized notification -> call tools
rpc(1, "initialize", {
    "protocolVersion": "2025-06-18",
    "capabilities": {},
    "clientInfo": {"name": "example", "version": "0"},
})
requests.post(MCP, json={"jsonrpc": "2.0", "method": "notifications/initialized"})

result = rpc(2, "tools/call", {
    "name": "compare_cost_of_living",
    "arguments": {"fromCity": "Austin, TX", "toCity": "San Francisco, CA", "salary": 100000},
})
data = result["result"]["structuredContent"]["data"]
print(f'${data["equivalent_salary"]:,.2f} needed in {data["to"]["city"]}')

Client setup

Claude Code:

claude mcp add --transport http kultranz https://api.kultranz.com/mcp

Claude Desktop: Settings -> Extensions -> Connectors -> Add custom connector. Name kultranz, URL https://api.kultranz.com/mcp, no key.

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "kultranz": { "url": "https://api.kultranz.com/mcp" }
  }
}

Windsurf (~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "kultranz": { "serverUrl": "https://api.kultranz.com/mcp" }
  }
}

Then just ask: “what does a nurse earn in Chicago, adjusted for cost of living?” or “compare $120k take-home in Texas vs California”.

Data & limits

The honest version, because you should know what you are building on:

  • Coverage: 50 US metro areas and 20 occupations (1,000 job x metro rows) in the salary dataset; 51 tax jurisdictions (50 states + DC). This is a curated dataset, not every BLS occupation. The full metro list is one call away: GET /col-index.
  • Vintage: the tax engine is 2026 - IRS Rev. Proc. 2025-32 brackets, $16,100/$32,200 standard deduction, $184,500 Social Security wage base, state brackets per Tax Foundation’s 2026 compilation. Cost-of-living uses BEA Regional Price Parities (US average = 100); wages are BLS OEWS as named on the methodology page. Each government release is annual; we ship refreshes within 30 days of publication.
  • Nulls are real: a few metros (e.g. Arlington, TX and Cleveland, OH) lack Census ACS housing fields; those come back null rather than an interpolated guess. Every response’s meta names the sources and vintage so you can label provenance in your own product.
  • Tax model scope: estimates, not tax advice. It covers federal income tax, FICA and state income tax for single and mfj. It excludes local/city income taxes (NYC, Philadelphia), credits and itemized deductions. Washington and New Hampshire levy no tax on wage income and are modeled as no-tax. A handful of states’ MFJ standard deduction is approximated at 2x single where the exact figure was unavailable - flagged in the methodology.
  • No fabrication: if a number is not in a source, it is null, not invented. The calculations (equivalent salary, take-home, affordability ratios) are documented formulas on the methodology page.

Commercial & bulk licensing

Building a product on this data? Beyond the metered API, the full dataset is licensed directly: bulk JSON/CSV exports, commercial-use and white-label rights, annual refresh as BLS/BEA/Census publish, and a data-refresh SLA. The per-record shape is public - 16 fields per job x metro row, each traceable to a named federal release (see the free CC BY dataset for the columns). Business ($19/mo) and Redistribution ($20/mo) are self-serve checkout: start Business or start Redistribution. For volume pricing or custom terms, email [email protected] for a quote and an evaluation dataset.

Try it

The calculators on this site call these endpoints under the hood. Run the paycheck calculator, the cost-of-living tool, or browse salaries by job to see the data in action - then hit the API directly when you’re ready to build.

Frequently Asked Questions

Yes - 25 requests per day, no credit card, no key required to start. If you outgrow it, a $5 lifetime pass (first 500 buyers) removes the daily cap.

Yes. https://api.kultranz.com/mcp is a remote MCP server on the Streamable HTTP transport with five tools: take-home pay, cost-of-living comparison, tax brackets, metro list and BLS salary percentiles. No authentication, 200 tool calls per day per visitor, works in Claude, Cursor and Windsurf.

Wages come from the BLS Occupational Employment and Wage Statistics (OEWS). Cost-of-living uses BEA Regional Price Parities. Rent, home values and income come from the U.S. Census ACS. Tax rules are IRS 2026 (Rev. Proc. 2025-32), the SSA 2026 wage base, and Tax Foundation 2026 state brackets.

No. Direct calls to https://api.kultranz.com need no key. The MCP endpoint at /mcp is also open. If you prefer marketplace billing and metering, the same API is listed on RapidAPI.

Annually, as each government source refreshes - within 30 days of each BLS, BEA and Census release, and before each tax year opens for IRS figures. The current tax engine is the 2026 tax year.