---
title: "K-12 expenditures for every Georgia public school, school district, and the state as a whole, by spending function, publ"
method: GET
path: "/api/v1/education/k12_expenditures"
tags: ["education"]
---

# K-12 expenditures for every Georgia public school, school district, and the state as a whole, by spending function, publ

`GET /api/v1/education/k12_expenditures`

## Request

- Base URL: `https://georgiacivicdata.org`
- URL: `https://georgiacivicdata.org/api/v1/education/k12_expenditures`
- Auth: none declared

K-12 expenditures for every Georgia public school, school district, and the state as a whole, by spending function, published by the Governor's Office of Student Achievement (GOSA). Each row reports the total dollar amount and the per-FTE (full-time-equivalent student) dollar amount for one of 11 expenditure functions — instruction, pupil services, instructional support, school administration, general administration, maintenance and operations, transportation, media, school food services, debt services, and renovation and capital projects — covering school years 2010-11 through 2023-24. This is the full function-level spending ledger: all expenditures, broken out by function. The revenue side of the same GOSA report lives in the sibling topic `k12_revenues` (K-12 revenues by funding source, district/state detail); the two topics split the retired combined `revenues_and_expenditures` topic (one measure family per fact table) and share one bronze source, so they join cleanly on year and district_code. Distinct from the `per_pupil_expenditure` topic (FESR methodology), which is an included-cost per-pupil spending series whose totals intentionally differ from this full ledger.

**Filterable categorical columns** (comma-separated values union; multiple columns AND together):
- `expenditure_function` — one of: `debt_services`, `general_administration`, `instruction`, `instructional_support`, `maintenance_and_operations`, `media`, `pupil_services`, `renovation_and_capital_projects`, `school_administration`, `school_food_services`, `transportation`

**Detail levels available:** districts, schools, states (default: `schools`)

**Year coverage:** 2011–2024 (14 years, no gaps)

**NULL handling:** zero is a real value.

**Source:** Governor's Office of Student Achievement (GOSA)

## Query parameters

- `year` integer, nullable: Exact year
- `year_min` integer, nullable: Inclusive lower bound
- `year_max` integer, nullable: Inclusive upper bound
- `district_code` string, nullable: Comma-separated list of GOSA district codes (e.g. `601,602`)
- `school_code` string, nullable: Comma-separated list of GOSA school codes. Combine with `district_code` for unique school keys.
- `county_fips` string, nullable: Comma-separated list of 5-digit county FIPS codes (e.g. `13121,13067`)
- `tract_geoid` string, nullable: Comma-separated list of 11-digit census tract GEOIDs (e.g. `13121011100`)
- `block_group_geoid` string, nullable: Comma-separated list of 12-digit census block group GEOIDs (e.g. `131210111001`)
- `demographic` string, nullable: Comma-separated demographic codes (e.g. `all,black,hispanic`)
- `detail` string, nullable: Detail level (whatever the topic publishes — e.g. schools, districts, counties, or states).
- `limit` integer, nullable: Page size
- `offset` integer: Page offset
- `columns` string, nullable: Comma-separated output columns to return (fact columns plus joined dimension attributes). Defaults to all.
- `format` 'json' | 'csv' | 'parquet': Response format: json | csv | parquet

## Response `200`

Paginated rows. JSON returns an envelope with `data` and `pagination`; CSV/Parquet return raw bytes with `X-Total-Count` header.

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/georgiacivicdata/apis/georgia-civic-data-api.md) · [All operations](https://skmtc.dev/georgiacivicdata/apis/georgia-civic-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/georgiacivicdata/apis/georgia-civic-data-api/revisions/dcfdf19662d2?raw)
