The comparison, as JSON
Send one loan. Get back the same answer this site gives: what they pay against what the market would offer, what the gap is worth a year, which lenders would take them, and what moving would cost.
Or ask once for the whole eligibility layer: who each loan is for, and the lender's own words for it.
A$199 a month, including GST
60,000 calls a month. No charge per call. Nothing to meter.
The rates themselves are free
Every lender publishes its rates under the Consumer Data Right. That data is public. It is not mine, and I do not sell it. Download the whole set, rebuilt every night, free under CC BY 4.0.
What you pay for is the reading of it: the going rate, the fee allowance, which lenders this borrower could actually move to, and what to do about it. Plus who each loan is for, which no lender files and the CSV does not carry.
Fetching the files on a schedule
A call
curl -X POST https://rategap.com.au/v1/compare \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"balance": 650000,
"rate": 6.9,
"years": 25,
"propertyValue": 850000,
"purpose": "OWNER_OCCUPIED",
"repayment": "PRINCIPAL_AND_INTEREST"
}'
See the answer
{
"gapBand": "large_gap",
"rate": {
"paying": 6.9,
"effective": 6.9,
"feeState": "UNKNOWN",
"benchmark": 6.0992,
"anchor": 6.09,
"feeAllowance": 0.0092,
"surplus": 0,
"belowAnchor": false
},
"gapPoints": { "backBook": 0, "switching": 0.8008 },
"dollarsPerYear": { "backBook": 0, "switching": 5204.78 },
"ownLender": null,
"market": { "pool": 118, "eligible": 96, "advertisedBelowYou": 91, "lowestAdvertisedEligible": 5.64 },
"targets": [
{
"lender": "coral-coast",
"lenderName": "Coral Coast Bank",
"product": "Sharp Variable Home Loan",
"rate": 5.64,
"comparisonRate": 5.68,
"annualFee": 0,
"upfrontFees": 350,
"conditions": [],
"link": "https://example.com/rates"
}
],
"switchCosts": {
"ownDischarge": null,
"dischargeBand": [250, 500],
"upfrontBand": [250, 1930],
"total": [650, 2830]
},
"asOf": "2026-09-09T19:50:00Z"
}Who each loan is for
One call. Every restricted product, and the lender's own words for why.
A lender does not file who may take a loan. The Consumer Data Right has a field for it, and
it is boilerplate: across 312 sampled products it said OTHER 399 times, and one
lender files its first-home-buyer rule under STAFF.
So the real restrictions live in prose. Defence only. Members of that mutual. First home buyers. Not for a self-managed super fund. This site reads them out of the text the lender publishes, and keeps the sentence that said so.
That sentence is the point. Every tag can be checked against the lender's own wording instead of taken on trust.
curl https://rategap.com.au/v1/conditions -H "Authorization: Bearer $RATEGAP_KEY"
See the answer
{
"asOf": "2026-09-09T19:30:00.000Z",
"licence": "Licensed to the subscriber ...",
"vocabulary": {
"defence": "defence force only",
"membership": "members of that mutual or credit union only",
...
},
"counts": {
"products": 1929,
"restricted": 902,
"tags": 1180,
"byCondition": { "membership": 479, "package": 198, ... }
},
"products": [
{
"lender": "ABC",
"lenderName": "Example Mutual",
"productId": "abc-123",
"product": "Defence Home Loan",
"conditions": [
{
"condition": "defence",
"source": "regex",
"evidence": "Available to serving and ex-serving members of the ADF."
}
]
}
]
}Where a tag came from
source | Means |
|---|---|
regex | Read out of the lender's published wording by rule. The evidence is their sentence. |
name | Only the product name said so. Weaker, and the evidence is the name itself. |
The words
| Condition | Means |
|---|---|
membership | members of that mutual or credit union only |
occupation | restricted to certain jobs (police, nurses, defence and so on) |
defence | defence force only |
staff | staff of that lender only |
smsf | for a self-managed super fund, not a personal loan |
non_resident | for borrowers living overseas |
first_home | first home buyers only |
green | requires an energy-efficient home |
broker_only | only available through a mortgage broker |
construction | for building, not for an existing home |
bridging | short-term, for buying before you sell |
low_doc | for borrowers who cannot show standard income proof |
refinance_only | only if you are moving from another lender |
package | part of a bundle carrying a yearly fee |
intro_rate | a short introductory rate that reverts to a higher one |
A free key sees the shape, not the data
Ask with a free key and you get the counts, the vocabulary and the date — how many products carry each restriction, and what every word means. Enough to decide whether this is worth paying for.
The classifications themselves need the subscription. One call is the whole layer, so a free tier that included them would be the product, given away.
This part is not CC BY
The rates are the lenders'. This is not. It is not in their filings, and it is not republishable as a dataset — it is licensed for use inside what you build.
What you send
| Field | Default | Meaning |
|---|---|---|
balance | required | What is still owed, in dollars. |
rate | required | The rate being paid now, as a percentage. Anything above 25 is refused: that is a typo, not a mortgage. |
years | 25 | Years remaining on the loan. |
propertyValue | null | What the property is worth. Leave it out and the LVR is unknown. Every lender then looks open, which usually overstates the choice. |
purpose | OWNER_OCCUPIED | Or INVESTMENT. |
repayment | PRINCIPAL_AND_INTEREST | Or INTEREST_ONLY. |
rateType | VARIABLE | Or FIXED. If FIXED, send fixedExpiry too, or the term cannot be priced. |
fixedExpiry | null | ISO date the fixed term ends. |
annualFee | null | The ongoing fee, if it is known. null means unknown. That is not the same as 0, which is a stated fact. |
needsOffset | false | Whether an offset account is required. |
lender | null | The current lender, if known. This unlocks the back-book comparison: what that lender advertises to new borrowers. |
The gapBand field
This is the one most callers want. It says how large the gap is and where it comes from. What to do about it is yours to decide.
| Value | Means |
|---|---|
at_or_below_going_rate | The rate paid is at or below the going rate. |
own_lender_advertises_lower | The current lender advertises a lower rate to new borrowers than this borrower pays. |
large_gap | The gap to the going rate is larger than the size the site treats as worth an application. |
moderate_gap | The gap is real, but smaller than that. A lender can say no to either. |
small_gap | Smaller than lenders commonly discount for asking. |
When it says no
| Status | Why |
|---|---|
| 400 | The request could not be read. The reply names the field and what was wrong. |
| 401 | No key, or an unknown one. |
| 402 | The subscription was cancelled. |
| 422 | Understood, but unanswerable. Either the balance exceeds the property value, or there are too few comparable loans. |
| 429 | Over the monthly limit, or too many calls from one address in an hour. |
What it will not do
It will not tell anyone what to do with their money. It reports what lenders advertise, and what the arithmetic says about it. It does not assess whether any loan suits anyone, and it is not credit assistance or advice.
It also keeps nothing. The loan figures you send are used to answer the call, then dropped. That is the same promise the privacy page makes for the site. All I record is which key called, and when.
Terms
- You are responsible for any licence or authorisation your use of this needs, including under credit and financial services law. This site holds none and does not supply any.
- Do not present the output to your own customers as this site's recommendation, or as advice about their loan. It describes advertised rates.
- The figures are rates lenders advertise, read on the date shown. They can be out of date, and a lender can decline to offer one. Check with the lender before relying on a figure.
- The rates themselves are free under CC BY 4.0, and you must credit RateGap. The derived figures and eligibility readings are this site's own work, and are licensed for use inside what you build. Do not resell them as a competing data service.
- A key can be withdrawn for misuse, such as sharing it or going round the monthly limit.