Budget Data Methodology
How we turn the signed appropriation bills into the budget deep-dive pages
Two sources, two jobs
Every figure on the budget pages traces back to one of two official sources. The enacted appropriation bills — the actual laws, fetched from the NYS Senate's OpenLegislation API — give us the composition: which agencies and programs got how much, and how that changed year over year. The Division of the Budget's Enacted Budget Financial Plans give us the level: the headline All Funds totals that DOB actually expects to spend.
Why two sources? An appropriation is a legal spending ceiling, not a forecast. Bills carry cushion for caseload swings, authority for federal dollars that may never arrive, and amounts that spend out over several years — so raw appropriations run systematically higher than what the state disburses in a fiscal year. We present figures on the financial-plan (disbursement) basis, and use the bills for what they reliably tell us: the relative shape of the budget and how it moved.
Find the five appropriation bills
Each year's budget is enacted through five appropriation bills: State Operations, Legislature & Judiciary, Debt Service, Aid to Localities, and Capital Projects. Finding them is less obvious than it sounds — the print numbers change almost every year.
A two-year legislative session enacts two budgets, and bill numbering continues across the whole session, so the second-year budget bills land wherever the counter happens to be. We discover the prints by searching the API for the bills' exact statutory titles (e.g. "STATE OPERATIONS BUDGET") within each session, filtered to the enactment year. Where both chamber prints exist, we prefer whichever one was signed by the Governor.
| Fiscal year | Enacted | Print series used |
|---|---|---|
| FY2018 | Apr 2017 | S2000s / A3000s |
| FY2019 | Apr 2018 | S7500s / A9500s |
| FY2020 | Apr 2019 | A2000s / S1500s |
| FY2021 | Apr 2020 | S7500s / A9500s |
| FY2022 | Apr 2021 | S2500–S2504 |
| FY2023 | Apr 2022 | S8000s / A9000s |
| FY2024 | May 2023 | S4000s / A3000s |
| FY2025 | May 2024 | S8300s / A8800s |
| FY2026 | May 2025 | S3000s / A3000s |
| FY2027 | Jun 2026 | S9000s / A10000s |
Parse the bill text
Appropriation bills are published as fixed-width text, several megabytes each. A parser walks the text line by line and extracts every program-level total.
- • Program totals use a leader-dot pattern —
MEDICAL ASSISTANCE PROGRAM ....... 117,857,882,000— which we match and attribute to the agency named in the most recent centered page header. - • New appropriations only: the parser tracks section banners and skips reappropriationsections, which restate prior years' unspent authority and would double-count.
- • Category (state operations, local assistance, capital, debt service) comes from which of the five bills the line appeared in.
- • Every extracted row keeps its source line number, so any figure can be traced back to the exact line of the signed bill.
Roll up and snapshot
Program rows are summed into agency totals, split by category. The result is committed as a reviewed JSON snapshot — bill text is never parsed at page-load time, and the agency-to-function grouping (which sub-units roll up where) is curated by hand once rather than re-derived on the fly.
Anchor levels to DOB, shape to the bills
The displayed figures combine both sources:
- • Headline totals (All Funds, State Operating, General Fund) come from DOB's Enacted Budget Financial Plan for each year.
- • Agency and function amounts are scaled from a curated financial-plan baseline using each agency's actual enacted year-over-year change in the appropriation bills, clamped to ±20% per year (new appropriation authority is lumpier than disbursements — multi-year capital plans front-load, COVID-era federal authority spiked).
- • Each year is then normalized by a single constant so its functions sum exactly to DOB's All Funds headline — the bills give the shape; DOB gives the level.
- • Enacted datesare the signing dates of each year's Aid to Localities bill per the Senate API.
Worked example: FY2027 Medicaid
The signed FY2027 Aid to Localities bill appropriates $117.9Bfor the Medical Assistance Program — that's spending authority. DOH local-assistance authority grew 8.5% over the FY2026 bills, so we grew the FY2026 financial-plan Medicaid figure ($95.6B) by the same 8.5%, displaying $103.7B — the disbursement-basis estimate consistent with every other year on the site.
What's live and what's a snapshot
Fetched live from the Senate API
- • The Article VII bill tracker (prints, statuses, signed/vetoed badges)
- • Links from agencies to their related budget bills
Reviewed static snapshots
- • All dollar figures, functions, and line items
- • Re-generated by re-running the ingest when bills are amended or a new budget is signed
Honest caveats
- • Figures are rounded to $0.1B and are approximations on the financial-plan basis — they will not match appropriation language dollar-for-dollar, by design.
- • Prior-year agency rosters, descriptions, and FTE counts mirror the current structure; agencies that merged or renamed are mapped to their modern equivalents (e.g. OASAS before 2019 appropriated under the Mental Hygiene umbrella).
- • For FY2019 and FY2021, fund-level subtotals (State Operating, General Fund) are interpolated between neighboring years — the bills don't carry disbursement splits.
- • A few pre-2020 prints never show
signedflags in the API; for those we parse the final floor text of the substituted print. - • For exact appropriation language and official financial plans, consult budget.ny.gov/pubs/archive and legislation.nysenate.gov.