# 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/workflows/bankrate
- Handle: `@bankrate`
- Category: [Finance](https://fous.com/workflows/category/finance)
- Source website: https://bankrate.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Bankrate.

## Methods

### Get mortgage rates

Operation `get_mortgage_rates`, version 1. 1 credit per call.

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 call.

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

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_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.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

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=120) 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.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_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);
```

Or describe the data in plain language: send `{"api":"@bankrate","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## 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

### Is Fous affiliated with Bankrate?

No. Fous is not affiliated with Bankrate. This workflow reads the public bankrate.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. 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; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check 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/workflows/freddie-mac.md): Weekly U.S. mortgage rate averages from Freddie Mac’s Primary Mortgage Market Survey.
- [European Central Bank API](https://fous.com/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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 workflows](https://fous.com/workflows/category/finance)
