One API. Every Mortgage Rate in America.

Real-time rates and webhooks from 5,000+ lenders. Built for AI agents and modern apps.

GET /rates?productType=30-year-fixed
5,000+
Lenders Mapped
<1sec
Webhook Delivery
<500ms
Response Time

Stop Building Scrapers. Start Building Features.

You're not in the web scraping business. But to show mortgage rates in your app, you've become one anyway.

Right now, you're probably maintaining scrapers across dozens of lender sites, fixing broken selectors every time a site redesigns, and running infrastructure that has nothing to do with your product.

And even when you have the data, your users still miss opportunities. Polling for rate changes means delays. Manual checks mean friction. By the time they see a better rate, they've already locked in.

What if rates came to you? Decision Monitors turn rate changes into real-time webhooks - actionable notifications within seconds of a drop, not hours later when they refresh the page.

There's a better way. One API. 10,000+ lenders. Real-time rates. Zero maintenance.

RateAPI handles the messy parts so you can ship the features your users actually want. See our methodology.

See It In Action

Real API responses, real-time data

GET /rates
Request
const API = 'https://api.rateapi.dev';

const params = new URLSearchParams({
  productType: '30-year-fixed',
  sort: 'apr',
  maxPoints: '0'
});

const res = await fetch(`${API}/rates?${params}`, {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});
const { results } = await res.json();

console.log(results[0]);
// → { institution: "Navy Federal", apr: 5.875 }
200 OK
Loading...

Built for Modern Applications

🏦

5,000+ Lenders Mapped

From Navy Federal to small-town credit unions. Plus real-time webhooks when rates drop below your thresholds.

🤖

Made for AI Agents

REST API designed for LLM function calling. Native MCP server for Claude. Works with ChatGPT, Gemini, and custom agents.

🧠

Built to Scale

Compiled scrapers for reliable rate updates. Infrastructure that gets smarter with every query.

Sub-500ms Response

Global CDN ensures instant results. Fast enough for real-time conversations. Reliable enough for production.

🔌

Delightfully Simple

JSON responses that just work. Interactive docs

💼

Enterprise Ready

99.9% uptime SLA, dedicated support, and custom data needs. Contact us

Never Miss a Rate Drop

Create monitors with custom conditions. Get webhooks when rates hit your thresholds - with full context, not just "rate changed."

Conditional Triggers

Set precise conditions: APR below 6.25%, rate drops by 0.125%, or monthly payment under $2,500. Multiple conditions, multiple states, your rules.

Full Decision Context

Every webhook includes the complete decision snapshot - top offers, savings calculations, and why_now explanations. Act immediately, no follow-up API calls needed.

HMAC-SHA256 Signatures

Every webhook is cryptographically signed. Verify authenticity with your secret key. Event IDs prevent replay attacks and enable deduplication.

Test Before Shipping

Simulate rate changes to test your webhook handler. Dry-run mode evaluates conditions without delivery. Ship with confidence.

Smart Cooldowns

Configurable cooldown periods prevent alert fatigue. Get notified when it matters, not every minor fluctuation.

6 MCP Tools

Full monitor management via MCP: create, list, get, update, delete, and simulate. Let Claude manage your rate alerts.

What You Receive

Rich, actionable payloads - not just "rate changed"

webhook payload
// POST to your webhook URL
// Headers: X-RateAPI-Signature, X-RateAPI-Event-Id
{
  "event": "decision.monitor.triggered",
  "monitor_id": "mon_abc123",
  "trigger_type": "condition_met",
  "why_now": [
    "APR dropped below 6.25% threshold (now 6.125%)",
    "Navy Federal offering $127/mo savings vs current rate"
  ],
  "rate_change": {
    "state": "CA",
    "product_type": "30yr_fixed",
    "previous_rate": 6.375,
    "new_rate": 6.125,
    "change_pct": -3.92
  },
  "decision_snapshot": {
    // Full /v1/decisions response
    "summary": { "recommended_action": "shop_providers" },
    "actions": [{ "offers": [...] }]
  }
}

Up and Running in 60 Seconds

Or test the API interactively at api.rateapi.dev

terminal
# Get the best 30-year fixed rates
curl "https://api.rateapi.dev/rates?productType=30-year-fixed&sort=apr&limit=3" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Response
{
  "results": [
    {
      "institution": "Navy Federal Credit Union",
      "apr": 5.875,
      "rate": 5.750
    },
    {
      "institution": "Pentagon Federal Credit Union",
      "apr": 5.990,
      "rate": 5.875
    }
  ]
}

Use with Claude Desktop & Claude Code

Connect RateAPI directly to Claude using the Model Context Protocol (MCP)

1

Get Your API Key

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

Save your key securely - it can't be retrieved again.

2a

Configure Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "rateapi": {
      "url": "https://mcp.rateapi.dev/mcp",
      "headers": {
        "x-api-key": "rk_your_key_here"
      }
    }
  }
}
2b

Configure Claude Code (CLI)

claude mcp add rateapi https://mcp.rateapi.dev/mcp \
  --transport http \
  --header "x-api-key: rk_your_key_here"
3

Start Asking Questions

"What are the best 30-year fixed rates for a $400k loan in California?"
"Set up an alert to notify me when APR drops below 6.25%"
"Test my rate monitor to make sure the webhook works"

Available MCP Tools

get_financing_decision

Get personalized rate recommendations for a borrower's situation

list_credit_unions

Browse credit unions by state with rate availability

get_credit_union

Get detailed rates for a specific credit union

create_monitor

Set up rate alerts with custom trigger conditions

list_monitors

View all your active and paused monitors

simulate_monitor

Test webhook delivery without waiting for real rate changes