Deep Almanac

Methodology

Last updated 25 October 2026

This page explains, for each dataset we publish, where the records come from, what we do to them, how any ranking is worked out, how we check the result, and what a ranking does and does not tell you. Each dataset's own pages and its index.json carry the detail; this page is the overview.

Principles that apply everywhere

Primary sources. Figures come from the organisation that publishes them: a bank's own Consumer Data Right feed (or, for an issuer with no feed, its own documents), a regulator's data release, a school's Annual Report, or an insurer's or broker's own documents. Comparison sites, industry directories and trade press are used, where at all, only to find names to look up, never as the source of a figure.

Every record says where it came from. Each record carries the address of its source, and a fact read out of a document carries the sentence it was read from, so it can be checked against the original.

Two different dates. We keep apart the time we fetched something and the date the source says it applies to. Each dataset's index.json gives fetched_at and generated_at, and where the source states one, a separate data date: for term deposits data_as_of is the latest of the banks' own last-updated timestamps, for health insurance it is the regulator's extract date, and for travel insurance the end of the latest quarter APRA has published. A fetch made today of a release from last month is still last month's data.

Old data is flagged or withheld, not silently dropped or silently kept. How that works differs by dataset, and each section below says exactly what happens. In short: a bank whose feed fails on a given day keeps its last good products, marked stale; a quoted sentence that disappears from a bank's or travel insurer's document causes the fact to be withheld from the pages; a sentence that disappears from a broker's or building insurer's page raises an issue for a person to re-read; and a school figure the Department withholds is kept as an empty value with the Department's reason beside it.

No completeness claims we cannot back. Where a list was assembled by hand, we give its count and how it was found, and say what was left out and why. We do not claim to cover every bank, broker or insurer unless a register shows that we do.

Reference data, not advice. Nothing here is financial, insurance or educational advice, and the source remains the authority.

How fresh each dataset is

A machine-readable status file at /status.json, and a page at /status, give each dataset's last fetch, the date its source says it applies to, its record count, whether it is overdue, and its publication state: current, held (the latest build failed the pre-deploy contract check, so an earlier build stays live, with the reason and since when), or stale.

Reporting an error

If a figure looks wrong, a source has moved, or something is missing, use the comment form or the comment box at the foot of any page. Software can report without signing up: /v1/comment describes the protocol. Comments are read by a person. Please say which page and figure you mean and, if you can, where you saw the correct one.

Term deposits

Term deposit rates.

Collection

Every Australian bank publishes its products through the Consumer Data Right's public Product Reference Data API, which needs no accreditation. Each run reads the list of banking brands from the CDR register and asks each one for its term deposit products and their full detail. On the latest run 116 brands were tracked and 83 published term deposit rates. The bank pages count differently, 114 on that run: 111 of the 116 brands have one, the other five having published none of these products (three feeds could not be read and two list none of them), and three more are credit card issuers that are not in the register (American Express, Wizit and Zip), read from their own pages. The bank pages' index states the current breakdown, by name, from each day's fetch. A separate check compares APRA's register with the CDR register, to catch a licensed bank missing from the latter.

Each bank's own terms document is also read for a few facts the feed does not carry, chiefly the rollover grace period. A figure is kept only with the sentence it came from; where no such sentence is found the page says nothing rather than guess, and it records whether the terms were read and state none or could not be read at all.

Normalisation

Rates are broken into one row per product, term, interest-payment frequency and balance tier, with the bank's conditions, any special-offer marking, and who may apply (personal, SMSF or business; membership of a mutual; sale only through a platform). Product names are mapped to harmonised labels in a reviewable file. Every row links a verbatim snapshot of the bank's product record as fetched.

Ranking

For each customer segment, reference deposit ($10,000, $50,000 and $250,000) and term from 1 to 60 months, each bank's best rate is ranked, one entry per bank. A separate file ranks by how the interest is paid, because the top rate in most buckets pays only at maturity, which a reader who needs the interest as income cannot use.

