Data sources
Every fact on CharterLookup is sourced from public records. Below is the live inventory of source files we ingest, refreshed periodically. Click through to the upstream source where available.
For implementation details (column shapes, refresh cadence, how to re-run each connector), see the project's docs/data-sources.md ↗ on GitHub.
AZ
- state_charter_board_closureslast fetched 2026-05-21https://online.asbcs.az.gov/schools/closed/search
Scraped 427 ASBCS closures via Playwright; 34 matched existing schools (8.0%), 393 new closure-only inserts, 407 new charter_actions. Reasons preserved verbatim in notes.
CA
- state_doe_directorylast fetched 2026-05-20https://www.cde.ca.gov/ds/si/ds/pubschls.asp
Ingested 1931 schools, 0 new closure actions. 90 rows skipped (no NCES ID).
- ca_cde_pubschls_extraslast fetched 2026-05-22https://www.cde.ca.gov/ds/si/ds/pubschls.asp
Enriched 1912 CA charter rows with phone/website/principal/charter_number/funding_type/virtual/magnet/program_type/instructional_level/grade_span_offered. Re-run via npm run enrich:ca-extras when CDE refreshes pubschls.
DC
- state_charter_board_closureslast fetched 2026-05-21https://dcpcsb.org/charter-school-growth-and-closures
Parsed 54 DC charter closures from DC PCSB Comprehensive List of All Public Charter LEAs (Google Sheet CSV); 0 matched (0.0%); 54 new closure-only schools; 54 new charter_actions. Year-only dates proxied to June 30 of the closure year.
FL
- state_doe_closure_pdflast fetched 2026-05-20https://www.fldoe.org/file/9905/23-AuthorizerReport.pdf
Parsed 66 closures from FLDOE 2023-24 Authorizer Report (5 most recent years only); 27 matched (40.9%); 39 new closure-only schools; 66 new charter_actions.
IN
- state_authorizer_oeilast fetched 2026-05-21https://www.in.gov/sboe/files/OEI_Annual_Report_2021_22.pdf
17 closures applied this run. Indianapolis Office of Education Innovation (Mayor's Office) Annual Report 2021-22 PDF; 17 mayor-sponsored charter closures transcribed inline. Provides school name + opening year + revocation/non-renewal year + reason. Year-only dates proxied to June 30. Two schools (Marion Academy, Indianapolis Lighthouse College Prep East) have status='Closed' but no closure year published.
- state_authorizer_icsblast fetched 2026-05-21https://www.in.gov/icsb/about/closed-schools/
7 closures applied this run. Indiana Charter School Board closed-schools listing; 7 schools, each on its own detail page with a board-action sentence (revoke/non-renew/close) and date. Transcribed inline from a one-shot scrape on 2026-05-21. Ball State University (third Indiana authorizer) is not yet covered — see SKIP_LIST.md.
MA
- state_doe_charter_factsheetlast fetched 2026-05-21https://www.doe.mass.edu/charter/factsheet.xlsx
Parsed 28 MA charter closures from DESE factsheet Sheet1; 0 matched (0.0%); 28 new closure-only schools; 28 new charter_actions. Each action carries the per-closure BESE memo URL as source_url where available.
MI
- state_doe_eem_csvlast fetched 2026-05-20https://cepi.state.mi.us/eem/publicdatasets.aspx
Parsed 265 MI PSA closures from EEM CSV (via Playwright scrape); 29 matched (10.9%) — 21 via NCES, 8 via name; 236 new closure-only schools; 265 new charter_actions.
MO
- state_doe_charter_closureslast fetched 2026-05-21https://dese.mo.gov/quality-schools/charter-schools
Applied 30 MO charter closures from DESE Closure Doc PDF (Jul 2024 rev); 0 matched (0.0%); 30 new closure-only schools; 30 new charter_actions. Year-only dates proxied to June 30. 3 source typos preserved verbatim.
NC
- state_doe_annual_report_pdflast fetched 2026-05-20https://webservices.ncleg.gov/ViewDocSiteFile/100690
NC 2024 annual report; 94 historical closures in summary (no detail); 5 narrative closures extracted; 2 matched, 3 new closure-only schools; 5 new charter_actions.
- nc_eddie_directory_extraslast fetched 2026-05-23http://apps.schools.nc.gov/eddie
Enriched 204 NC charter rows with phone/principal/address/city/zip/county/virtual/opened_date/grade_span_offered from NC DPI EDDIE Active Charter Schools Report (Playwright fetch).
NJ
- state_doe_closure_htmllast fetched 2026-05-20https://www.nj.gov/education/chartsch/accountability/closure.shtml
Parsed 53 closures from NJ DOE Closure Process page; 3 matched (5.7%); 50 new closure-only schools inserted (synthetic state_school_id); 53 new charter_actions.
NY
- state_doe_closure_pdflast fetched 2026-05-20https://www.nysed.gov/sites/default/files/programs/charter-schools/all-nys-charter-schools-issued-1-27-25.pdf
Parsed 52 closures from NYSED 'All NYS Charter Schools Issued' PDF (Jan 2025 edition); 6 matched (11.5%); 46 new closure-only schools (5 were charter-awarded-but-never-opened); 52 new charter_actions.
OH
- state_doe_closure_xlsxlast fetched 2026-05-20https://education.ohio.gov/getattachment/Topics/Community-Schools/Sections/Schools/Closed-Community-Schools.xlsx.aspx?lang=en-US
Parsed 342 closures from ODE Closed Community Schools xlsx; 19 matched (5.6%); 323 new closure-only schools; 342 new charter_actions.
PA
- pa_pde_directory_extraslast fetched 2026-05-23https://www.pa.gov/content/dam/copapwp-pagov/en/education/documents/instruction/charter-schools/cyber%20and%20charter%20listing.xlsx
Enriched 164 PA charter rows with phone (overrode CCD)/principal/funding_type/grade_span_offered from PDE Cyber and Charter Listing xlsx (3 sheets: Brick-n-Mortar, Regional, Cyber).
TX
- state_doe_closure_pdflast fetched 2026-05-20https://tea.texas.gov/texas-schools/texas-schools-charter-schools/summary-of-awards-and-closures-1.pdf
Parsed 161 closures from TEA PDF; 17 matched to existing schools (10.6%); 144 new closure-only schools inserted; 161 new charter_actions.
- tx_tea_directory_extraslast fetched 2026-05-23https://tealprod.tea.state.tx.us/Tea.AskTed.Web/Forms/DownloadFile.aspx
Enriched 994 TX charter rows with phone/website/principal/funding_type/magnet/program_type/grade_span_offered from TEA AskTED School Directory CSV (Playwright fetch).
US
- ccd_sy_statuslast fetched 2026-05-21https://nces.ed.gov/ccd/files.asp#FileNameId_4
Reconciled CCD 2023-24 SY_STATUS_TEXT. 54 schools → 'closed'; 0 → 'pre_opening'; 200 new closure events inserted (proxy date 2024-06-30).
- ccd_school_membershiplast fetched 2026-05-21https://nces.ed.gov/ccd/data/zip/ccd_SCH_052_2324_l_1a_073124.zip
CCD 2023-24 School Membership; 99,507 EUT rows scanned nationally; 8,027 matched our charter roster + applied; 8027 enrollment_history rows upserted.
- ccd_directory_contact_extraslast fetched 2026-05-23https://nces.ed.gov/ccd/files.asp
Backfilled phone (6073 schools) and website (4677 schools) from CCD School Directory 2023-24 (029 series). Only updated fields that were NULL; existing state-DOE enrichment (CA, TX) was preserved.
- ccd_school_demographicslast fetched 2026-05-23https://nces.ed.gov/ccd/data/zip/ccd_SCH_052_2324_l_1a_073124.zip
Computed race % from CCD-052 race-subtotal rows for 7973 schools. Denominator: schools.enrollment_latest (fallback: sum of race counts).
- ccd_edge_geocodelast fetched 2026-05-23https://nces.ed.gov/programs/edge/data/EDGE_GEOCODE_PUBLICSCH_2324.zip
Filled county (5866 schools) and lat/lng (7064 schools) from NCES EDGE Geocodes 2023-24. Only updated NULL fields; state-DOE values (CA/TX/NC/MI) were preserved.
- ccd_edge_geocode_bonuslast fetched 2026-05-24https://nces.ed.gov/programs/edge/data/EDGE_GEOCODE_PUBLICSCH_2324.zip
Filled urbanicity (7358) and cbsa_name (7361) from NCES EDGE Geocodes 2023-24 LOCALE + CBSA_NAME columns. Only updated NULL fields.
- ccd_school_lunch_frllast fetched 2026-05-24https://nces.ed.gov/ccd/Data/zip/ccd_sch_033_2324_l_1a_073124.zip
Filled pct_frl from CCD-033 Free/Reduced-Price Lunch table. Computed as (free + reduced) / Education Unit Total * 100, rounded to int. Schools with DMS_FLAG Suppressed/NotReported/Missing were skipped.
- ccd_school_characteristicslast fetched 2026-05-25https://nces.ed.gov/ccd/Data/zip/ccd_sch_129_2324_w_1a_073124.zip
Filled nslp_status (7606) and virtual (4863) from CCD-129 School Characteristics. Only NULL fields touched.
- edfacts_ell_2021_22last fetched 2026-05-25https://eddataexpress.ed.gov/sites/default/files/data_download/EID_12355/SY2122_FS141_DG678_SCH_data_files.zip
Filled pct_ell from EDFacts FS141 DG678 SY2021-22. Denominator = schools.enrollment_latest (2023-24). 2-year mismatch labeled on detail page via ell_year column.
- ccd_school_membership_historylast fetched 2026-05-25https://nces.ed.gov/ccd/files.asp
Prior-year CCD-052 ingest: 2020-2021, 7392 rows upserted into enrollment_history.
- irs_bmflast fetched 2026-05-25https://www.irs.gov/pub/irs-soi/eo_{xx}.csv
IRS Exempt Organizations Business Master File, per-state extracts. Filtered to 501(c)(3) active orgs filing 990/990-EZ with charter-school-likely NTEE codes (B29 plus B2x/B11/B90/B99 with charter-hint name regex). 9,992 candidate orgs from 52 state files.
- propublica_nonprofitslast fetched 2026-05-26https://projects.propublica.org/nonprofits/api/v2/organizations/{EIN}.json
ProPublica Nonprofit Explorer API. Multi-year 990 financial summaries (revenue, expenses, assets, liab, aggregate officer comp). Per-officer detail not in this API — would require IRS XML 990 from s3://irs-form-990/. Fetched 196 of 315 EINs, 1373 filings inserted, 119 not found, 0 failures.
- ccd_school_stafflast fetched 2026-05-26https://nces.ed.gov/ccd/data/zip/ccd_SCH_059_2324_l_1a_073124.zip
NCES Common Core of Data 2023-24 School Staff file (059). Teacher FTE per school, filtered to Education Unit Total + DMS_FLAG=Reported. Used to compute student-teacher ratio. Updated 7180 schools.
- irs_990_xml_officerslast fetched 2026-05-28https://apps.irs.gov/pub/epostcard/990/xml/{YEAR}/
IRS TEOS Form 990 XML release. Per-officer compensation from Part VII Section A. Distributed as ~470 MB monthly batch ZIPs keyed by XML_BATCH_ID; index_YYYY.csv lists all filings. 2025 index: 861 full 990 filings parsed, 8000 officers inserted.
- usaspending_csplast fetched 2026-05-28https://api.usaspending.gov/api/v2/search/spending_by_award/
USA Spending federal-award API. CSP (CFDA 84.282) grants since FY2008. Recipient EIN matched via name → irs_bmf_orgs.name_norm. State-pass-through subprogram A is included in the table but should be filtered out at render time. 175 CSP grants inserted across 126 nonprofits ($740M total).