Day-level calendars for ~12,000 districts: spring break, winter break, teacher in-service, first and last day. Resolved to the district, scored for confidence, and ready to drop into your demand model. No scraping, no PDF parsing, no guessing.
Live rows from the database
No key required
One prompt with everything your agent needs. Copy and paste.
Add the School Schedules Database to my data pipeline.
It's a day-level API of US school calendars — one row per district per day
(in session / half day / off), with the break name, a 0-1 confidence score,
and the method each date came from.
Base URL: https://api.hazeydata.ai/ssd/v1
Free sample (no key): GET /sample/districts
-> the 100 largest districts with their IDs, states and enrollment.
This is the district index, NOT calendar data — calendar days need a key.
Everything else needs: Authorization: Bearer ssd_live_... ($99/mo)
# Try the keyless sample now
curl -s "https://api.hazeydata.ai/ssd/v1/sample/districts"
Paid endpoints, once I have a key:
GET /days?district_id=NE_3172840&school_year=2026-2027 <- the calendar
GET /export?format=csv&state=FL&school_year=2026-2027
District IDs are {STATE}_{NCES_ID}. Each /days row returns:
date · school_year · is_in_session · day_type · break_name
confidence · source_method
IMPORTANT — how to tell observed from estimated:
There is no "estimated" boolean. Derive it from source_method:
observed / deterministic / legacy -> confirmed
inferred / state_median_imputation -> ESTIMATED, treat as a guess
Most 2026-2027 dates are currently estimated.
Pull the keyless sample, show me the JSON, and write a function that takes a
district_id and school year and returns a dataframe with an is_estimated
column derived from source_method.
What's in the data
The calls you ship today keep working. Paid endpoints are long-term-support: no silent breaking changes.
Lock your rate at signup. New tiers never reprice existing customers. Cancel anytime, no annual lock-in.
The keyless sample and full access return identical data and confidence scores. Access differs by volume, freshness and support — never by quality.
Bulk export or per-district. Day-level expansion — one row per district per day, flat for time-series.
Standard identifiers. Join straight onto Census, enrollment, or your own geodata.
A 0–1 score separates verified-from-source from inferred, so you filter to your own threshold.
Pricing
One plan unlocks the full dataset: same data, more volume.
Every district, every day — in production.
Volume SLAs, custom delivery, procurement.