A ranking is of advertised per-annum rates, before tax and fees. Specials and conditional rates are ranked like any other and are marked; a special is usually not the rate a deposit rolls over into. A rank does not mean the bank will accept you: the main page can hide products that need membership, an existing relationship or a platform. Products whose feed says only people in certain occupations may join the bank (restriction occupation_membership, decided product by product from the product's own eligibility text) are left out of the default ranking; rankings_all in best.json, rates_all in each best/ file and a checkbox on the main page include them.

Checks and stale data

Before publishing, each run is compared with the last good one: banks added or removed, feeds that started failing, large drops in rate rows. Notices open an issue; a severe drop stops the run so the previous version stays live. If a bank's feed fails, its products from the previous run are carried over and its record is marked stale, rather than dropped; each entry keeps the bank's own last-updated date, and when this happens index.json names the affected banks. Every quoted sentence from a terms document is re-read daily; if it has gone and nothing replaces it, the fact is marked stale and withheld from the pages. Published bank links are swept weekly.

Home loans

Home loan rates.

Collection

The same Consumer Data Right Product Reference Data feeds as term deposits, fetched the same way, asking each bank for its residential mortgage products and their full detail. Some banks return other products as well, so only records whose own category is residential mortgages are kept. On the latest run 116 brands were in the register and 90 published home loan rates. Every row links a verbatim snapshot of the bank's product record as fetched.

Normalisation

Each lending rate becomes one row: loan purpose (owner-occupied or investment), repayment type (principal and interest or interest only), variable or fixed and for how long, the LVR band, the loan amount band, the comparison rate, offset and redraw, the ongoing annual fee and upfront fees. The LVR band is read from the rate's tiers, else from the rate's or product's text, else from the product's maximum LVR; a rate whose LVR the bank states nowhere is treated as applying at 80% LVR and below only, because banks commonly price above 80% differently. A small "discount" under 3% is a margin off another rate, not a rate, and is recorded on the product rather than as a rate.

Who a loan is for is not a field in the feed, so restrictions are read from the product's name: construction, bridging, first home buyer or government scheme, staff, a named profession, low-doc, broker only, introductory and others, plus a few unambiguous phrases in the rate's own text. A profession in the bank's own name (a police or defence bank) is its membership, not a restriction on one product. Separately, where a product's own eligibility text in the feed says only people in certain occupations may join the bank (current or retired employees of the education sector, say), the product carries the restriction occupation_membership and a condition quoting the bank's words. This is decided product by product, because one bank's feed can word it differently on different products. Because these come from names, a restriction a bank does not put in a product's name is not caught; each restriction found is shown among the conditions beside the rate.

The comparison rate is the bank's own figure, published with the warning the law requires. It is calculated on a $150,000 secured loan over 25 years, so it understates the effect of fees on a larger loan. Where a bank's feed gave comparison rates below those on its own website, none is shown rather than a wrong one.

Ranking and the default view

For each purpose, repayment type, LVR (60, 70, 80, 90 and 95%), reference loan ($300,000, $600,000 and $1,000,000) and rate type (variable, or fixed for one to five years), each bank's lowest qualifying rate is ranked, one entry per bank, by rate and then comparison rate. The page opens on owner-occupied, principal and interest, 80% LVR, $600,000, variable.

Not ranked, but kept in rates.json and on the bank's page: introductory rates, interest paid in advance, the rate a fixed loan reverts to, rates outside 2% to 15%, and loans restricted to particular borrowers or purposes. Package loans and refinance-only rates are ranked with a condition saying so; a package's annual fee is in the annual fee column and its comparison rate. Broker-only rates cannot be had from the bank itself, and banks open only to certain occupations take only some readers, so both are off by default: each ranking file also carries the same ranking with them included (entries_all), and the page has a checkbox for each.

Checks and stale data

A bank's product record carries its own last-updated date. A record not updated for more than 60 days before the fetch, or since before the Reserve Bank's latest cash rate change, is still ranked, because a bank that has not changed its rates looks the same in the feed, but it is flagged (record_stale) and its first condition tells the reader to check the bank's page. Some stale records, and a few whole banks, have been checked by hand against the banks' websites (the current entries on 16 October 2026): a record found out of date is not ranked, one whose LVR band or comparison rate was wrong is corrected, one that matched says so, and record_correction says what the website showed. Each such correction lapses when the bank republishes the record. On the latest build 481 of 7,994 rate rows came from stale records, 248 of them ranked.

Before publishing, each run is compared with the last committed one: banks added or removed, feeds that started failing, drops in rate rows or products, ranked rows falling by more than a third, a correction that no longer applies, and a fall of more than 0.10 points in the lowest default rate or a new bank in first place. A notice opens an issue; a severe finding, or a failed fetch, keeps the previous day's files. If a bank's feed fails, its products from the previous run are carried over and the bank is marked stale.

What a rank does not mean

A rank is of the bank's advertised rate for a loan of the reference size and LVR. It is not the rate a borrower will be offered, which depends on the bank's assessment, and it does not mean the bank will lend to you: membership, a package or a broker may be needed, and the conditions beside each rate say so. A lower rate can cost more once fees, offset and redraw, or the rate a fixed loan reverts to, are taken into account. Rates change without notice; check the bank's page before acting.

Car loans

Car loan rates.

Collection

The same Consumer Data Right Product Reference Data feeds as term deposits and home loans, fetched the same way, asking each bank for its personal loan products. Car loans have no CDR category of their own, so the fetcher takes every personal loan and the normaliser identifies the car loans. Only records whose own category is personal loans are kept. On the latest run 116 brands were in the register and 61 published car loans. Every row links a verbatim snapshot of the bank's product record as fetched. Covers only lenders that publish car loans under the Consumer Data Right: banks, credit unions and a few non-banks. Non-bank car financiers and dealer or manufacturer finance are not on the CDR register and are not included.

Normalisation

A car loan product becomes one row per rate: vehicle type (new, used or green), fixed or variable, loan amount band, the comparison rate, the loan term. Green-only rates appear only in the green slice, and green also takes each bank's rates for new cars (an EV buyer can take any new-car loan). Vehicle age is read from the rate's tiers, text and conditions. The loan term is read from rate tiers, the rate's text, the product name or the product's constraints. A small "discount" under 3% is a margin, not a rate, and is recorded on the product.

Restrictions are read from the product's name: business, broker only, special offer, credit-impaired, and others, plus a few unambiguous phrases in the rate's own text. Separately, where a product's own eligibility text in the feed says only people in certain occupations may join the bank (current or retired employees of the education sector, say), the product carries the restriction occupation_membership and a condition quoting the bank's words. This is decided product by product, because one bank's feed can word it differently on different products. Because these come from names, a restriction a bank does not put in a product's name is not caught; each restriction found is shown among the conditions beside the rate.

The comparison rate is the bank's own figure, published with the warning the law requires. The law sets a few loan examples and each lender uses the one closest to its typical loan: for car loans usually $30,000 over 5 years. Most feeds do not say which example was used; where one does and it is not the usual one, the page shows it beneath the rate. Either way it understates the effect of fees on a larger or smaller loan. Where a bank's feed gave no comparison rate, none is shown rather than a guessed one, and the rate is not shown either: the National Credit Code wants the two together. The pages also say what the comparison leaves out, such as early repayment costs and balloon payments.

Ranking and the default view

For each vehicle type (new, used, green), rate type (variable, fixed), and reference loan ($15,000, $30,000, $60,000), each bank's lowest qualifying rate is ranked, one entry per bank, by comparison rate and then rate. The page opens on new car, any kind, $30,000.

Not ranked, but kept in rates.json and on the bank's page: rates for business vehicles (which have their own dataset), staff and named-profession loans, introductory rates, revert rates, rates outside 2% to 30%, and loans restricted to particular borrowers or purposes. Rates restricted to brokers or introducers, and lenders open only to certain occupations, are off by default: each ranking file also carries the same ranking with them included (entries_all), and the page has a checkbox for each.

Checks and stale data

A bank's product record carries its own last-updated date. A record not updated for more than 60 days before the fetch, or since before the Reserve Bank's latest cash rate change, is still ranked, but is flagged (record_stale) and its first condition tells the reader to check the bank's page. Some stale records have been checked by hand against the banks' websites: a record found out of date is not ranked, one whose loan terms or comparison rate was wrong is corrected, and one that matched says so.

Before publishing, each run is compared with the last committed one: banks added or removed, feeds that started failing, and severe drops in rate rows. A notice opens an issue; a severe finding, or a failed fetch, keeps the previous day's files. If a bank's feed fails, its products from the previous run are carried over and the bank is marked stale.

What a rank does not mean

A rank is of the bank's advertised rate for a loan of the reference size. It is not the rate a borrower will be offered, which depends on the bank's assessment, and it does not mean the bank will lend to you: some rates need a broker, and the conditions beside each rate say so. A lower rate can cost more once fees are taken into account. Rates change without notice; check the bank's page before acting. The dataset covers lenders on the Consumer Data Right register only; non-bank and dealer finance are not included.

Business car loans

Business car loan rates.

Collection

The same Consumer Data Right feeds and fetcher, asking each bank for its business loan products. Business vehicle finance has no CDR category of its own, so the normaliser keeps products named for vehicles (car, vehicle, auto, motor), and goods loans, hire purchase, chattel mortgages and equipment finance whose description names vehicles; those carry a condition saying the product also finances other equipment. Within a general business loan, only rates whose own text names a vehicle are kept. Floorplan, escrow, receivables, guarantee and similar products are never vehicle finance. Every row links a verbatim snapshot of the bank's product record. Covers only lenders on the Consumer Data Right register; non-bank asset financiers are not included.

Normalisation and ranking

Each rate is read by the car loan normaliser (vehicle type and age, fixed or variable, loan amount band, term, risk-based pricing, occupation-limited membership, stale records), with the business restriction dropped. finance_type (loan, hire purchase or lease) is read from the product name. Business credit is not consumer credit, so the National Credit Code's comparison rate rules do not apply and most lenders publish no comparison rate: lenders are ranked by advertised rate, then by comparison rate where one is published, one entry per bank, for each vehicle type, rate type and amount ($30,000, $60,000, $100,000). A rate the bank's feed gives unreliably is not ranked. Broker-only rates and lenders open only to certain occupations are off by default, as for car loans.

Many lenders, including most of the major banks, list business vehicle finance in their feed with no rate at all, because they price each deal. They are listed as quoting only, so a bank missing from a ranking is not taken to mean it does not lend for vehicles.

What a rank does not mean

A published business rate is usually the lowest or an indicative one: the lender prices each deal on the business, the vehicle, the term and any balloon payment. Fees are not in the rate. GST credits, depreciation and interest deductions differ by finance type and by business, which is a question for an accountant.

Savings accounts

Savings account rates.

Collection

The same Consumer Data Right Product Reference Data feeds, fetched the same way, asking each bank for its transaction and savings account products. Every row links a verbatim snapshot of the bank's product record as fetched. Covers the banks, credit unions and other card issuers on the Consumer Data Right register that publish credit cards, every rate and fee as the issuer's own feed states it, plus issuers that are not on the register (American Express, Zip's Zip Plus line of credit and Wizit's Wizitcard): their cards are read by hand from their own pages and Key Facts Sheets, each figure quoted from the sentence it came from and re-read daily (source_kind document). Latitude and other non-bank issuers are not here. Not every offer an issuer advertises is in its feed, and rewards points are not valued: the feeds name the programme, not what a point is worth.

Normalisation

Each account becomes rows by who may hold it (personal, SMSF or business) and by rate kind. Ongoing is the rate with every bonus condition met every month and no introductory period; introductory is the rate during the introductory period, with its length and the rate after it; base is the rate paid with no conditions met. A bonus row is added to the base rate unless the feed says the bonus is the whole rate, and an introductory row is an add-on unless the feed says the rate reverts to a stated figure. The rate at a balance is computed at $10,000, $50,000 and $250,000: where the feed's tiers apply to the whole balance, the tier containing the balance is used; where each tier applies only to the slice of the balance inside it (stepped), the tiers are blended in proportion. A cap on the balance that earns the bonus is applied and shown.

Bonus conditions (a monthly deposit, a limit on withdrawals, a growing balance, card purchases, a linked account, online-only, new or existing customers, age) are summarised from the feed's own wording and shown beside the rate, together with the account's features and fees. Restrictions are read from the product's name and eligibility text: accounts for children, youth or seniors, for pension recipients, lenders open only to certain occupations, and accounts offered only through advisers or intermediary platforms. A restriction a bank does not put in its feed is not caught.

Ranking and the default view

For each holder type, rate kind and balance, each bank's highest qualifying rate is ranked, one entry per bank, by rate, then by base rate, then by bank name. The page opens on personal, ongoing, $50,000. Accounts limited by age or to pensioners, lenders open only to certain occupations and adviser-platform accounts are off by default: each ranking file also carries the same ranking with them included (entries_all), and the page has a checkbox for each. Not ranked, but kept in rates.json and on the bank's page: transaction accounts, offset accounts, foreign currency accounts, farm management deposits, term deposits filed in this category, staff-only accounts, rates outside 0.00% to 9.00%, and products the bank's feed says are closed to new customers.

Checks and stale data

A bank's product record carries its own last-updated date. A record not updated for more than 60 days before the fetch, or since before the Reserve Bank's latest cash rate change, is still ranked, but is flagged (record_stale) and its first condition tells the reader to check the bank's page.

Before publishing, each run is compared with the last committed one: banks added or removed, feeds that started failing, and severe drops in rate rows. A notice opens an issue; a severe finding, or a failed fetch, keeps the previous day's files. If a bank's feed fails, its products from the previous run are carried over and the bank is marked stale.

What a rank does not mean

The ongoing rank assumes every bonus condition is met every month; a customer who misses one is paid the base rate, which is why it is shown beside. An introductory rate ends, and the rate after it is shown. The bonus often applies only up to a balance, so a larger balance earns less than the headline. A rank is of the advertised rate in the bank's feed, not of the bank's service, and rates change without notice; check the bank's page before acting. The dataset covers deposit-takers on the Consumer Data Right register only.

Credit cards

Credit card rates and fees.

Collection

The same Consumer Data Right Product Reference Data feeds, fetched the same way, asking each bank for its credit and charge card products. Some holders return every product whatever was asked for, so only products whose own category is credit and charge cards are kept. Every row links a verbatim snapshot of the bank's product record as fetched. Covers the banks, credit unions and other card issuers on the Consumer Data Right register that publish credit cards, every rate and fee as the issuer's own feed states it, plus American Express, which is not on the register: its cards are read by hand from its card pages and Key Facts Sheets, each figure quoted from the sentence it came from and re-read daily (source_kind document). Latitude and other non-bank issuers are not here. Not every offer an issuer advertises is in its feed, and rewards points are not valued: the feeds name the programme, not what a point is worth.

American Express is not a Consumer Data Right data holder and publishes no feed, so its 15 cards (10 personal credit cards, the Platinum charge card and 4 business charge cards) are read by hand from its own card pages and Key Facts Sheets, the one-page sheet every credit card issuer must publish under the National Consumer Credit Protection Regulations. The readings are in a hand-written file, data/au-credit-cards/documents.json, published as documents.json: each figure (purchase rate, annual fee, interest-free days, the sheet's "correct as at" date) carries the exact sentence it was quoted from and the URL. Every day scripts/au_credit_cards_verify.py re-reads every sentence before the normaliser runs, and a card whose sentence has gone is marked stale and left unranked. A document card has no feed snapshot; it links its Key Facts Sheet instead. A figure a document does not state is left empty, never guessed. Zip's Zip Plus, a digital line of credit with a virtual Visa card, is read the same way from Zip's product page, which publishes no Key Facts Sheet; it is listed because readers compare it with a credit card, with its $1,000 interest-free threshold and monthly fee waiver as conditions. Wizit's Wizitcard, a digital Mastercard with no interest and a $19 monthly fee, is read from Wizit's Key Facts Sheet page (correct as at 14 September 2026) and card page the same way.

Normalisation

Each product is first classed as a credit card, a charge card (by its card type or its name), a corporate, purchasing or virtual card programme, or a debit card filed in the category. Business cards (eligibility business, or a name saying business, corporate or commercial) are in the business segment; the rest are personal. The purchase rate is the lowest purchase row that is not labelled as the cash advance or balance transfer rate; a card with no purchase row takes its variable, floating or fixed row, as a few credit unions label the one card rate. Where the text says the rate offered varies between two figures by credit assessment, the headline ranked is the feed's purchase row rate, not the lower end of the range (CommBank Low Rate: 13.99% headline, range 10.99% to 15.99%), and the range is shown. The cash advance rate is read from its own rows.

The card fee is a periodic fee that is not an additional-cardholder fee, read in both the current feed shape (fixed amount, rate-based or variable) and the older flat shape. A yearly fee is the annual fee. A monthly fee is published as stated and multiplied by twelve to give the yearly figure used for ranking. A fee with no amount, or no card fee row at all, leaves the annual fee empty: no annual fee is claimed only when the feed states $0. The fee's discounts are kept in the bank's words, and a discount that makes the first year free is flagged separately from a card that has no fee. Foreign transaction, cash advance, late payment and additional cardholder fees are read the same way.

Interest-free days are read from the interest-free feature (a duration, or "up to 44 days" in its text). A balance transfer offer is every balance transfer row, and every introductory row whose text says balance transfer, that has a promotional period (a duration, or "for 20 months" in its text): its rate, months, the transfer fee the text states and whether it is for new cards or existing customers. The interest-free transfers feature gives an offer when the rows do not. A card's offer is its longest (then lowest rate); the rate it reverts to is read from the text (cash advance, purchase or balance transfer rate), else from the balance transfer row with no period. An introductory row about purchases is an introductory purchase rate with its months. Rewards programmes, sign-up points offers, cashback offers, complimentary insurances, digital wallets, instalment plans and additional cards come from the feed's features, and credit limits and minimum income and age from its constraints and eligibility. Student cards and lenders open only to certain occupations are read from the product's name and eligibility text; companion cards (open only to holders of another of the issuer's cards, such as American Express Platinum Reserve) are marked in documents.json, not read from feed text. A restriction a bank does not put in its feed is not caught.

Ranking and the default view

For each segment and kind, each bank's best card is ranked, one entry per bank. Low rate ranks every credit card with a purchase rate, lowest first, then by annual fee (a fee the feed does not state sorts last). No annual fee ranks the cards whose feed states a $0 annual or monthly fee, by purchase rate. Balance transfer ranks the cards with an offer by its length, longest first, then promotional rate, transfer fee and revert rate. Rewards ranks the cards with a rewards programme by annual fee, then purchase rate, because the feeds do not value points. The page opens on personal, low rate, one card per bank; an "Every card" button lists every qualifying card in the same order instead, from cards/<segment>/<kind>.json. There is no balance or amount: a card's rate does not depend on one. Student cards, companion cards and lenders open only to certain occupations are off by default: each ranking file also carries the same ranking with them included (entries_all), and the page has a "Student and companion cards" button and an "Also show" button for the occupation-limited lenders. Not ranked, but kept in rates.json with the reason and on the bank's page: charge cards, corporate, purchasing and virtual card programmes, debit cards filed in this category, staff-only cards, cards closed to new customers, cards with no purchase rate (except in balance transfer, when the card has an offer; an offer counts only when its rate is below the card's purchase rate), rates outside 0% to 35% (or 0% on a card with no fee stated), and records that give a base rate to which the bank adds a margin.

