Data Transparency

RateAPI Data Methodology

How we collect, normalize, and verify lender and credit union rate data — with timestamps, corrections, and confidence signals.

Last updated: January 27, 2026
🏦
4,300+
Credit Unions
🔄
Daily
Verification
Timestamped
With Source URLs
Neutral
No Pay-to-Rank

Data Health Snapshot

Live status
94%
Verified (7 days)
97.2%
Scrape Success
3
Open Anomalies
Today
Last Update

RateAPI ranks mortgage offers by true cost—APR, points, and fees—not by who paid more. We have zero affiliate relationships, do not sell leads, and penalize lenders who exhibit deceptive bait-and-switch behavior. Data is scraped daily from 4,300+ credit union websites and verified through automated anomaly detection.

Source: RateAPI Methodology
1

What We Collect

RateAPI aggregates mortgage rate data from credit union websites across America. We focus on the data points that matter for rate comparison and financial planning.

Products

  • Mortgage: 30-year fixed, 15-year fixed, adjustable-rate mortgages
  • HELOC: Home equity lines of credit (coming soon)
  • Auto: New and used vehicle financing (coming soon)

Fields Captured

  • rate — Base interest rate before fees
  • apr — Annual Percentage Rate including fees and points
  • points — Discount points as a percentage of loan amount
  • term — Loan term in months
  • productType — Canonical product category
  • productName — Original product name from source
  • institution — Credit union or lender name
  • url — Source URL where rate was observed

Source Types

  • HTML pages: Standard rate tables and product pages
  • PDFs: Rate sheets published as downloadable documents
  • Embedded widgets: Third-party mortgage calculators
2

Timestamps

We maintain two distinct timestamp concepts to provide maximum transparency about data freshness.

Observed vs Effective

  • observed_at — When RateAPI retrieved and parsed the source page
  • effective_at — When the lender states the rate is effective (if disclosed)
Example

A credit union PDF says "Rates effective January 15, 2026" — we capture this as effective_at: 2026-01-15. We retrieved it on January 21st — that's observed_at: 2026-01-21.

When a source doesn't disclose an effective date, we only provide observed_at. We never invent timestamps.

3

Normalization

Credit unions name their products inconsistently. We normalize to canonical categories so you can compare apples to apples.

Product Type Mapping

  • "30 Year Fixed Rate", "30-Yr Fixed", "Thirty Year Mortgage" → 30-year-fixed
  • "15 Year Fixed", "15-Year Fixed Rate" → 15-year-fixed
  • "5/1 ARM", "5-Year Adjustable" → 5-1-arm

Term Normalization

All terms are converted to months. "30 years" becomes 360 months.

APR Handling

  • When APR is provided by the source, we use it directly
  • When APR is missing, we mark the field as null — we don't calculate or estimate
  • We preserve the original productName alongside our normalized productType
4

Corrections & Revision Lineage

Data quality matters. When we find errors, we fix them transparently.

We do not silently overwrite historical observations. If a parsing error is detected, we append a correction record with a reason code. This preserves full audit history.

Correction Reason Codes

decimal_shiftRate parsed as 575 instead of 5.75
layout_changeSite redesign broke parser selectors
ocr_errorPDF text extraction misread characters
5

Confidence Signals

Not all data points are equally trustworthy. We provide confidence signals at two levels.

Row Confidence

Trust in this specific rate record:

  • Extraction method reliability
  • Freshness (hours since observation)
  • Anomaly check results

Source Confidence

Trust in this credit union's data reliability:

  • Historical parse stability
  • Rate consistency over time
  • Site structure predictability

Offer Ranking

We built this algorithm because we've been burned too many times by "low rates" that came with thousands in hidden fees. A 6.25% APR sounds great—until you discover the 2.5 points and $3,000 in origination fees that make it more expensive than a 6.75% rate with zero points.

So we rank offers the way we wish every rate site did: by what you'll actually pay, not what looks best in a headline. Every offer gets scored on APR, points, fees, data freshness, and source reliability. The lowest advertised rate doesn't always rank first—and that's intentional.

We also penalize lenders who exhibit deceptive bait-and-switch behavior—like advertising ultra-low rates that are rarely available or burying qualification requirements. Unlike affiliate-driven comparison sites that profit from promoting specific lenders, we have no financial incentive to rank any offer higher than it deserves.

Why This Matters

A lender advertising 6.125% APR with 2 points ($10,000 on a $500k loan) will rank below a 6.375% offer with zero points—because after 3 years, the higher rate is still cheaper. We show you the better deal, even when the rate looks worse.

