# Bankrate API

> Bankrate returns mortgage, savings, CD, and money market rates as a workflow and API.

Bankrate’s Get mortgage rates returns published mortgage or refinance rates and APRs, using loan purpose and an optional ZIP code or state. List best savings rates returns high-yield savings, CD, or money market account rates, using product type and optional CD term and result count.

- Page: https://fous.com/tools/bankrate
- Handle: `@bankrate`
- Category: [Finance](https://fous.com/tools/category/finance)
- Source website: https://bankrate.com
- Last verified: Sep 29, 2026

## Methods

### Get mortgage rates

Operation `get_mortgage_rates`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get Bankrate’s published mortgage or refinance interest rates and APRs by loan type, with the published as-of date. Bankrate describes the rate-and-APR tables as national averages even on state pages; ZIP codes choose the matching state page, not ZIP-specific averages. Weekly changes are included only when Bankrate publishes a matching change; these averages are not a loan offer.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `purpose` | string | no | `"refinance"` | The loan purpose, such as refinance. Defaults to purchase. |
| `location` | string | no | `"90210"` | A US ZIP code or state name, such as 90210 or California. Leave blank for national averages. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "purpose": {
      "enum": [
        "purchase",
        "refinance"
      ],
      "type": "string",
      "default": "purchase",
      "description": "The loan purpose, such as refinance. Defaults to purchase.",
      "examples": [
        "refinance"
      ]
    },
    "location": {
      "type": "string",
      "default": "",
      "description": "A US ZIP code or state name, such as 90210 or California. Leave blank for national averages.",
      "examples": [
        "90210",
        "California"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "purpose": "refinance"
    },
    {},
    {
      "purpose": "refinance",
      "location": "90210"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `rates` | array |  | Loan rates in the order Bankrate lists them. |
| `rates[].loan_type` | string | `"30-year fixed"` |  |
| `rates[].page_link` | string | `"https://www.bankrate.com/mortgages/30-year-refinance-rates/"` |  |
| `rates[].apr_percent` | number | `7.27` |  |
| `rates[].interest_rate_percent` | number | `7.18` |  |
| `rates[].change_from_last_week_percentage_points` | number or null | `0.07` |  |
| `as_of_date` | string | `"2026-09-28"` | Date of the rates published in the rate-and-APR table. |
| `location_used` | string | `"National averages"` | Page location context; values are national averages. |

**Example input**

```json
{
  "purpose": "refinance"
}
```

**Example output**

```json
{
  "rates": [
    {
      "loan_type": "30-year fixed",
      "page_link": "https://www.bankrate.com/mortgages/30-year-refinance-rates/",
      "apr_percent": 7.27,
      "interest_rate_percent": 7.18,
      "change_from_last_week_percentage_points": null
    },
    {
      "loan_type": "20-year fixed",
      "page_link": "https://www.bankrate.com/mortgages/20-year-refinance-rates/",
      "apr_percent": 6.92,
      "interest_rate_percent": 6.82,
      "change_from_last_week_percentage_points": null
    },
    {
      "loan_type": "15-year fixed",
      "page_link": "https://www.bankrate.com/mortgages/15-year-refinance-rates/",
      "apr_percent": 6.64,
      "interest_rate_percent": 6.52,
      "change_from_last_week_percentage_points": null
    }
  ],
  "as_of_date": "2026-09-28",
  "location_used": "National averages"
}
```

### List best savings rates

Operation `list_best_savings_rates`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

List Bankrate’s current high-yield savings, CD, or money market account rates in its listed order. Offers and rates can change daily and may vary by location.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `cd_term` | string | no | `"1_year"` | CD term when product is cd, for example 1_year. |
| `product` | string | no | `"high_yield_savings"` | Account type to list, for example high_yield_savings. |
| `max_results` | integer | no | `15` | Maximum accounts to return, for example 15. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "cd_term": {
      "enum": [
        "3_months",
        "6_months",
        "1_year",
        "18_months",
        "2_years",
        "3_years",
        "5_years"
      ],
      "type": "string",
      "default": "1_year",
      "description": "CD term when product is cd, for example 1_year.",
      "examples": [
        "1_year",
        "3_months"
      ]
    },
    "product": {
      "enum": [
        "high_yield_savings",
        "cd",
        "money_market"
      ],
      "type": "string",
      "default": "high_yield_savings",
      "description": "Account type to list, for example high_yield_savings.",
      "examples": [
        "high_yield_savings",
        "money_market",
        "cd"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 15,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum accounts to return, for example 15.",
      "x-fous-developer": true,
      "examples": [
        15,
        5
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "product": "high_yield_savings"
    },
    {
      "product": "money_market",
      "max_results": 15
    },
    {
      "cd_term": "1_year",
      "product": "cd",
      "max_results": 15
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `accounts` | array |  | Accounts in Bankrate’s listed order. |
| `accounts[].term` | string | `"1 year"` | CD term; present only on CDs. |
| `accounts[].bank_name` | string | `"Marcus by Goldman Sachs"` | Bank or credit union name. |
| `accounts[].page_link` | string | `"https://www.bankrate.com/banking/reviews/marcus/"` | Bankrate page for this account or its rate listing. |
| `accounts[].sponsored` | boolean | `true` | Whether Bankrate marks this account as a sponsored listing. |
| `accounts[].apy_percent` | number | `3.5` | Annual percentage yield, in percent. |
| `accounts[].account_name` | string | `"savings"` | Account name. |
| `accounts[].minimum_deposit_usd` | number or null | `0` | Minimum opening deposit in US dollars, or null if not provided. |
| `as_of_date` | string | `"2026-09-29"` | Date the listed rates were retrieved (YYYY-MM-DD). |

**Example input**

```json
{
  "product": "high_yield_savings"
}
```

**Example output**

```json
{
  "accounts": [
    {
      "bank_name": "Marcus by Goldman Sachs",
      "page_link": "https://www.bankrate.com/banking/reviews/marcus/",
      "sponsored": true,
      "apy_percent": 3.5,
      "account_name": "savings",
      "minimum_deposit_usd": 0
    },
    {
      "bank_name": "Suncoast Credit Union",
      "page_link": "https://www.bankrate.com/banking/reviews/suncoast-credit-union/",
      "sponsored": false,
      "apy_percent": 4.5,
      "account_name": "High-Yield Savings",
      "minimum_deposit_usd": 0
    },
    {
      "bank_name": "Poppy",
      "page_link": "https://www.bankrate.com/banking/savings/best-high-yield-interests-savings-accounts/",
      "sponsored": false,
      "apy_percent": 4.25,
      "account_name": "Premier Online Savings",
      "minimum_deposit_usd": 0
    }
  ],
  "as_of_date": "2026-09-29"
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@bankrate",
  "visibility": "public",
  "operation": "get_mortgage_rates",
  "version": 1,
  "input": {
    "purpose": "refinance"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@bankrate\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_mortgage_rates\",\n  \"version\": 1,\n  \"input\": {\n    \"purpose\": \"refinance\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@bankrate",
  "visibility": "public",
  "operation": "get_mortgage_rates",
  "version": 1,
  "input": {
    "purpose": "refinance"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/bankrate`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_mortgage_rates`: Get mortgage rates. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `list_best_savings_rates`: List best savings rates. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-bankrate https://api.fous.com/mcp/tools/bankrate --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare mortgage rates by loan purpose and location.
- Track published mortgage APRs and weekly rate changes.
- Compare savings, CD, and money market account yields.
- Review account banks, minimum deposits, and sponsorship status.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Bankrate tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Bankrate account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from bankrate.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What are the published mortgage rates and APRs?

Get mortgage rates returns rates and APRs by loan type, with the published as-of date.

### How have mortgage rates changed since last week?

Get mortgage rates includes each loan type’s change from last week in percentage points.

### Which savings, CD, or money market rates are listed?

List best savings rates returns accounts in Bankrate’s listed order, with APY and available account details.

## Related

- [Freddie Mac API](https://fous.com/tools/freddie-mac.md): Weekly U.S. mortgage rate averages from Freddie Mac’s Primary Mortgage Market Survey.
- [European Central Bank API](https://fous.com/tools/european-central-bank.md): The European Central Bank provides official euro reference rates and informational currency conversions using the latest preceding published rates when needed, plus current key interest rates and optionally earlier changes.
- [US Treasury API](https://fous.com/tools/us-treasury.md): US Treasury provides official daily interest rates and national debt figures for requested or latest available dates, plus quarterly reporting exchange rates using the latest preceding quarter when needed.
- [Realtor.com API](https://fous.com/tools/realtor-com.md): Realtor.com returns home listings for sale, rent, or recently sold, property details and estimates, and local agent profiles; some fields or sold prices may be missing.
- [Investing.com API](https://fous.com/tools/investing-com.md): Investing.com provides financial markets data and news, economic releases up to 31 days, and current commodity prices and government bond yields, which may be delayed or indicative.
- [Yahoo Finance API](https://fous.com/tools/yahoo-finance.md): Yahoo Finance provides quotes, movers, company financials, analyst ratings, earnings, news, and up to 5,000 price rows with adjusted returns; prices may be delayed.
- [Zillow API](https://fous.com/tools/zillow.md): Zillow provides homes for sale, rental listings, home details, estimates, and housing market figures; rental details, history, schools, estimates, and market figures may be missing or reflect different reporting dates.
- [XE API](https://fous.com/tools/xe.md): XE returns currency conversions and mid-market rates, including current displayed rates for information and published historical daily rates for available UTC dates.
- [All Finance tools](https://fous.com/tools/category/finance)