Checks and stale data

A bank's product record carries its own last-updated date. A record not updated for more than 180 days before the fetch is still ranked, but is flagged (record_stale) and its first condition tells the reader to check the bank's page. Card rates are repriced seldom and do not follow the Reserve Bank's cash rate, so unlike home loans and savings accounts there is no cash rate rule.

A card read from an issuer's documents (American Express, Zip, Wizit) is checked differently: every quoted sentence is looked for again on its page each day, the result is written to documents-verify.json, and a card with a sentence that can no longer be found is flagged record_stale and left unranked (figures_unconfirmed) rather than ranked on a figure that may have changed. Its Key Facts Sheet date is shown as the record's last-updated date.

Before publishing, each run is compared with the last committed one. A notice opens an issue for banks added or removed, feeds that started failing, the default view's lowest rate moving by more than 0.50 percentage points or a new leader, a rate over 30%, a fee over $1,500 or a balance transfer offer over 36 months, the default view losing more than 8 banks, the no annual fee slice emptying, and a sentence quoted for a document issuer missing or unreadable in the morning re-read (the figure it supports needs re-reading by hand). Ranked rows down by more than a third are severe, as is a failed fetch: a severe finding keeps the previous day's files. If a bank's feed fails, its cards from the previous run are carried over and the bank is marked stale.

