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.
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)
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.
How It Works
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.
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.
{ "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"}Filters & Pagination
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.
Use Cases
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.
Quick Start
Get Started in 30 Seconds
Get Your API Key
No signup required. One command.
curl -X POST https://api.rateapi.dev/keysFree tier: 20 requests/month (50 with email)
Query the Rates Endpoint
POST your filters to /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 }'Read Back Typed Rows
Destructure rates and pagination in your client
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");FAQ
Frequently Asked Questions
Quick answers about the Rate Query API
POST /v1/rates returns a paginated list of raw rate rows. Each row includes the lender, state, product type, product name, loan program, rate, APR, points, term in months, vehicle condition (for auto loans), and an as_of timestamp. The response also includes the filters you applied, pagination metadata (limit, offset, returned, total, has_more), and an overall as_of timestamp.
All filters are optional fields in the POST body: product_type (mortgage, auto_loan, heloc, personal_loan, student_loan, credit_card), state (2-letter code), lender (case-insensitive substring of the credit union name), term_months, loan_program, min_apr, and max_apr. Combine any of them to narrow the result set.
The endpoint uses limit/offset pagination. limit defaults to 50 and is clamped to 1-500; offset defaults to 0. The response returns total (the count over the same filters), returned (rows in this page), and has_more so you can page through the full result set.
Pass sort with one of apr_asc, apr_desc, rate_asc, rate_desc, or updated_desc. The default is apr_asc. The sort value is whitelisted server-side, so only those orderings are accepted.
Results are limited to rows scraped within the last three days, exclude rows with no rate and no APR, and exclude uncategorized products. Each row carries an as_of timestamp, and the response includes the most recent timestamp across the result set.
Yes. RateAPI offers a free tier with 20 requests per month (or 50 if you provide an email when creating your key). No credit card required - generate an API key and start querying rates immediately.
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.