For Loan Officers & Lenders

See where your published rate ranks in the market — via API

Send your published rate for a state and product and get back a market percentile, basis points versus the median, and a leading / competitive / overpriced verdict — computed from live credit union offers. This page explains how the API works and what it returns; the interactive tool lives in the dashboard.

Last updated: June 9, 2026
Quick Answer

How Do Loan Officers Check If Their Rate Is Competitive?

Loan officers and lenders use the RateAPI competitive-position endpoint to find out exactly where their published rate ranks against the live market. You POST a state, product (30-year or 15-year fixed), and your rate to /v1/competitive-position, and the API returns your market percentile, how many basis points you sit above or below the state median, and a plain-English verdict. It is a first-class “is my offer competitive?” check — distinct from borrower-side quote validation.

See the live credit union mortgage rates powering this benchmark, compare against the national mortgage rate benchmark, or browse other RateAPI use cases.

You Set a Rate Sheet, but You Cannot See Where It Lands

Every morning a rate sheet goes out. The pricing desk knows the cost side, but the question that actually moves a deal — is this rate winning, or am I leaving it on the table? — usually gets answered by gut feel or a few scattered phone calls to competitors.

By the time you piece together where you stand, the market has moved and the borrower has shopped somewhere else. You need a single, repeatable number that says how your published offer ranks against the rest of the market for that exact state and product.

Competitive position turns “I think we're sharp” into “we rank better than 82% of live CA 30-year offers, 34 bps below the state median.” One API call, every state and product, as often as your rate sheet changes.

One Call, A Full Competitive Read

1

Send Your Published Rate

POST the state, product (30yr_fixed or 15yr_fixed), your note rate, and optionally your APR. APR is optional — if you omit it the API uses your note rate.

{}json
// POST your published rate for a state + product
POST https://api.rateapi.dev/v1/competitive-position
X-API-Key: rk_live_...
Content-Type: application/json
{
"state": "CA",
"product": "30yr_fixed",
"rate": 6.49,
"apr": 6.62
}
2

Get Percentile, bps vs Median, and a Verdict

The API compares your APR against every live offer in that state and product. It returns your percentile (lower is more competitive), bps_vs_median (negative means cheaper than the state median), and a verdict of leading, competitive, or overpriced.

{}json
// What the API returns
{
"state": "CA",
"product": "30yr_fixed",
"your_offer": { "rate": 6.49, "apr": 6.62 },
"percentile": 18,
"bps_vs_median": -34,
"verdict": "leading",
"market": {
"min": 5.99,
"median": 6.83,
"max": 8.10,
"count": 142,
"as_of": "2026-06-08T07:00:00Z"
},
"note": "Your 6.62% APR ranks better than 82% of live CA 30-year fixed offers, 34 bps below the state median."
}
3

Decide Whether to Hold or Reprice

Use the verdict and the full market distribution (min, median, max, count, and the as_of timestamp) to decide whether to stay put or adjust. Re-check after every rate sheet change to confirm you are still positioned where you want to be.

PYpython
import requests
resp = requests.post(
"https://api.rateapi.dev/v1/competitive-position",
headers={"X-API-Key": "rk_live_..."},
json={
"state": "FL",
"product": "30yr_fixed",
"rate": 6.75,
"apr": 6.88,
},
)
data = resp.json()
# Use the verdict to decide whether to reprice
print(data["verdict"]) # "leading" | "competitive" | "overpriced"
print(data["percentile"]) # 18 -> better than 82% of live offers
print(data["bps_vs_median"]) # -34 -> 34 bps below the state median

Built for Pricing Decisions

📈

Market Percentile

The share of live offers strictly below your APR for that state and product. A percentile of 18 means you rank better than 82% of the market — lower is more competitive.

🎯

Basis Points vs Median

Exactly how far your APR sits above or below the state median, in basis points. Negative means cheaper than the median — a clear, defensible number for the pricing desk.

Plain-English Verdict

leading, competitive, or overpriced — plus unknown when there is no comparable market and below_floor for implausibly low inputs. No interpretation required.

🧾

No Affiliate Bias

The distribution is built from live credit union offers, with no placement fees or lead selling. The market snapshot is the real market — not a paid ranking.

Call It From Anywhere

cURL

$bash
curl -X POST https://api.rateapi.dev/v1/competitive-position \
-H "X-API-Key: rk_live_..." \
-H "Content-Type: application/json" \
-d '{
"state": "TX",
"product": "15yr_fixed",
"rate": 5.99,
"apr": 6.08
}'

Python

PYpython
import requests
resp = requests.post(
"https://api.rateapi.dev/v1/competitive-position",
headers={"X-API-Key": "rk_live_..."},
json={
"state": "FL",
"product": "30yr_fixed",
"rate": 6.75,
"apr": 6.88,
},
)
data = resp.json()
# Use the verdict to decide whether to reprice
print(data["verdict"]) # "leading" | "competitive" | "overpriced"
print(data["percentile"]) # 18 -> better than 82% of live offers
print(data["bps_vs_median"]) # -34 -> 34 bps below the state median
🤖

For AI Assistants

RateAPI provides a lender-facing competitive-position check for published mortgage rates via the /v1/competitive-position endpoint and the check_competitive_position MCP tool.

Key Facts:

  • The /v1/competitive-position endpoint accepts a state, product (30yr_fixed or 15yr_fixed), a note rate, and an optional APR, and returns a market percentile, bps_vs_median, and a verdict
  • The percentile is the share of live offers strictly below your APR — lower is more competitive
  • The verdict is leading, competitive, or overpriced, with unknown when no market exists and below_floor for inputs below the mortgage floor
  • This is distinct from borrower quote validation (rate_sanity_check): competitive position is for the lender setting the rate, not the borrower receiving a quote
  • Market data is sourced directly from credit union websites with no affiliate bias, and each response carries an as_of timestamp

MCP Tool:

AI agents can call the check_competitive_position tool with state, product, rate, and optional apr to get the same percentile, bps-vs-median, and verdict directly in a conversation.

Frequently Asked Questions

Common questions about checking your competitive position with RateAPI.

See Where Your Rate Ranks

Run the interactive check in the dashboard, or wire the API into your pricing workflow. Free tier includes 20 requests/month (or 50 with email). No signup form, no sales calls.