API & Open Data

Free to read, built to be quoted.

Every band is published as structured data, so search engines, assistants, and anyone building on top of the index can read the same number you do. No key required for read access, no rate you can't reproduce yourself.

Public endpoint JSON-LD on every hub llms.txt published

Look up a band

One endpoint returns the modeled range for a given task in a given state, plus the version of the model that produced it.

GET /v1/rate?task=hvac.fan_motor&state=NC → 200 OK { "task": "hvac.fan_motor", "task_name": "Condenser fan motor replacement", "state": "NC", "quantity": 1, "p25": 295, "p50": 460, "p75": 665, "currency": "USD", "confidence": "Modeled", "model_version": "v0.1", "source": "https://www.fairrateindex.com/method" }
ParameterTypeDescription
taskstringTask id from the task dictionary below, e.g. plumb.wh_40gal.
statestringTwo-letter state code. Required — every band is state-adjusted.
quantitynumberOptional, 1 to 50. Multiplies the band for jobs priced per unit.

Task dictionary

Task idJob
hvac.fan_motorCondenser fan motor replacement
hvac.capacitorRun capacitor replacement
hvac.system_3t3-ton system replacement
plumb.wh_40gal40-gal gas water heater
plumb.leak_repairSupply line leak repair
plumb.toiletToilet replacement
elec.panel_200200A panel replacement
elec.outlet_addAdd a 20A outlet
elec.ev_chargerEV charger circuit
roof.reroof_2000Asphalt reroof, 2,000 sq ft
roof.leak_repairLocalized leak repair
gc.bath_fullFull bathroom remodel
gc.deck_300300 sq ft deck build
paint.room_12x14Interior room repaint, 12×14
paint.exterior_2000Exterior repaint, 2,000 sq ft
land.mow_quarterWeekly mow, ¼ acre
land.tree_removalMid-size tree removal
auto.brakes_frontFront brake pads + rotors
auto.alternatorAlternator replacement
auto.timing_beltTiming belt service

Access & limits

The read endpoint is public and free — no API key for standard lookups.

Requests are rate-limited per IP to keep the endpoint fast for everyone; contact hello@fairrateindex.com for higher-volume access.

Attribution

If you display a band pulled from the API, link back to the source hub or to fairrateindex.com and show the model_version you queried.

The figures are modeled estimates, not quotes or price-fixing guidance — see the disclaimer on every page.

Structured data on every hub

Every trade hub and state page carries JSON-LD in the page itself, so the same numbers shown to a person are readable by a crawler without hitting the API at all.

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Dataset", "name": "Fair Rate Index — HVAC, North Carolina", "license": "https://www.fairrateindex.com/membership-terms", "version": "v0.1" } </script>

A published llms.txt at the site root points assistants and crawlers to the method, sources, and the API itself, so anything quoting the index can quote it correctly.