A free, open JSON API over 280 banks and 8079 deposit rates — no key, CORS-open, CC-BY 4.0.
A free, open, read-only JSON API over every rate on RateScan.in — 280 banks and 8079 deposit rates with their official-source provenance. It's a set of static files on a CDN: no key, no rate limit, CORS-open, and safe to call from the browser. Licensed CC-BY 4.0 — free to use with attribution.
Base URL https://ratescan.in/api/v1/ · Format JSON · Freshness rebuilt whenever the dataset refreshes; every response carries generatedAt and a content build hash.
All relative to the base URL above
| Method | Path | Returns |
|---|---|---|
| GET | manifest.json | Self-describing index of every endpoint + counts + license. |
| GET | openapi.json | OpenAPI 3.1 spec — the machine contract (import into agents, GPT Actions, codegen). |
| GET | banks.json | All banks (id, name, category, website, health metrics). |
| GET | rates.json | Every rate row with full source provenance. |
| GET | banks/{bankId}.json | One bank's metadata + all of its rates. |
| GET | best/{product}.json | Top 25 banks for a product — fd, rd, savings, nre_fd, fcnr_fd. |
Building a tool or agent? Import the OpenAPI 3.1 spec for a typed, callable contract.
The best/ endpoints mirror the homepage default: domestic products (FD/RD/Savings) are limited to mainstream sectors — public, private & small finance banks (each response states its sectorFilter); NRI products (NRE/FCNR) include all. For every category and every rate, use rates.json.
The complete dataset and daily history are also available as single files: https://ratescan.in/data/dataset.json and https://ratescan.in/data/history.json.
Best fixed-deposit rates right now:
curl -s https://ratescan.in/api/v1/best/fd.json
Everything for one bank (e.g. SBI):
curl -s https://ratescan.in/api/v1/banks/sbi.json
Discover all endpoints:
curl -s https://ratescan.in/api/v1/manifest.json
Every rate carries its provenance so you can trace it to the bank's own page:
{
"bankId": "sbi", "product": "FD", "customer": "GENERAL",
"ratePercent": 6.8,
"tenure": { "minDays": 365, "maxDays": 729, "label": "1y to <2y" },
"amount": { "minAmount": 0, "maxAmount": null, "label": "Any amount" },
"source": {
"url": "https://sbi.co.in/...", "effectiveDate": "2026-04-01",
"quality": "OFFICIAL", "ingestedAt": "2026-10-03", "checkedAt": "2026-10-05"
}
}
How to query a static API — and the things to know before you rely on it
This is a static API: flat JSON files on a CDN, not a query server. So ?product=FD&state=MH does nothing. Instead, fetch the collection that's closest to what you want and filter in your own code. The files are small and cacheable, so this is fast:
banks/{bankId}.json (don't filter rates.json).best/{product}.json.rates.json once and filter on the fields below.# Best 1-year FD for senior citizens, among public-sector banks (jq)
curl -s https://ratescan.in/api/v1/rates.json \
| jq '[.rates[]
| select(.product=="FD" and .customer=="SENIOR")
| select(.tenure.minDays<=365 and (.tenure.maxDays==null or .tenure.maxDays>=365))]
| sort_by(-.ratePercent)'
| Field | Values | Notes |
|---|---|---|
product | FD, RD, SAVINGS, NRE_FD, FCNR_FD | Deposit type. |
customer | GENERAL, SENIOR, SUPER_SENIOR | Each tier is a separate row; SENIOR/SUPER_SENIOR appear only where the bank offers a premium. |
tenure | {minDays, maxDays, label} | A band. maxDays: null means open-ended ("and above"). Match a target day T with minDays ≤ T ≤ maxDays. |
amount | {minAmount, maxAmount, label} | Deposit-size slab. maxAmount: null = any amount. Most banks tracked at the retail (< ₹3 crore) slab. |
currency | USD, GBP, EUR, … | FCNR_FD only. Absent on all other products. |
bank.category | PUBLIC, PRIVATE, SMALL_FINANCE, PAYMENTS_BANK, FOREIGN, REGIONAL_RURAL, GOVERNMENT, STATE_COOP, DISTRICT_COOP | On the bank, not the rate — join via bankId (or use banks.json). |
bank.states | ["ALL"] or state codes | Co-op / regional banks may serve only certain states; ["ALL"] = pan-India. |
best/ is opinionated; rates.json is raw. The best/ endpoints mirror the site homepage — domestic products are limited to public/private/small-finance banks (each response states its sectorFilter), NRI products include all. For the complete, unfiltered set use rates.json.source carries the official url, the bank's effectiveDate, a quality (OFFICIAL vs AGGREGATOR), plus ingestedAt (first captured) and checkedAt (last re-confirmed). Prefer OFFICIAL and check checkedAt if freshness matters.6.8 = 6.80% p.a.), not fractions.generatedAt and a content build hash; both change only when the data changes. Files are served with long CDN cache headers — key your own cache off build./api/v2/); /api/v1/ stays additive.Open under CC-BY 4.0 — attribute "RateScan.in" with a link to https://ratescan.in. Data is informational only; always confirm on the bank's official page before investing. No uptime guarantee — this is a free static endpoint.
Tell us what would make RateScan.in more useful. No email required.