Advanced Placement (AP) Exam Scores
AP college-level exam participation and pass rates (share scoring 3 or higher) by Georgia school, district, and AP subject, 2004-2024.
- 2004–2024
- annual
- 1.0.0
- 99b14eb48412
Overview
Advanced Placement (AP) exam participation and qualifying-score counts for Georgia public high schools, with official district and state rollups, published by GOSA for 2004-2024. Each row reports the number of distinct students taking AP exams, the total exams administered, the count of exams scoring 3 or higher (College Board's qualifying threshold), and a derived pass rate (tests_3_or_higher_rate). Years 2011-2024 break the counts down by AP subject in addition to a cross-subject all_subjects total; years 2004-2010 publish only the cross-subject total.
Row grain: One row per year, district_code, school_code, subject.
tests_3_or_higher_rate — Tests 3 or Higher Rate (proportion)
The single headline value most answers want.
Variables
Every column in the fact table. The code is the exact field name the API returns.
| Column | Type | Unit | Range | Null? | Description |
|---|---|---|---|---|---|
year | integer | — | — | no | Ending calendar year of the school year (2024 = the 2023-24 school year). 2011-2024 sources carry a LONG_SCHOOL_YEAR column whose ending year is cross-checked against the filename; 2004-2010 sources have no year column and the filename year is used.Full description▾Ending calendar year of the school year (2024 = the 2023-24 school year). 2011-2024 sources carry a LONG_SCHOOL_YEAR column whose ending year is cross-checked against the filename; 2004-2010 sources have no year column and the filename year is used. |
district_code | string | — | — | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit charter codes. NULL on state-level rows. Bronze aggregate sentinels (ALL / DISTRICT_ALL) map to NULL.Full description▾GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit charter codes. NULL on state-level rows. Bronze aggregate sentinels (ALL / DISTRICT_ALL) map to NULL. |
school_code | string | — | — | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. Bronze aggregate sentinels (ALL / SCHOOL_ALL / DISTRICT_ALL) map to NULL.Full description▾GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. Bronze aggregate sentinels (ALL / SCHOOL_ALL / DISTRICT_ALL) map to NULL. |
subject | string | — | — | no | Which AP exam subject the row covers; all_subjects is the cross-subject total (distinct students, not a sum of the per-subject rows).Full description▾AP subject (snake_case recode of the source's TEST_CMPNT_TYP_NM). all_subjects is the cross-subject aggregate: the only value present for 2004-2010 (the legacy sources have no per-subject breakdown) and one row per entity alongside the per-subject rows for 2011-2024. all_subjects rows are NOT the sum of the subject rows — num_tested counts distinct students across subjects there. calculus_a is GOSA's literal label for AP Calculus AB (it pairs with calculus_bc), not a normalization error; physics_b and latin_vergil are discontinued legacy AP exams retained for the years they were administered. 42 allowed values▾
|
num_tested | integer | — | yes | Number of distinct students who sat at least one AP exam (all_subjects rows) or who sat the specific subject's exam (per-subject rows). Summing per-subject num_tested double-counts students who took multiple subjects; summing school rows can likewise slightly exceed the published district/state rollups (median gap 2) because the rollup counts each student once even when school-level attribution counts a mid-year mover at more than one school. Three source rows publish num_tested greater than num_tests_taken — impossible if both counts were accurate, but the wrong-side column is unknowable, so the published values are preserved and documented: 2005 district 611 school 0204 (Rutland HS, 33 students / 23 tests) and 2008 district 652 (Elbert County, 10/9, appearing on both the school 0176 row and the single-school district row).Full description▾Number of distinct students who sat at least one AP exam (all_subjects rows) or who sat the specific subject's exam (per-subject rows). Summing per-subject num_tested double-counts students who took multiple subjects; summing school rows can likewise slightly exceed the published district/state rollups (median gap 2) because the rollup counts each student once even when school-level attribution counts a mid-year mover at more than one school. Three source rows publish num_tested greater than num_tests_taken — impossible if both counts were accurate, but the wrong-side column is unknowable, so the published values are preserved and documented: 2005 district 611 school 0204 (Rutland HS, 33 students / 23 tests) and 2008 district 652 (Elbert County, 10/9, appearing on both the school 0176 row and the single-school district row). | |
num_tests_taken | integer | — | yes | Total AP exams administered (a student can take exams in multiple subjects, and the College Board counts each exam). 47 of 414 bronze rows in 2004 leave this blank; 2011-2019 sources suppress via empty cells, 2020-2024 via TFS.Full description▾Total AP exams administered (a student can take exams in multiple subjects, and the College Board counts each exam). 47 of 414 bronze rows in 2004 leave this blank; 2011-2019 sources suppress via empty cells, 2020-2024 via TFS. | |
num_tests_3_or_higher | integer | — | yes | Number of AP exams that scored 3 or higher (College Board's qualifying threshold; scores run 1-5). Never exceeds num_tests_taken where both are reported (enforced by a quality check).Full description▾Number of AP exams that scored 3 or higher (College Board's qualifying threshold; scores run 1-5). Never exceeds num_tests_taken where both are reported (enforced by a quality check). | |
tests_3_or_higher_rate | number | — | yes | Share of AP exams that scored 3 or higher (College Board's qualifying threshold), on a 0-1 scale; higher is better.Full description▾Share of administered exams that scored 3 or higher, derived by the transform as num_tests_3_or_higher / num_tests_taken on the 0-1 scale (the pct_* share-of-denominator companion to num_tests_3_or_higher). 2004-2010 sources publish a 0-100 percentage column that is dropped and recomputed (recomputed values agree within 0.0005 — source rounding); 2011-2024 sources publish no rate column. NULL when either count is suppressed or the denominator is 0. |
Filters
Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.
| Parameter | Kind | Allowed values | Notes |
|---|---|---|---|
year | year_exact | any value | — |
year_min | year_range | any value | — |
year_max | year_range | any value | — |
detail | detail | districtsschoolsstates | enum-enforced, default: schools |
district_code | foreign_key | any value | multi-value |
school_code | foreign_key | any value | multi-value |
subject | categorical | 42 allowed values▾
| multi-value, enum-enforced |
district_type | dimension_attribute | 7 allowed values▾
| multi-value, enum-enforced |
Example requests
Run these against the base URL — they return live data.
All rows (first page), schools level
curl "https://georgiacivicdata.org/api/v1/education/advanced_placement_scores"schools data for 2024
curl "https://georgiacivicdata.org/api/v1/education/advanced_placement_scores?year=2024"Filtered to subject = african_american_studies for 2024
curl "https://georgiacivicdata.org/api/v1/education/advanced_placement_scores?year=2024&subject=african_american_studies"One district (code 601), 2024
curl "https://georgiacivicdata.org/api/v1/education/advanced_placement_scores?district_code=601&year=2024&detail=districts"Download 2024 as CSV
curl "https://georgiacivicdata.org/api/v1/education/advanced_placement_scores?year=2024&format=csv"Notes & limitations
NULL handling
- Suppressed cells (too few students to report) are NULL, never zero.
- Zero is a real, reported value.
Limitations
Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code.