Skip to main content

SchoolDigger Python SDK

Official Python client for the SchoolDigger API — K-12 school data for 120,000+ U.S. schools.

Installation

pip install schooldigger

Quick Start

import schooldigger

config = schooldigger.Configuration()
config.api_key["appID"] = "YOUR_APP_ID"
config.api_key["appKey"] = "YOUR_APP_KEY"

client = schooldigger.ApiClient(config)

# Search schools
api = schooldigger.SchoolsApi(client)
result = api.search_schools(st="WA", q="Lincoln")
for school in result.school_list:
    print(f"{school.school_name} — {school.address.city}, {school.address.state}")

# Get a specific school by SchoolDigger ID
school = api.get_school("530966001632")
print(f"Enrollment: {school.school_yearly_details[0].number_of_students}")

API Classes

Class Methods
SchoolsApi search_schools(), get_school()
DistrictsApi search_districts(), get_district()
RankingsApi get_school_rankings(), get_district_rankings()
AutocompleteApi autocomplete_schools(), autocomplete_districts()

Test scores in API 3.0

This version of the SDK targets API 3.0. Pass include_ranges=True to get_school / get_district (without it the record is identical to API 2.4). Each test-score percent (percent_met_standard, percent_tier1 ... percent_tier5) is either a number or an APIReportedPercent object (status of range, suppressed, legacyImputed or derived, with optional value, low, high), and is None when the state reported nothing. The SDK exposes the union through .actual_instance:

school = api.get_school("330004800609", include_ranges=True)
for ts in school.test_scores or []:
    v = ts.school_test_score.percent_met_standard if ts.school_test_score else None
    v = v.actual_instance if v is not None else None
    if v is None:
        text = "not reported"
    elif isinstance(v, (int, float)):
        text = f"{v}%"
    elif v.status == "suppressed":
        text = "suppressed by the state"
    elif v.low is not None and v.low <= 0:
        text = f"< {v.high}%"
    elif v.high is not None and v.high >= 100:
        text = f">= {v.low}%"
    elif v.low is not None:
        text = f"{v.low}-{v.high}%"
    else:
        text = f"{v.value}%"
    print(ts.year, ts.grade, ts.subject, text)

See Data Quality and Suppression for the full vocabulary and rendering rule. API 2.4 and below (SDK 1.x) return only exact values.

Authentication

All API calls require an appID and appKey. Get your free API key at developer.schooldigger.com.

Documentation

Plans

Plan Price Highlights
DEV/TEST Free Enterprise-level access, 20 calls/day
Basic $19.90/mo 1 year of data
Pro $89/mo Boundaries, geo search, finance
Enterprise $189/mo Full depth, boundary containment

License

MIT

Metadata

Release files for schooldigger 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for schooldigger 2.0.0
File Size Uploaded
schooldigger-2.0.0.tar.gz 65.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for schooldigger 2.0.0
File Interpreter ABI Platform
schooldigger-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 176.0 kB

Release files / schooldigger-2.0.0.tar.gz

Download URL schooldigger-2.0.0.tar.gz
Size 65.2 kB
Tags Source
SHA-256 checksum
How to use checksums
40f94ea32defd26054a51236231f77044ca9e0f59e873fe0d93c12df4bf361f4
BLAKE2b-256 checksum
How to use checksums
5bcef06fc8bbbd58c55fd2a042e8931cf6134d32b52ba63db09bee9f7e659ce7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / schooldigger-2.0.0-py3-none-any.whl

Download URL schooldigger-2.0.0-py3-none-any.whl
Size 110.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e58e18c0374971d9912a8598794e68d958471d016cb392083a608bb8d9ceebc4
BLAKE2b-256 checksum
How to use checksums
5fb3a49680e6fc164ef818a8d28630f431f514a336cb01f4fa9c5511988b20b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

3.0.0

2 release files

This release

2.0.0 This release

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page