The fastest path from zero to a working integration. Base URL: https://api.kultranz.com. No key, no signup, no credit card - the first 10 requests every day are free. Every response below is real output you can reproduce right now.
Three calls you can make in the next minute
1. Take-home pay for any state
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
}
}
Full 2026 federal brackets, all 50 states + DC, FICA, and the SSA wage base - one flat JSON object.
2. Cost-of-living comparison between two metros
curl "https://api.kultranz.com/cost-of-living?fromCity=Austin,%20TX&toCity=San%20Francisco,%20CA&salary=100000"
{
"data": {
"from": { "city": "Austin, TX", "rpp": 98.066 },
"to": { "city": "San Francisco, CA", "rpp": 115.613 },
"equivalent_salary": 117893.05,
"gap_pct": 17.89
},
"meta": {
"source": "BLS OEWS + BEA RPP + U.S. Census ACS + IRS (via kultranz.com)",
"vintage": "2026",
"year": 2026
}
}
That is the salary negotiation number: what $100,000 in Austin buys in San Francisco, from BEA Regional Price Parities across 50 metros.
3. Real BLS salary percentiles by job and city
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,
"salary_10th": 67560,
"salary_25th": 79590,
"salary_median": 85160,
"salary_75th": 102440,
"salary_90th": 107980,
"national_avg": 94480,
"employment": 102330,
"rpp_all_items": 103.595,
"median_rent": 1380,
"median_home_value": 315200,
"city_median_income": 75134,
"city_population": 2707648
}
]
},
"meta": {
"source": "BLS OEWS + BEA RPP + U.S. Census ACS + IRS (via kultranz.com)",
"vintage": "2026",
"year": 2026
}
}
Actual BLS OEWS percentiles (10th through 90th), not modeled estimates, refreshed to the May-2025 BLS release. Nine endpoints total - the full list with parameters is in the API reference.
The free tier, exactly
- 10 GET requests per day, per IP, UTC midnight to UTC midnight. No key, no account.
- Every response carries
X-RateLimit-Limit: 10and a liveX-RateLimit-Remainingcountdown, so your code can see the quota as it spends it. - Request 11 returns
429with a machine-readableupgradeobject and aRetry-Afterheader counting seconds to UTC midnight:
{
"error": {
"code": "rate_limited",
"message": "You've used all 10 free requests today. The $5 lifetime key removes all limits forever: https://kultranz.com/pages/api-quickstart/#data-pass — or come back tomorrow."
},
"upgrade": {
"product": "Kultranz Data Pass",
"price": "$5 one-time, lifetime",
"url": "https://api.kultranz.com/billing/buy"
}
}
- The MCP server at
https://api.kultranz.com/mcphas its own separate budget - 200 tool calls/day - and never counts against the 10.
Integrate in 5 minutes
Python
import requests
BASE = "https://api.kultranz.com"
def take_home(salary: int, state: str) -> dict:
r = requests.get(f"{BASE}/paycheck", params={
"salary": salary, "state": state, "filingStatus": "single",
}, timeout=10)
r.raise_for_status()
return r.json()["data"]
def city_pair(job: str, city: str) -> list[dict]:
r = requests.get(f"{BASE}/salaries", params={"job": job, "city": city}, timeout=10)
r.raise_for_status()
return r.json()["data"]["records"]
pay = take_home(120000, "CA")
print(f'${pay["net"]:,.2f} take-home on ${pay["gross"]:,} in California')
for rec in city_pair("nurse", "Chicago"):
print(rec["job_title"], "median in", rec["city"], ":", f'${rec["salary_median"]:,}')
JavaScript (fetch, browser or Node 18+)
const BASE = "https://api.kultranz.com";
async function takeHome(salary, state) {
const url = new URL("/paycheck", BASE);
url.searchParams.set("salary", salary);
url.searchParams.set("state", state);
url.searchParams.set("filingStatus", "single");
const res = await fetch(url); // CORS is open: works from any origin
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { data, meta } = await res.json();
return data; // { net, federal_tax, state_tax, ... }
}
// Watch the free-tier countdown from the browser:
// res.headers.get("X-RateLimit-Remaining") is exposed via CORS.
takeHome(120000, "CA").then((p) => console.log(p.net));
Both snippets honor the golden rule of the free tier: cache what you fetch. Tax brackets and RPP indexes change a few times a year; there is no reason to spend quota re-pulling them per request.
Hitting the free tier limit?
The $5 Data Pass removes all rate limits forever. No subscription, no renewal - one payment, lifetime access, limited to the first 500 buyers.
The pass is a Polar license key, delivered by email within a minute. Use it on any request:
curl "https://api.kultranz.com/paycheck?salary=120000&state=CA" \
-H "Authorization: Bearer YOUR-KEY"
# or, browser-friendly:
curl "https://api.kultranz.com/paycheck?salary=120000&state=CA" \
-H "X-Api-Key: YOUR-KEY"
Nothing to activate - the first request with the key works, and no daily cap applies for the life of the API. Prefer marketplace billing? The same API is on RapidAPI with metered tiers.
Where to go next
- Full API reference - all nine endpoints, parameters, the MCP server, and data provenance.
- MCP server - five tools for Claude, Cursor and Windsurf at
https://api.kultranz.com/mcp, no auth. - Methodology - exactly which federal release every number comes from.