What a rank does not mean

A low purchase rate matters only to a reader who carries a balance; one who pays in full pays no purchase interest on any card, and for them the fee and rewards matter. Interest-free days apply only when the previous statement was paid in full. A balance transfer offer carries a fee paid up front on the whole amount moved, and purchases on the card usually earn interest from day one while a transferred balance is owing. A rewards rank is of the cost of holding the card, not of what it earns. Most cards also need a minimum income and age, and the bank approves the rate and limit by credit assessment. Rates, fees and offers change without notice; check the bank's page before acting.

Private health insurance

Health insurance premiums.

Collection

The source is the Private Health Insurance Ombudsman's monthly "PrivateHealth.gov.au" data release on data.gov.au (CC BY 3.0 AU): the policy data every registered insurer supplies, and the same data behind privatehealth.gov.au. The current release lists 34 funds, 9 of them restricted to particular members. Because it comes from the regulator, it covers every registered fund.

Normalisation

Each open hospital and combined policy becomes one row: fund, state, who it covers, hospital tier, premium, excess, co-payment, surcharge status, waiting periods and ambulance cover. Premiums are passed through as the release states them, monthly and before the Government rebate, any Lifetime Health Cover loading and any age-based discount.

Ranking

For each state, household type and tier, every fund's cheapest policy is listed in order of monthly premium. Restricted-membership funds are included with a note saying who may join. Corporate-only policies, visitor and expatriate policies, and add-on-only cover are not ranked, since an ordinary resident cannot buy them on their own; they remain in the per-state files, labelled.

