Where our data comes from
Every number on this site is computed from the Australian Government's published freedom-of-information (FOI) statistics. The one exception is the eight single-quarter Q1 2025-26 headline figures, which are transcribed from the OAIC's published dashboard and pinned at boot; every other number is computed, and none is typed in by hand.
Where Top 20 agencies by requests received comes from
This figure is computed from 303 published fact rows (the measures received; financial year 2024-25; across 303 reporting agencies).
This row count and hash describe the default view of received_top20 as the server computed it: every reporting agency, no portfolio filter, request type total, financial year 2024-25 — the count and hash cover that whole ranking basis, of which the chart draws the top 20. Any filter a reader sets re-derives the chart in the browser from the same published facts, so this basis describes the default view and not a filtered one.
The sources
- Freedom of information statistics (data.gov.au dataset)
The dataset page every workbook below is published on. It is maintained by the Office of the Australian Information Commissioner (OAIC) and carried 37 resources when it was last read, on 2026-09-13, through the CKAN `package_show` API. The newest resource is the 2025-26 Q1-to-Q3 agency workbook published on 28 May 2026.
The dataset is the whole published history of Australian Government FOI statistics, going back to 2011-12. This platform ingests the seven most recent agency workbooks, which is what the seven entries below pin. The rest of the dataset, the pre-2019 quarterly and annual CSVs, the reporting guides, and the long-run costs and charges series, is not read. See the `quarterly-gap-post-2018-19` entry in `decisions.md` for why the quarterly files cannot close the gap they look like they close.
The long-run costs and charges series is published on this same page in two resources: the current XLSX covering 1982-2025, and an earlier CSV covering 1982-2024 that is still served alongside it. This platform does not read either one. The series is listed below as a known, published source with no `ingested_as`, so its absence from the figures reads as a decision rather than an oversight.
- Agency FOI data - 2019-20 (Excel).xlsx
- Agency FOI data 2020-21.xlsx
- Agency FOI data 2021-22.xlsx
- Agency FOI data 2022-23.xlsx
- Agency FOI data 2023-24.xlsx
- Agency FOI data 2024-25.xlsx
- Agency FOI data 2025-26 - Q1 to Q3 as at 18 May 2026
- FOI requests, costs and charges 1982-2025
A long-run national cost series published on the same dataset page as the agency workbooks. It totals FOI requests, costs and charges nationally across all agencies since 1982, a different unit of analysis from the agency-level facts this platform holds. This platform does not read it, and nothing on the site is computed from it.
The series is published in two resources. The current one is the XLSX above, covering 1982-2025; an earlier CSV covering 1982-2024 is still served alongside it. This entry points at the newer XLSX.
- Australian Government Freedom of Information statistics (OAIC)
The OAIC's own published dashboard. It is the source of the eight single-quarter Q1 2025-26 headline figures the site shows, which are transcribed from it rather than derived from any workbook. The Q1-to-Q3 workbook above is cumulative, so the individual first quarter cannot be recovered from it by subtraction.
Those eight figures are pinned in `src/config.py` as `GOLDEN_Q1_FIGURES` and are checked against the normalised facts at every boot. A mismatch stops the service rather than degrading a page. See `golden-q1-transcription` in `decisions.md`.
Nothing else on this platform is transcribed. Every other number is computed from the workbooks above.
Re-checked on 2026-09-13: the dashboard page still states that FOI statistics data for the period Q1-Q3 2025-26 is available at data.gov.au, so the newest published period remains the cumulative part year this platform reports.
Publication history
- published 19 Nov 2020 Agency FOI data - 2019-20 (Excel).xlsx The earliest financial year this platform ingests.
- published 26 Oct 2021 Agency FOI data 2020-21.xlsx
- published 2 Nov 2022 Agency FOI data 2021-22.xlsx The first year the Federal Circuit and Family Court of Australia reports as two divisions, which this site keeps distinct.
- first published 3 Dec 2023 and reissued 18 Jun 2024 Agency FOI data 2022-23.xlsx
- published 18 Nov 2024 Agency FOI data 2023-24.xlsx
- published 6 Nov 2025 Agency FOI data 2024-25.xlsx The latest complete financial year, and the year every comparison on this site uses.
- published 28 May 2026 Agency FOI data 2025-26 - Q1 to Q3 as at 18 May 2026 A part year (July 2025 to March 2026, reported cumulatively); it never enters a comparison.
- Australian Government Freedom of Information statistics (OAIC) The source of the eight transcribed Q1 2025-26 headline figures. It is the OAIC's published dashboard, not a workbook.
Release and revision record
| Coverage | First published | Latest revision | Hash prefix |
|---|---|---|---|
| 2019-20 | 19 Nov 2020 | same release | a4331ed2d8a8 |
| 2020-21 | 26 Oct 2021 | same release | d76e1cb2b192 |
| 2021-22 | 2 Nov 2022 | same release | 9b70e7ee6867 |
| 2022-23 | 3 Dec 2023 | 18 Jun 2024 | 598dd62fa245 |
| 2023-24 | 18 Nov 2024 | same release | b933826c0a2d |
| 2024-25 | 6 Nov 2025 | same release | 973a1ecd2722 |
| 2025-26 | 28 May 2026 | same release | 0ca28e57f061 |
How each measure is derived
Sheet: Request numbers
Three measures are read from fixed column positions (`MEASURE_COLS`). Counting the agency name as column 0:
- columns 4, 5, 6 — "Requests received from applicant" — become `received`
- columns 7, 8, 9 — "Requests on transfer" — become `received_transfer`
- columns 16, 17, 18 — "Requests finalised" — become `finalised`
The three columns in each group are the personal, other and total request types in that order.
This sheet is read by position, not by header text, so a workbook that reordered its columns would be read wrongly rather than loudly. Two things stand against that. All seven workbooks were checked and carry the same header at each of those positions. And the `applicant-vs-total` decision in `decisions.md` pins the current workbook's own published Total row: the platform re-sums `received` and `received_transfer` from the facts at every boot and compares them to 34,418 and 392, so a reorder that swapped either column stops the service.
The boot gate on the Q1 figures does not help here, and it is worth being clear about that. It compares the transcribed Q1 values against the facts the normaliser emits for them, which catches a break in the transcription path; it reads no workbook column.
The header spelling is not itself stable and cannot be relied on: five workbooks label the request-type sub-header P, O and T, while the 2023-24 and 2025-26 files spell it Personal, Other and Total.
Columns not read from this sheet, in full. The on-hand counts at the start of the period (columns 1, 2, 3) and at the end of it (columns 19, 20, 21). Columns 10, 11 and 12, headed "Total requests received". And columns 13, 14 and 15, each agency's percentage share of all agencies' requests received.
Columns 10 to 12 are worth naming rather than leaving to a general statement, because they are the columns the `applicant-vs-total` decision in `decisions.md` turns on. The sheet publishes two totals that both describe requests received: "Requests received from applicant" at columns 4 to 6, which is read, and "Total requests received" at columns 10 to 12, which is not. The second is the first plus requests on transfer. That decision entry says why the applicant figure is the one the site reports, and it pins all three numbers against the frame at every boot.
The percentage share is left out for a different reason: nothing on the site needs the published share, and importing a rounded percentage alongside the counts it is derived from would put two versions of the same quantity in the frame.
Sheet: Action on requests
This sheet is read by header rather than by position. The parser lowercases the header row, finds the first column whose header starts with a known phrase, and reads that column and the two after it as personal, other and total — not the three columns following it. The column numbers below are the ones actually read:
- "granted in full" — becomes `granted_full` (columns 1, 2, 3)
- "granted in part" — becomes `granted_part` (columns 5, 6, 7)
- "access refused" — becomes `refused` (columns 9, 10, 11)
- "withdrawn" — becomes `withdrawn` (columns 16, 17, 18)
- "total determined" — becomes `decided` (columns 19, 20, 21)
`decided` is the sheet's own "Total determined" column, not a sum of the four outcome measures above it, so every rate the site publishes uses the denominator the source publishes.
Columns not read: the "Transferred" group, and the three percentage columns that follow the granted and refused groups.
Sheet: Response times
One measure, read by header in the same way:
- "response time within statutory time period" — becomes `within_statutory` (columns 4, 5, 6)
The sheet also publishes four bands of lateness (up to 30 days, 31 to 60, 61 to 90, over 90) and its own "Requests determined" column. None are read. Timeliness on the site is therefore the share of decisions made within the statutory period, with `decided` from the Action on requests sheet as the denominator. A figure that showed how late the late decisions were would need those bands ingested first.
Convention: personal, other and total request types
Every measure in every sheet is published three times over: for requests involving personal information, for other requests, and for the total. The normaliser keeps all three as separate rows under a `bucket` field, so a reader can filter to one type without the platform having to re-derive anything.
`total` is the workbook's own total column, read directly. It is not computed as personal plus other. Where a source rounds or corrects, the published total is what the site shows.
Every figure the site draws by default reads the `total` bucket. The Type filter on each chart page re-derives it for requests involving personal information, or for other requests.
Convention: portfolio, captured from banner rows
The workbooks group agencies under portfolio banner rows: a row carrying the portfolio name across every column and no numbers. The normaliser recognises a banner as a row with no numeric cell after the first, remembers the name, and stamps it on each agency row that follows until the next banner.
Portfolio is therefore recorded per agency and per year, as each year's own file assigned it. An agency moved between portfolios by a Machinery of Government change carries the portfolio it was reported under in that year, not its current one.
One gap is worth stating plainly. Each sheet's first banner sits above the row the parser starts reading from, so the agencies in the first portfolio on each sheet carry no portfolio at all. Measured on 2026-08-26, that is 2,295 of the 54,602 fact rows, plus the 8 transcribed Q1 rows, which are national totals and belong to no portfolio: 2,303 rows in total, a little over four per cent. Those rows are complete and correct in every other respect and are counted in every national figure. They are excluded only from a portfolio breakdown. The `by_portfolio` operation discloses how many agencies in the requested slice carry no portfolio, and refuses to answer at all when none of them does, rather than collapsing an unmapped slice into a single plausible-looking bucket.
Convention: normaliser version
Every batch of facts written to the durable store carries the normaliser version that produced it (`storage.facts.NORMALISER_VER`) alongside a content hash over the canonical fact rows. Two ingests of the same data by the same normaliser produce the same hash and the second is a no-op; a change to the extraction logic produces a new dataset row rather than overwriting the old one.
The current frame is 54,602 facts: 54,594 read from the seven workbooks, plus the 8 transcribed Q1 2025-26 headline figures. Nine measures, three request types, seven financial years.
How we handle the data
- The 2021 courts merger is reported as new entities, not a rename
- Renamed agencies are reported under their current name for all years
- Trends are drawn on published financial years; quarters are not reconstructed
- "Requests received" means received from an applicant
- The eight Q1 2025-26 headline figures come from the OAIC dashboard
- Quarterly data exists only up to 2018-19, and cannot be used to fill the gap
- The six-year benchmark uses complete financial years only
- Agency and portfolio scope the page; applicant type and financial year set the chart window
- Agencies below 30 decisions are shown with their rates, not ranked
Technical details (hashes and sheet mappings)
| Reference | Freedom of information statistics (data.gov.au dataset) — https://data.gov.au/data/dataset/freedom-of-information-statistics |
|---|---|
| Source file (other years) | Agency FOI data - 2019-20 (Excel).xlsx — covers 2019-20; read from data/sources/agency-foi-data-2019-20.xlsx; sha256 a4331ed2d8a84f90c13b10c333b96b5c5a1865803439c8e3e356960035b79d82; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/bb44fbf0-031f-4ed9-a152-0d59eae80deb/download/agency-foi-data-2019-20-excel.xlsx |
| Source file (other years) | Agency FOI data 2020-21.xlsx — covers 2020-21; read from data/sources/agency-foi-data-2020-21.xlsx; sha256 d76e1cb2b1921db3ed591160355b181a4ca2f59c23aa664d1fe7fbc5fce2f6a1; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/10814129-d618-4c6c-80d8-576aab3fdc4b/download/agency-foi-data-2020-21.xlsx |
| Source file (other years) | Agency FOI data 2021-22.xlsx — covers 2021-22; read from data/sources/agency-foi-data-2021-22.xlsx; sha256 9b70e7ee6867d52845b98ebbec353b342e19f45f30522880da50a1b81c01a26c; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/2ca9a822-040b-4d47-92a4-55868a3358a7/download/agency-foi-data-2021-22.xlsx |
| Source file (other years) | Agency FOI data 2022-23.xlsx — covers 2022-23; read from data/sources/agency-foi-data-2022-23.xlsx; sha256 598dd62fa245ce1930cde31b96c8df47baa0c76250becd4d9cb17ed8bccb4935; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/6f7292d7-3f12-49b9-8ee5-c7ebea18cb6d/download/agency-foi-data-2022-23.xlsx |
| Source file (other years) | Agency FOI data 2023-24.xlsx — covers 2023-24; read from data/sources/agency-foi-data-2023-24.xlsx; sha256 b933826c0a2d80f0fcf57f186f2b994d9a14dac9289012a5363be4ca2f8c073d; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/52b58c68-6d9c-4a78-8ba8-0bec492b11bb/download/agency-foi-data-2023-24.xlsx |
| Source file (this figure) | Agency FOI data 2024-25.xlsx — covers 2024-25; read from data/sources/agency-foi-data-2024-25.xlsx; sha256 973a1ecd2722b981e90ac04e3e99036ae73db9e6fa2452066b7c53d1ced94563; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/f372d955-c5a4-4c60-b2ab-f252092f8978/download/agency-foi-data-202425.xlsx |
| Source file (other years) | Agency FOI data 2025-26 - Q1 to Q3 as at 18 May 2026 — covers 2025-26; read from data/sources/agency-foi-data-2025-26-q1-to-q3.xlsx; sha256 0ca28e57f061bfeb2f5a6e789078f3d824b6f59e3b8d4fc900ab432fcaa00bc3; https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/0438fe31-540c-47cd-8923-826fa13b30c2/download/agency-foi-data-2025-26-q1-to-q3-as-at-18-may-2026.xlsx |
| Reference | FOI requests, costs and charges 1982-2025 — https://data.gov.au/data/dataset/b0771c28-09cc-4c4e-9e61-9a96f6e3d040/resource/8d4944cb-b4b1-49ea-ad85-3fcd5fff9054/download/foi-requests-costs-and-charges-1982-2025.xlsx |
| Reference | Australian Government Freedom of Information statistics (OAIC) — https://www.oaic.gov.au/freedom-of-information/australian-government-freedom-of-information-statistics |
| Derivation (this figure) | Request numbers — the 'Request numbers' sheet supplies received, received_transfer, finalised |
| Derivation (other measures) | Action on requests — the 'Action on requests' sheet supplies granted_full, granted_part, refused, withdrawn, decided |
| Derivation (other measures) | Response times — the 'Response times' sheet supplies within_statutory |
| Derivation | The P/O/T request-type buckets |
| Derivation | Portfolio, read from the sheet's section banners |
| Derivation | Normaliser version stamped on every stored dataset |
| Curation decision | The 2021 courts merger is reported as new entities, not a rename (recorded 2026-08-25) |
| Curation decision | Renamed agencies are reported under their current name for all years (recorded 2026-08-25) |
| Curation decision | Trends are drawn on published financial years; quarters are not reconstructed (recorded 2026-08-20) |
| Curation decision | "Requests received" means received from an applicant (recorded 2026-08-25) |
| Curation decision | The eight Q1 2025-26 headline figures come from the OAIC dashboard (recorded 2026-08-20) |
| Curation decision | Quarterly data exists only up to 2018-19, and cannot be used to fill the gap (recorded 2026-08-25) |
| Curation decision | The six-year benchmark uses complete financial years only (recorded 2026-09-13) |
| Curation decision | Agency and portfolio scope the page; applicant type and financial year set the chart window (recorded 2026-09-13) |
| Curation decision | Agencies below 30 decisions are shown with their rates, not ranked (recorded 2026-09-13) |