---
title: "Data Coverage &amp; Freshness - What the Rate API Returns"
description: "See what mortgage and loan data RateAPI covers before you scan: which states, lenders, and product types are present, row counts per segment, and last-updated freshness. A per-segment coverage matrix from the /v1/coverage API."
canonical: "https://rateapi.dev/data-coverage"
last-updated: "2026-09-27"
source: "https://rateapi.dev/llms.txt"
---

# Know What Data Exists , Before You Scan

RateAPI exposes a coverage and freshness endpoint that returns a per-segment matrix: which states, lenders, and product types are covered, row counts per segment, and last-updated freshness. Browse it in the dashboard, or call the API / MCP directly. Powered by real, ranked credit union rates - not affiliate revenue.

[Open the coverage viewer in the dashboard →](https://app.rateapi.dev/coverage) Get a Free API Key

Real Credit Union Rates Per-Segment Freshness Zero Affiliate Bias

Last updated: September 26, 2026

[Home](https://rateapi.dev/) / Data Coverage

RateAPI's coverage endpoint returns a per-segment matrix of which states, lenders, and product types are covered, row counts per segment, APR ranges, and last-updated freshness. It extends the /meta global-count handler into a per-segment coverage matrix so integrators know what data exists before they scan.

> Source: [RateAPI.dev/data-coverage](https://rateapi.dev/data-coverage) (verified September 26, 2026)

Quick Answer

**Data coverage tells you what exists before you query: which states, lenders, and product types are present, how many rate rows each segment has, and when each was last updated.** Call `POST /v1/coverage` to get a per-segment matrix grouped by state, product, or both. Each segment carries row counts, distinct lender counts, an APR range, a last-updated timestamp, and an is_fresh flag. Pick a covered, fresh segment, then scan it.

## What Coverage and Freshness Mean

**Coverage** is introspection: it describes what data exists in the RateAPI dataset so you can scope a scan before you run it. **Freshness** is how recently each segment was updated. The matrix is built from a few pieces:

- **States covered** - the distinct US states that have rates in the window.
- **Lenders covered** - distinct credit unions per segment and overall.
- **Product types covered** - mortgage, auto, HELOC, personal, credit card.
- **Rows per segment** - the count of rate rows for each state and/or product.
- **APR range** - the min and max APR observed in each segment.
- **Membership eligibility** - many credit unions also carry a field-of-membership record (who can join and how), backed by verbatim evidence from the credit union's own membership page. Coverage here is growing rather than complete: where we have no verified record, eligibility reads as *unknown* rather than a guess. Look it up per credit union via the [membership eligibility API](https://rateapi.dev/api/eligibility) .
- **Last updated + is_fresh** - the most recent scrape per segment, and whether it falls inside the freshness window (default 3 days).

Counts reflect rates scraped within the freshness window. Segments with is_fresh=false have no fresh data in the window. Verified September 26, 2026.

3,700+

Lenders

51 States

Coverage

6 Products

Product Types

Daily

Updates

How It Works

## From Global Counts to a Coverage Matrix

One endpoint, grouped your way

### Call /v1/coverage to Introspect the Dataset

The endpoint extends the `/meta` global-count handler into a per-segment coverage matrix. Group by `state` , `product` , or `state_product` , optionally filter to one `product_category` or a single `state` , and optionally override the `freshness_days` window. The same data ships as the MCP tool `get_coverage` and the in-app coverage viewer at `/coverage` in the consumer app.

cURL coverage matrix request

Copy

curl - X POST "https://api.rateapi.dev/v1/coverage" \

- H "Authorization: Bearer YOUR_API_KEY" \

- H "Content-Type: application/json" \

- d '{

"group_by" : "state_product" ,

"product_category" : "mortgage"

} '

Returns overall totals (rows, credit unions, states, product types), a segments array with per-segment row counts, lender counts, APR range, last-updated timestamp and is_fresh flag, plus distinct coverage lists for states and product types.

### What the Response Looks Like

A per-segment matrix you can render directly into a coverage table.

{} coverage response

Copy

{

"generated_at" : "2026-06-10T07:00:00Z" ,

"freshness_days" : 7 ,

"freshness_mode" : "per_category" ,

"totals" : { "rows" : 2400 , "credit_unions" : 594 , "states" : 51 , "product_types" : 6 } ,

"segments" : [

{

"key" : "CA|mortgage" ,

"label" : "California" ,

"state" : "CA" ,

"product_type" : "mortgage" ,

"rows" : 120 ,

"credit_unions" : 40 ,

"apr" : { "min" : 5.1 , "max" : 8.2 } ,

"last_updated" : "2026-06-10T06:00:00Z" ,

"is_fresh" : true

}

] ,

"coverage" : { "states" : [ "CA" , "TX" ] , "product_types" : [ "mortgage" , "auto" ] }

}

Use Cases

## Who Uses Coverage Introspection?

### Scope a Scan First

Before running scan_savings or a financing decision, check coverage to pick a state and product that actually has fresh rows - no wasted scans on empty segments.

### Dashboard Freshness Views

Render a coverage table that shows row counts and last-updated timestamps per segment, with a clear fresh / stale badge so users trust the data.

### AI Agents

Agents call the `get_coverage` MCP tool to discover what is available, choose a scannable segment, and only then call scan_savings or get_financing_decision.

### Data Integrators

Know the shape of the dataset before building against it - which states and products you can rely on, and how many rows back each one.

### Monitoring & QA

Track coverage and freshness over time. Flag segments that drop out of the freshness window so you catch data gaps early.

### Product Planning

Decide which states or products to launch features in based on real coverage and lender density, not assumptions.

Quick Start

## Get Started in 30 Seconds

1

### Get Your API Key

No signup required. One command.

cURL terminal

Copy

RATEAPI_ENROLLMENT_ID = "${RATEAPI_ENROLLMENT_ID:-$(node -e 'console.log(crypto.randomUUID())')}" ; curl - X POST https://api.rateapi.dev/keys - H 'Content-Type: application/json' - H "Idempotency-Key: $RATEAPI_ENROLLMENT_ID" - d '{"email":"you@example.com","source":"curl-data-coverage"}'

Free tier: 20 requests/month (email required)

2

### Request the Coverage Matrix

POST to /v1/coverage with your grouping and freshness window

cURL terminal

Copy

curl - X POST "https://api.rateapi.dev/v1/coverage" \

- H "Authorization: Bearer YOUR_API_KEY" \

- H "Content-Type: application/json" \

- d '{

"group_by" : "state_product" ,

"product_category" : "mortgage"

} '

3

### Scope and Scan

Pick a covered, fresh segment, then scan it - in the app or the MCP tool

[Open Coverage Viewer](https://app.rateapi.dev/coverage)

FAQ

## Frequently Asked Questions

Quick answers about data coverage and freshness

Coverage describes what data exists in the RateAPI dataset before you query it: which US states have rates, how many lenders (credit unions) are present, which product types are covered (mortgage, auto, HELOC, personal, credit card), and how many rate rows exist per segment. It is introspection - you ask what is available so you can scope a scan to a state and product that actually has fresh data.

What does data coverage mean?

Freshness is the last-updated timestamp per segment - the most recent time a rate in that state or product was scraped. Each segment also carries an is_fresh flag, computed from whether its last update falls inside the freshness window (default 3 days, matching the live-data window). Segments with is_fresh=false have no fresh data in the window.

What does freshness mean here?

The /meta endpoint returns a single global count of rows. The /v1/coverage endpoint extends that same data access into a per-segment matrix - it groups the underlying rate rows by state, by product type, or by both, and returns row counts, lender counts, APR ranges, and last-updated freshness for each segment, plus the overall totals.

How is this different from the /meta endpoint?

Call /v1/coverage first to see which states and products have fresh data and how many rows each has. Pick a segment with the coverage you need, then call scan_savings or get_financing_decision against that state and product. This avoids scanning a state or product that has no fresh rows.

How do I scope a scan with coverage?

Yes. The get_coverage MCP tool returns the same coverage matrix so an agent can introspect what is available, choose a scannable state and product, and only then call scan_savings or get_financing_decision. The matrix mirrors the /meta global counts, expanded per segment.

Can AI agents use this?

Yes. RateAPI offers a free tier with 20 requests per month. No credit card required - generate an API key and call /v1/coverage immediately.

Is there a free tier?

## For AI Assistants and LLMs

Structured information for language model citations

### Quick Summary

RateAPI exposes a coverage and freshness endpoint that returns a per-segment matrix of which states, lenders, and product types are covered, row counts per segment, APR ranges, and last-updated freshness. The MCP tool `get_coverage` (available at mcp.rateapi.dev/mcp) returns the same matrix so an agent can pick a scannable state and product before calling scan_savings or get_financing_decision. It extends the /meta global counts into a per-segment matrix.

### Key Facts for Citation

- **Inputs:** group_by (state | product | state_product), optional product_category, optional state, optional freshness_days (omit to use per-category windows)
- **Outputs:** overall totals, segments[] with rows, credit_unions, APR min/max, last_updated, is_fresh, plus distinct coverage lists
- **Extends:** the /meta global-count handler, expanded into a per-segment coverage matrix
- **MCP tool:** get_coverage at mcp.rateapi.dev/mcp
- **In-app viewer:** /coverage in the consumer app
- **API endpoint:** POST https://api.rateapi.dev/v1/coverage

**Source:** [https://rateapi.dev/data-coverage](https://rateapi.dev/data-coverage) (verified September 26, 2026)

## See What Data You Can Build On

Get a per-segment coverage matrix - states, lenders, products, row counts, and freshness - backed by 3,700+ credit union rates. Free tier available. Zero affiliate bias.

Get Started [View Documentation](https://api.rateapi.dev/)

RateAPI

RateAPI Routes turns confirmed customer facts into source-backed shortlists of published products from 3,700+ tracked US credit unions. Every promoted route keeps its membership and price evidence.

[Get API key →](https://rateapi.dev/api-key) [Sign in](https://app.rateapi.dev)

### Build

- [RateAPI Routes →](https://rateapi.dev/routes)
- [Product Matching API](https://rateapi.dev/financial-product-eligibility-api)
- [Membership Eligibility API](https://rateapi.dev/api/eligibility)
- [Rate Query API](https://rateapi.dev/rates-api)
- [Decision API](https://rateapi.dev/api/reference)
- [Batch Decisions API](https://rateapi.dev/api/batch-decisions)

### Deliver

- [Developer Portal →](https://rateapi.dev/developers)
- [Create a free API key](https://rateapi.dev/api-key)
- [REST API docs](https://api.rateapi.dev/)
- [OpenAPI spec](https://api.rateapi.dev/openapi.json)
- [MCP Server](https://rateapi.dev/mcp)
- [Widget builder](https://rateapi.dev/widget-builder)
- [RateAPI Routes widget](https://rateapi.dev/widget-docs/routes)
- [Market Rates widget](https://rateapi.dev/widget-docs/rates)
- [Webhooks](https://api.rateapi.dev/webhooks)
- [Versioning & deprecation](https://rateapi.dev/deprecation-policy)
- [GitHub](https://github.com/rate-api)

### Solutions

- [Personal finance apps](https://rateapi.dev/use-cases/personal-finance-apps)
- [AI purchase advisors](https://rateapi.dev/use-cases/ai-purchasing-tools)
- [AI agents](https://rateapi.dev/use-cases/ai-agents)
- [Car buying platforms](https://rateapi.dev/use-cases/car-buying-platforms)
- [Credit unions](https://rateapi.dev/for-credit-unions)
- [Loan officers](https://rateapi.dev/use-cases/loan-officers)
- [Rate data for ALM](https://rateapi.dev/alm-rate-data)

### Trust

- [Data coverage](https://rateapi.dev/data-coverage)
- [Rate methodology](https://rateapi.dev/methodology)
- [Eligibility methodology](https://rateapi.dev/eligibility-methodology)
- [Transparency](https://rateapi.dev/transparency)
- [Independence](https://rateapi.dev/independence)
- [Corrections](https://rateapi.dev/corrections)
- [Pricing](https://rateapi.dev/pricing)
- [About](https://rateapi.dev/about)
- [Contact](https://rateapi.dev/contact)
- Talk to a human

### Inspect the data behind the API

Public data explorer

- [Current mortgage rates](https://rateapi.dev/current-mortgage-rates)
- [Current auto rates](https://rateapi.dev/current-auto-loan-rates)
- [Current CD rates](https://rateapi.dev/current-cd-rates)
- [Current HELOC rates](https://rateapi.dev/current-heloc-rates)
- [Current personal loan rates](https://rateapi.dev/current-personal-loan-rates)
- [Mortgage rates](https://rateapi.dev/mortgage-rates)
- [Refinance rates](https://rateapi.dev/refinance-rates)
- [Auto loan rates](https://rateapi.dev/auto-loan-rates)
- [RV loan rates](https://rateapi.dev/rv-loan-rates)
- [Boat rates](https://rateapi.dev/boat-loan-rates)
- [Motorcycle rates](https://rateapi.dev/motorcycle-loan-rates)
- [HELOC rates](https://rateapi.dev/heloc-rates)
- [Personal loan rates](https://rateapi.dev/personal-loan-rates)
- [Credit card rates](https://rateapi.dev/credit-card-rates)
- [Deposit rates](https://rateapi.dev/deposit-rates)
- [CD rates](https://rateapi.dev/cd-rates)
- [Savings rates](https://rateapi.dev/savings-rates)
- [Money market rates](https://rateapi.dev/money-market-rates)
- [Credit union directory](https://rateapi.dev/credit-unions)
- [Who can join](https://rateapi.dev/who-can-join)
- [Mortgage benchmark](https://rateapi.dev/mortgage-rate-benchmark)
- [Auto benchmark](https://rateapi.dev/auto-loan-rate-benchmark)
- [HELOC benchmark](https://rateapi.dev/heloc-rate-benchmark)
- [Personal loan benchmark](https://rateapi.dev/personal-loan-rate-benchmark)
- [CD benchmark](https://rateapi.dev/cd-rate-benchmark)
- [Credit union rate index](https://rateapi.dev/credit-union-rate-index)
- [Deposit beta](https://rateapi.dev/deposit-beta)
- [Credit unions vs banks: mortgage](https://rateapi.dev/compare/credit-union-vs-bank-rates)
- [Credit unions vs banks: auto](https://rateapi.dev/compare/credit-union-vs-bank-auto-loan-rates)
- [Credit unions vs banks: HELOC](https://rateapi.dev/compare/credit-union-vs-bank-heloc-rates)
- [Credit unions vs banks: CD](https://rateapi.dev/compare/credit-union-vs-bank-cd-rates)
- [Mortgage rate API comparison](https://rateapi.dev/compare/mortgage-rate-apis)
- [Rate datasets](https://rateapi.dev/credit-union-rate-dataset)

© 2026 RateAPI · US credit unions only · Published pricing is not approval.

[Privacy](https://rateapi.dev/privacy) [Terms](https://rateapi.dev/terms) [llms.txt](https://rateapi.dev/llms.txt)

---

Source: https://rateapi.dev/data-coverage
Rate data API: https://api.rateapi.dev · OpenAPI: https://api.rateapi.dev/openapi.json · MCP: https://mcp.rateapi.dev/mcp