A rank is a list price, not what you will pay: the rebate, loading and discount all depend on the buyer. It says nothing about which hospitals have agreements with the fund, about out-of-pocket costs, or about service. Premiums are set per state, so the same policy can rank very differently by address.

Checks

A new release is compared with the last one, fund register, policy counts and rankings; a finding opens an issue and a severe one stops before publishing. Nothing is carried over: each release is read whole and replaces the previous one.

Travel insurance

Travel insurance.

No prices, deliberately

This dataset holds no premiums, because none are published: a travel premium exists only once a specific trip is put through a quote form, and no regulator or insurer publishes a price list. The pages say so first.

Collection

Four openly licensed sources (CC BY 3.0 AU): APRA's quarterly general insurance statistics, in which travel is a named class of business; the same publication's closed historical database; APRA's register of general insurers; and ASIC's register of financial services licensees. Alongside these, each retail brand's Product Disclosure Statement and Target Market Determination are read for who underwrites it, its benefit limits and who it will sell to, and each credit card issuer's complimentary insurance document is read the same way.

There is no register of travel insurance brands, so that list is what a person found. It currently holds 12 brands, underwritten by 6 insurers. Brands that could not be read are listed with the reason; Allianz is among them, so the concentration figures understate the real thing. 23 card documents were read, of which 20 programmes from 18 issuers carry overseas travel cover.

Normalisation and comparisons

APRA changed its reporting basis in September 2023 (AASB 17). The quarters before and after are different measurements and are kept as two series that are never joined. Cells APRA marks confidential become empty values marked suppressed, not zeros, and a year containing one reports no loss ratio. The only ranking is of classes of business by the share of premium returned as claims; it is money, not claim counts, and is not a verdict on any policy.

