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.

1

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 yearEnactedPrint series used
FY2018Apr 2017S2000s / A3000s
FY2019Apr 2018S7500s / A9500s
FY2020Apr 2019A2000s / S1500s
FY2021Apr 2020S7500s / A9500s
FY2022Apr 2021S2500–S2504
FY2023Apr 2022S8000s / A9000s
FY2024May 2023S4000s / A3000s
FY2025May 2024S8300s / A8800s
FY2026May 2025S3000s / A3000s
FY2027Jun 2026S9000s / A10000s
2

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.
3

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.

4

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 signed flags 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.