Query raw mortgage & loan rates via API — filter by product, state, lender, and term

POST /v1/rates returns paginated raw rate rows — the core data primitive integrators expect. One authenticated call lists and filters real credit union rates by product, state, lender, term, loan program, and APR range, with limit/offset pagination. No affiliate bias.

Real Credit Union Rates5 Product TypesZero Affiliate Bias
Last updated: July 18, 2026

RateAPI's POST /v1/rates endpoint lists and filters raw rate rows by product, state, lender, term, loan program, and APR range, returning paginated rows (limit / offset) with lender, rate, APR, points, term, and an as_of timestamp, sourced from real US credit union data.

Source: RateAPI.dev/rates-api (verified July 18, 2026)
Quick Answer

The Rate Query API is a single authenticated endpoint, POST /v1/rates, that lists and filters raw rate rows. Send an optional set of filters — product_type, state, lender, term_months, loan_program, min_apr, max_apr, sort, limit, offset — and get back paginated rate rows with full pagination metadata (total, returned, has_more). It is the core data primitive behind every other RateAPI tool.

What the API Returns

Each call to POST /v1/rates returns a JSON object with three parts: the filters you applied, the pagination metadata, and the array of rate rows. Every rate row has the same shape:

  • lender — the credit union name
  • state — 2-letter state code
  • product_type — mortgage, auto_loan, heloc, personal_loan, student_loan, or credit_card
  • product_name / loan_program — e.g. "30-Year Fixed" / "conventional"
  • rate / apr / points — numeric or null when unavailable
  • term_months / vehicle_condition — term length; condition for auto loans
  • as_of — when the row was last observed

Rows are filtered for freshness (scraped within the last three days), must carry a rate or APR, and exclude uncategorized products. An empty result is a normal 200 with an empty rates array — not an error. Verified July 18, 2026.

One Endpoint, Filtered and Paginated

Post your filters, read back paginated rate rows

Request

Every filter is optional. The example below lists 30-year mortgage rate rows in California from lenders whose name contains "navy", sorted by APR ascending. The same data backs the in-dashboard rate browser at /rates and the list_rates MCP tool.

cURLPOST /v1/rates
curl -X POST "https://api.rateapi.dev/v1/rates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_type": "mortgage",
"state": "CA",
"lender": "navy",
"term_months": 360,
"sort": "apr_asc",
"limit": 50,
"offset": 0
}'

Response

A paginated set of rate rows plus the filters and pagination metadata. Guarded nullable fields come back as null rather than being omitted.

{}200 OK
{
"filters": {
"product_type": "mortgage",
"state": "CA",
"lender": "navy",
"term_months": 360,
"loan_program": null,
"min_apr": null,
"max_apr": null,
"sort": "apr_asc"
},
"pagination": {
"limit": 50,
"offset": 0,
"returned": 2,
"total": 2,
"has_more": false
},
"rates": [
{
"lender": "Navy Federal Credit Union",
"state": "CA",
"product_type": "mortgage",
"product_name": "30-Year Fixed",
"loan_program": "conventional",
"rate": 6.125,
"apr": 6.241,
"points": 0,
"term_months": 360,
"vehicle_condition": null,
"as_of": "2026-06-09T07:02:11Z"
}
],
"as_of": "2026-06-09T07:02:11Z"
}

How to Shape a Query

1. Product Type

Scope to one of mortgage, auto_loan, heloc, personal_loan, student_loan, or credit_card. Omit it to span all products.

2. Geography

Pass a 2-letter state code to limit rows to one state. Invalid codes return a 400 with a clear message.

3. Lender

lender matches the credit union name as a case-insensitive substring, so "navy" finds Navy Federal Credit Union.

4. Term & Program

Narrow by term_months (e.g. 360 for a 30-year mortgage) and by exact loan_program such as conventional, FHA, or VA.

5. APR Range & Sort

Bound results with min_apr / max_apr and order them with sort (apr_asc, apr_desc, rate_asc, rate_desc, updated_desc).

6. Limit & Offset

limit (1-500, default 50) and offset (default 0) page through results. The response returns total and has_more to drive the next page.

Who Queries Raw Rate Rows?

Rate Comparison Sites

Power a filterable rate table directly from the source. Pull rows by state and product, page through them, and render without maintaining your own scraping pipeline.

Fintech Dashboards

Drop live rate rows into internal tools and customer-facing dashboards with a single authenticated call.

Data & Analytics Teams

Page through full result sets with limit/offset to snapshot rate rows into a warehouse for analysis and reporting.

Loan Officers & Brokers

Look up competitive rate rows for a client's state and product on demand, sorted by APR.

Credit Union Portals

Surface your own published rows alongside the wider market in a member-facing browser.

AI Agents & Chatbots

Let agents answer "what are the lowest 30-year rates in Texas?" through the list_rates MCP tool, which calls this same endpoint.

Get Started in 30 Seconds

1

Get Your API Key

No signup required. One command.

cURLterminal
curl -X POST https://api.rateapi.dev/keys

Free tier: 20 requests/month (50 with email)

2

Query the Rates Endpoint

POST your filters to /v1/rates

cURLterminal
curl -X POST "https://api.rateapi.dev/v1/rates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_type": "mortgage",
"state": "CA",
"lender": "navy",
"term_months": 360,
"sort": "apr_asc",
"limit": 50,
"offset": 0
}'
3

Read Back Typed Rows

Destructure rates and pagination in your client

TSrates.ts
const res = await fetch("https://api.rateapi.dev/v1/rates", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RATEAPI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
product_type: "auto_loan",
state: "TX",
sort: "apr_asc",
limit: 100,
offset: 0,
}),
});
const { rates, pagination } = await res.json();
console.log(pagination.total, "rows;", rates.length, "on this page");

Frequently Asked Questions

Quick answers about the Rate Query API

For AI Assistants and LLMs

Structured information for language model citations

Quick Summary

RateAPI exposes a Rate Query API at POST /v1/rates that lists and filters raw rate rows. The MCP tool list_rates (available at mcp.rateapi.dev/mcp) calls this same endpoint, returning paginated rate rows filtered by product, state, lender, term, loan program, and APR range.

Key Facts for Citation

  • Endpoint: POST https://api.rateapi.dev/v1/rates
  • Filters: product_type, state, lender, term_months, loan_program, min_apr, max_apr
  • Sort: apr_asc (default), apr_desc, rate_asc, rate_desc, updated_desc
  • Pagination: limit (1-500, default 50), offset (default 0); response gives total and has_more
  • Row fields: lender, state, product_type, product_name, loan_program, rate, apr, points, term_months, vehicle_condition, as_of
  • MCP tool: list_rates at mcp.rateapi.dev/mcp
  • In-app browser: /rates in the consumer app

Source: https://rateapi.dev/rates-api (verified July 18, 2026)

Start Querying Raw Rate Rows

List and filter real credit union rates by product, state, lender, and term with one authenticated call. Free tier available. Zero affiliate bias.