An insurer named in a document is decided by explicit rules (an entity labelled the insurer, or a declaration with an ABN or licence beside it, or Lloyd's named as carrying the risk) and checked against APRA's and ASIC's registers. Benefit table rows that cannot be read confidently are held back with the reason rather than published.

Checks and stale data

Each weekly run notices new or changed source files, restated quarters, quarters gaining or losing a loss ratio, and changes in the brand-to-insurer map; an insurer that may no longer write new business is treated as severe, and a severe finding stops the run before publishing. The same run compares every brand's and card issuer's documents with the text their figures were read from, and a reissued document opens an issue for a person; the documents are then re-read by hand rather than re-parsed unattended. When quoted sentences are re-read, one that has gone without replacement marks the fact stale and the pages stop showing it.

Victorian government schools

Victorian government schools. The longest section, because school rankings are the easiest of our figures to misread.

Where the figures come from

Every Victorian government school publishes an Annual Report to the School Community, containing a Performance Summary that the Department of Education generates from one template. We fetch each school's report from the VRQA State Register, by school number, in the Word format, so values are read from table cells by their section, heading and row label rather than guessed from positions in extracted text. The register of schools (name, type, address, coordinates) is the Department's School Locations file on DataVic (CC BY 4.0), and enrolment history comes from the February census files on DataVic, 2017 to 2025. The current build covers 1,575 schools: the open primary, secondary, P-12, specialist and English language government schools in the Department's register, each from its most recent report (2023, 2024 or 2025). On the latest build the State Register served a report for every one.

VCE median study scores and the share of scores of 40 and over come from the Victorian Curriculum and Assessment Authority's senior secondary tables, which carry no school number. They are linked through VCAA's own list of VCE providers by an exact phone number match, and every link is checked against a figure it was not matched on: the school's completion rate in its Annual Report. On the latest build 284 of 287 checkable links agreed within 5 percentage points; the three that did not are correctly matched schools whose two measures are defined slightly differently.

We do not use ACARA's My School data, whose terms forbid commercial reuse. NAPLAN figures appear only as the Department republishes them in its own reports.

Results by subject come from two more VCAA sources. The VCE honour roll is VCAA's own annual listing of every study score of 40 or above whose student agreed to publication, by study and school; the newspapers' searchable honour rolls are this file. We keep 2021 to 2025 (the older years from the Internet Archive's copy of VCAA's own URL, since VCAA dropped them when it moved sites) and reduce the files to counts of scores per study, school and year at read time, so no student's name is published anywhere here. Every school count is a lower bound: 12.6 percent of the scores of 40 or above in the years VCAA states the figure were withheld by students who did not consent, and the share differs by school. We do not inflate the counts to correct for it, because the correction would need each school's number of study scores, which VCAA does not publish. Which schools offer a study at Units 3 and 4 comes from VCAA's School Studies Search, one query per study, so a school with no published score is still shown as teaching the subject. VCAA publishes no per-subject enrolments, so there is no pass rate; beside the raw count each page shows the count per 100 VCE students and a strength ratio, the count against what the school's overall 40+ results would predict, which is the figure that picks out a school whose French or music is a strength out of proportion to its other results. School strings on the roll are VCAA provider names, linked to a school number by the same phone match as the senior secondary tables; on the latest build 301 strings reached a government school and the 385 that did not are other sectors, offshore campuses and community language schools. Only government schools are ranked, but each subject file lists the Catholic, independent and other providers on the roll for that study by name and count, so a reader is not told a government school is the state's best in a subject when it is not.

Why the measures are comparable

Every figure is the Department's own published value, not recalculated. Because all reports come from one template, a measure means the same thing at every school. Each measure is reported in three tiers: the school, its Similar Schools group, and the state. The Similar Schools group is the Department's own grouping of government schools with similar characteristics, so the gap between a school and its group is the Department's like-for-like comparison, not an adjustment we invented. The Department also reports each school's Student Family Occupation and Education band, its measure of a school community's socio-educational disadvantage, which is shown beside each school.

Where the Department publishes a multi-year average for a measure we use it, and otherwise the latest year. Primary and secondary schools report different measures, so they are ranked in separate tables, each on its own set: 11 measures for secondary schools (NAPLAN Year 9 and growth from Year 7, teacher judgement in Years 7 to 10, VCE completion, retention, exits to study or work, and two student survey measures) and a matching set at primary year levels. A P-12 school appears on both tables and its similar-schools figure is built from the secondary set. Specialist schools and English language schools are reported on far less, so they have a third table built from the four measures the Department compares there: exits, parent satisfaction, staff climate and absence days (inverted, since fewer is better).

How missing and suppressed figures are handled

The default ranking, and the size adjustment

Ranking on raw results mostly re-sorts schools by their intake. The default ranking instead asks how far a school sits above its Similar Schools group, averaged across its comparable measures, in percentage points.

A small school's gap moves a long way on chance alone. Across the dataset the spread of gaps falls from about 9 percentage points at schools under 60 students to about 4.5 at schools of 350 to 1,200, which is the pattern of sampling noise rather than small schools really differing more. Left alone, the top of the primary table was schools of nine to thirty students. So the variance of a school's gap is modelled as a real between-school part plus a noise part that shrinks with enrolment, tau² + sigma²/n, fitted from the schools themselves for each table, and each school's gap is multiplied by its reliability, tau² / (tau² + sigma²/n). This is the standard empirical-Bayes treatment: it pulls a tiny school's figure towards zero and leaves a large school's almost untouched. On the current secondary fit a 25-student school keeps about a fifth of its gap, a 100-student school about half, and a 400-student school about four fifths; the primary fit has less noise per student and keeps more. Specialist and English language schools have a fit of their own; on the current build it finds no noise that shrinks with school size, so their gaps are left as measured. The fit is recomputed on every build and published in index.json under size_adjustment, so the arithmetic can be checked.

The same gaps are also published standardised by each measure's spread (similar_schools_index) and as a plain average without the size adjustment (similar_schools_advantage). Parent satisfaction swings further between schools than any other measure, so it is kept out of the primary and secondary composite and ranked separately, both as a level and as a gap to Similar Schools; that gap is not size-adjusted.

What a ranking means, and what it does not

A school high on the default ranking published results further above those of schools with a similar intake than most other schools did, after allowing for how much a school of its size moves on chance. It does not mean the school is the best choice for a particular child, that it will suit a child with particular needs, or that it will do the same next year. It reflects the measures the Department reports, which leave out much of what families care about, and its students and circumstances as much as its teaching. Ranks are positions, not distances: read the value beside the rank. Schools with equal values share a rank, and the rank shown is the school's place in the whole table even when the view is filtered. This is reference data, not advice about where to enrol.

The focus list (bilingual programs, selective entry, single-sex schools and the like) is deliberately not a ranking, and favours precision over recall.

Online stockbrokers

Online stockbrokers.

Collection

No feed publishes brokerage, so the list and its facts are written by hand from each broker's own pricing page, Financial Services Guide and terms, each fact with the sentence and address it was read from. Licence details come from ASIC's AFS Licensee register on data.gov.au (CC BY 3.0 AU), joined on licence number alone and never on a name; any disagreement between the register and the broker's documents is shown on the broker's page. ASX and NSX directories were used only to find names, because their terms do not allow republishing.

The list was first built from well-known names, then widened on 15 October 2026 by reading the pages of each retail-facing ASX market participant for the brands built on it. It holds 87 brokers, 32 of them open to new retail clients for ASX shares; closed and non-retail brokers are kept, with where their accounts went. Brokers that were checked and left out are listed with the reason. It is not claimed to be complete.

Normalisation and ranking

Brokerage is stored as the broker quotes it, as tiers, and priced at reference trade sizes from $500 to $100,000. Figures are GST-inclusive in Australian dollars; a broker that charges in US dollars is converted at the Reserve Bank's 4pm rate, marked as approximate, and is not ranked without a rate. Only the standard online rate for one ASX trade is used: phone orders, frequent-trader rates and promotions are left out. The ranking lists brokers open to new retail clients, cheapest first, for each trade size. It says nothing about service, research, platform, or the cost of holding international shares.

Checks

Every morning every quoted sentence is re-read on the broker's page (in a headless browser where the page needs one), the ASIC register is re-fetched, and the dataset is rebuilt. A sentence that can no longer be found opens an issue for a person to re-read the page; the published value is not changed automatically.

Mobile phone plans

Mobile phone plans (SIM only).

Collection

There is no Consumer Data Right feed for telecommunications, so plans are read by hand from each provider's own offer pages and Critical Information Summaries (CIS), which the Telecommunications Consumer Protections Code requires for every current offer. Every figure keeps the sentence and address it was read from. Providers were found through the Telecommunications Industry Ombudsman's public register of scheme members (membership is compulsory for telcos selling to homes) by reading each member's website for SIM plans; comparison sites were not used, as their terms forbid it. The list states its count and is not claimed to be complete.

Documents are fetched politely: robots.txt is read first and followed, one request at a time per host. Pages that refuse plain clients are fetched in a headless browser; scanned PDFs are read by OCR. Where a provider's robots.txt excludes its CIS (Vodafone, felix, Mate and SpinTel), the CIS is read only to check the figures taken from its offer pages and nothing is quoted from it.

Normalisation and ranking

Where the offer page and the CIS disagree, the offer page is used and the CIS figure is shown beside it. Each plan is reduced to a cost per month (a year's cost divided by 12, so a 28-day plan counts 13.04 renewals a year) and a data allowance per month, and ranked by cost for each data need from 5GB to unlimited, one plan per provider. A second ranking, by the first year's cost, counts introductory prices for the periods they last. Bonus data is never counted. Discounts that depend on who the reader is (a concession card, an internet service from the same provider, autorecharge, a membership or bank, being an existing customer) are left out by default; asked for, each plan is priced with the one such discount that costs least, never stacked, and plans sold only to some people (students) join the ranking. Discounts giving extra data, credits towards other subscriptions, or an amount the provider does not state are not priced. Long-expiry plans are ranked with the rest and flagged with the payment made up front. The default list holds providers that report to the ACMA as telcos with 30,000 or more services, report through their owner, or are listed on the TIO register under a network operator's membership; the full list adds the other providers found through the register that publish a CIS and name their network. Plans that cannot be priced from the provider's own documents (two of its pages disagreeing on the price, an unstated period, a GST conflict, a plan sold only alongside another) are listed with the reason and not ranked. Households of two to five are priced separately, from separate plans, extra lines or shared pools. Each plan also shows whether unused data rolls over and up to how much, and, where its documents say, eSIM, minimum term and exit fee, upfront fees, payment terms, roaming, hotspot, Wi-Fi calling, data gifting or pooling, and the CIS's cost of a call, an SMS and 1MB outside the plan. Data-only SIM plans (no voice calls, for a tablet, laptop or hotspot) are read the same way and ranked on a page of their own, at 10 to 200GB a month, never against phone plans; home wireless broadband and plans sold only with a modem are left out. Each provider's international call and roaming rate documents are linked and re-read daily; a changed CIS or rates document, or a newly published CIS, raises a notice for a person to re-read it.

Checks

Every morning every document is re-fetched, every quoted sentence is re-read, and the dataset is rebuilt. A sentence that can no longer be found raises an alert for a person to re-read the page; the published value is not changed automatically.

Building insurers

Building insurers.

Collection

The page answers "who actually insures me?". Each brand's and insurer's own PDS, Key Facts Sheet, Target Market Determination and product pages give the underwriter, distributor, policies, how the building is valued, flood, accidental damage and what happens once a building is left unoccupied, each fact with its sentence and address. APRA's list of registered general insurers (CC BY 4.0) gives whether the underwriter may write new business, matched by name since APRA publishes no ABN; ASIC's register gives the licence, matched on licence number. Premiums are not collected: they depend on the building and its address.

On 16 October 2026 the list was built from research passes over groups of brands, with Target Market Determination indexes as the main discovery tool and the Australian Reinsurance Pool Corporation's cyclone pool listing used as a checklist of insurers writing that business. It holds 78 brands and 171 products from 32 underwriters; 38 names were checked and left out, each listed with the reason. It is not claimed to be complete.

No ranking

Brands are listed, not ranked. A null means the documents read did not say, not that the policy excludes it.

Checks

Beyond confirming each quoted sentence is on its page, a separate pass compared every recorded value with its sentence, and the records it flagged were re-read and corrected or set to empty. Every morning every quoted sentence is re-read, the APRA and ASIC registers are re-fetched and the dataset is rebuilt; a sentence that can no longer be found opens an issue for a person.

Electricity plans

Electricity plans.

Collection

The Australian Energy Regulator publishes the generally available residential plans of each retailer on the CDR Register through the Consumer Data Right energy Product Reference Data API: the plans on Energy Made Easy and, for Victoria, those from Victorian Energy Compare. Retailers are listed from the CDR Register. Each day the fetch asks for the plan list and then for the full detail of each plan, but reuses the stored detail of a plan whose own lastUpdated time has not changed; a full refetch of everything can be forced. Every plan links its source address. The feed covers New South Wales, the ACT, Queensland, South Australia, Tasmania and Victoria; Western Australia and the Northern Territory are not in it. Only residential electricity plans are kept, not gas or business plans.

The estimate

The AER does not publish what a plan costs a household, so we calculate it. Each plan is priced for a household in each distribution network it is offered in, at low, medium and high usage. Medium is the regulator's own reference household where there is one: in NSW, south-east Queensland and South Australia the AER's Default Market Offer 2026–27 model annual usage and its half-hourly daily profile, and in Victoria the Essential Services Commission's Victorian Default Offer 2026–27 reference consumption of 4,000 kWh, shaped to the ESC's reference time-of-use split. The ACT, Tasmania and regional Queensland have no default offer, so their medium is the AER's 2020 average usage for the distributor scaled by 0.82 (the average ratio of the default offer figures to that table where both exist), with a daily profile borrowed from a default offer region. Low is half of medium and high is double. Controlled load usage, for separately metered hot water, is the default offer's figure for the region (2,000 kWh elsewhere) and scales the same way; it is priced only when the reader has it.

The bill is the daily supply charge for the year plus usage priced through the plan's own tariff: single or block rates, or time-of-use rates applied to the household's half-hourly profile on weekdays and weekends, with usage spread evenly across the days of a seasonal tariff. Percentage discounts on the bill or on usage are applied, and the plan is priced twice: with conditional discounts counted (the default, because paying on time or by direct debit is what most households do) and without them. Fixed-dollar credits, and percentages that cover only a first bill or a sign-up, are never counted, and recurring membership-type fees are added. No solar export is assumed, so a feed-in tariff is shown on the plan but never offsets the bill.

A plan is not priced, and says why, when it has a demand charge (which depends on the household's peak half-hour demand), when its time-of-use windows leave part of the week without a price, when the household has controlled load and the plan has no controlled load rate, or when a price is implausible (for example cents written as dollars).

Ranking and the default view

For each network, the top file holds the cheapest plan per retailer for each household. Plans restricted to some households, read from the plan's eligibility codes and text (for example existing customers only, Seniors Card holders, members of an organisation, or households with solar or a battery), are excluded from rankings unless the reader asks for them; the cheapest of them is shown separately. Conditions any household can meet, such as new customers only, stay ranked and are shown on the row. Where a retailer's own site states a condition its feed records lack, the sentence is re-read on the retailer's page every day, and the condition is shown only while it is still found there. The page opens on medium usage, no controlled load, conditional discounts counted.

Checks and stale data

A plan whose own last-updated date is more than 120 days before the fetch is still listed but flagged as stale. The normaliser tallies the plans it could not price by reason, and the estimator is covered by unit tests.

What an estimate does not mean

An estimate is the bill for the stated household on the plan's advertised prices. Your own usage, its timing, a solar system, a concession and the retailer's decision to offer you the plan all change what you would pay. Prices change without notice, and some retailers publish prices before they take effect; check the retailer's plan page before acting. This is reference data, not advice.

Real estate agents

Real estate agents by suburb.

Collection

Each agency's own website is then read for its sold listings in the suburb: the address, the office, the agents named, the sold date and the price. Every sale keeps the address of the listing it was read from. Where the agency published the sale price it is shown as stated. Where it withheld it, the price is the low end of the range in the Statement of Information linked from the listing, shown as indicated; for Marshall White, which publishes neither, it is the value its website uses for its price search, shown as search value. Total values add whichever figure a sale has, so they are partly estimates. A listing whose own page gives a commercial or industrial zoning is left out as not a home. The agencies are the ones found selling in the suburb, so one that sold there but was not found is missing; each suburb page names the agency sites read.

Counting and ranking

A sale counts when its sold date falls in the twelve months before collection. Some agencies' sites show no sold dates (in Abbotsford: BigginScott, Dingle Partners, Gotham Property, Meadows Property Group and Maxion). Their sales count as sold on or after the later of the date the property was listed and the date its Statement of Information says it was prepared, since a sale cannot come before either; a property listed before the window that sold within it is missed, so those counts are minimums. Sold listings that cannot be placed inside the year are left out, and the page says how many. Each sale is credited once, to the first agent named on it, with any co-agents shown beneath; a switch on the page instead counts each sale in full for every agent named on it, which leaves agency totals unchanged. Agencies and agents are ranked by total value, then by number of sales, or, if the reader chooses, by number of sales, then total value. Total value adds stated prices and the low end of indicated ones and is therefore an estimate wherever indicated prices are part of it.

What a ranking means, and what it does not

An agency high on the list published more, or more valuable, sales in the suburb over the year than the others. It does not say which agent will get the best price for a particular property, what an agent charges, or how long their listings take to sell, none of which is collected. This is reference data, not advice about which agent to use.