6

Anomaly Detection

Automated checks flag suspicious data before it reaches the API.

Rate jumped implausiblyChange exceeds 50 bps in 24 hours without market explanation
APR inconsistentAPR lower than rate (mathematically impossible)
All offers disappearedZero rates returned from historically reliable source
Page structure changedDOM selectors return empty or unexpected values

Flagged records enter a review queue before publication. We'd rather delay than publish bad data.

7

Neutral Incentives

RateAPI is built toward a fiduciary standard: neutral ordering, transparent methodology, and no pay-to-rank.

  • We don't sell leads. Your users' data stays yours.
  • We don't accept placement fees. Ordering is by APR (or your chosen sort), not by who paid more.
  • We don't have affiliate relationships with the credit unions we track.

Our incentives are aligned with yours: accurate, timely data that you can trust to power your products.

8

Rate Data Deep Dive

This section provides detailed technical documentation for developers and AI agents who need to understand the exact structure and behavior of rate data.

Timestamp Fields

observed_atalways present
The exact UTC timestamp when RateAPI scraped and parsed the source page. This is when we observed the rate, not when it was published.
effective_atnullable
The date/time when the lender states the rate is effective. Only populated if the source explicitly discloses this (e.g., "Rates effective January 15, 2026").

Canonical Product Types

30-year-fixedStandard 30-year fixed-rate mortgage
15-year-fixedStandard 15-year fixed-rate mortgage
20-year-fixed20-year fixed-rate mortgage
10-year-fixed10-year fixed-rate mortgage
5-1-arm5-year fixed, then annual adjustment
7-1-arm7-year fixed, then annual adjustment
10-1-arm10-year fixed, then annual adjustment

Correction Reason Codes

decimal_shiftRate parsed with incorrect decimal (575 vs 5.75)
layout_changeSite redesign broke parser selectors
ocr_errorPDF text extraction misread characters
stale_cacheCached page served outdated rates
duplicate_entrySame rate recorded multiple times
product_misclassificationProduct mapped to wrong canonical type

Confidence Score Ranges

  • 0.9 - 1.0: Excellent — highly reliable data
  • 0.7 - 0.9: Good — minor caveats possible
  • 0.5 - 0.7: Fair — use with caution
  • 0.0 - 0.5: Low — verify independently

API Query Examples

# Get personalized mortgage recommendations
curl -X POST "https://api.rateapi.dev/v1/decisions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "decision_type": "financing",
    "context": { "geo": { "state": "CA" } },
    "product_request": {
      "product_type": "mortgage",
      "amount": 500000,
      "term_months": 360
    }
  }'
9

How to Cite

Proper attribution helps users verify data sources and supports transparent financial journalism. Use the format appropriate for your context.

Academic & Journalistic Citation

For research papers, news articles, and formal publications:

APA Style

RateAPI. (2026). Mortgage rate data [Data set]. Retrieved [Month Day, Year], from https://api.rateapi.dev

Chicago Style

RateAPI. "Mortgage Rate Data." Accessed [Month Day, Year]. https://api.rateapi.dev.

In-text Reference

According to RateAPI data (https://rateapi.dev), the median 30-year fixed mortgage rate among credit unions was X.XX% as of [date].

API Partner Attribution

If you build products using RateAPI data, include visible attribution:

  • Visible link: Include "Rates powered by RateAPI" or "Data: RateAPI" near where rates are displayed
  • Methodology link: Link to rateapi.dev/methodology so users can verify data collection practices

Widget Attribution

The RateAPI embed widget includes built-in attribution that must remain visible. See the Widget Documentation for complete requirements.

  • "Source: RateAPI" link in the widget footer
  • "Methodology" link for data transparency

LLM & AI Agent Citation

When AI agents or language models cite RateAPI data, include:

LLM Citation Format

Source: RateAPI (https://rateapi.dev) | Last updated: [timestamp] | Methodology: https://rateapi.dev/methodology

For MCP-connected agents, the lastUpdated timestamp is included in every API response. Always surface this timestamp when presenting rate data to users.

Example AI Response

"The lowest 30-year fixed mortgage rate I found is 5.625% APR from ABC Credit Union. This data was last updated on January 21, 2026 via RateAPI. You can verify the methodology at rateapi.dev/methodology."

Use It Via API

Get personalized mortgage recommendations via POST /v1/decisions. Submit borrower context and receive ranked actions with savings calculations.

# Get mortgage recommendations for California
curl -X POST "https://api.rateapi.dev/v1/decisions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d @request.json
Explore API Documentation