Health Insurance by Citizenship Status (ACS)
How uninsured rates differ between native-born residents, naturalized citizens, and noncitizens in each Georgia community - ACS 5-year estimates down to the census tract.
- 2020–2024
- annual
- 1.0.0
- 0fc2742c28bf
Overview
Health insurance coverage by nativity and citizenship from the American Community Survey 5-year estimates (detailed table B27020, Health Insurance Coverage Status and Type by Citizenship Status), for Georgia at state, county, school district, and census tract geography, vintages 2020-2024: the share of the civilian noninstitutionalized population with no health insurance among the native born, the foreign born, naturalized citizens, and noncitizens, with the underlying uninsured, insured, private-coverage, and public-coverage counts and 90 percent margins of error.
Row grain: One row per year, county_fips, district_code, tract_geoid, citizenship_status.
uninsured_rate — Uninsured 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 | ACS 5-year vintage END year: 2024 covers the pooled 2020-2024 survey period. Consecutive vintages overlap.Full description▾ACS 5-year vintage END year: 2024 covers the pooled 2020-2024 survey period. Consecutive vintages overlap. |
county_fips | string | — | — | yes | 5-digit county FIPS code (state 13 + county). Populated only on county-level rows.Full description▾5-digit county FIPS code (state 13 + county). Populated only on county-level rows. |
district_code | string | — | — | yes | GCD school district code (FK to the education districts dimension). Populated only on district-level rows - Census unified-school-district estimates mapped onto the ~180 standard districts via the dimension's district_census_id.Full description▾GCD school district code (FK to the education districts dimension). Populated only on district-level rows - Census unified-school-district estimates mapped onto the ~180 standard districts via the dimension's district_census_id. |
tract_geoid | string | — | — | yes | 11-digit census tract GEOID (2020 boundaries). Populated only on tract-level rows.Full description▾11-digit census tract GEOID (2020 boundaries). Populated only on tract-level rows. |
citizenship_status | string | — | — | no | Native vs foreign born, and the foreign born by citizenship; a hierarchy, never summed.Full description▾Nativity and citizenship status. Hierarchical, not a partition: all = native + foreign_born, and foreign_born = naturalized + noncitizen, so the five values must never be summed. 'all' is the total row. The ACS asks citizenship, not legal status: noncitizen covers lawful permanent residents, temporary visa holders, and unauthorized migrants alike. In this topic the universe is the civilian noninstitutionalized population (B27020). The 'all' and 'foreign_born' rows' coverage counts are derived sums of the native / naturalized / noncitizen cells; every row's universe is published. 5 allowed values▾
|
uninsured_rate | number | — | yes | Share of the citizenship group with no health insurance.Full description▾Share of the citizenship group's civilian noninstitutionalized population with no health insurance coverage at the time of the interview (0-1), derived as num_uninsured / num_insurance_universe. NULL when the group's universe is empty in the geography (a true absence, not suppression). | |
uninsured_rate_moe | number | — | yes | 90 percent margin of error for uninsured_rate, derived from the count margins with the Census ratio formula: the subtraction form, with the Census addition-form fallback whenever the radicand is not positive, so a served margin is always greater than zero; a result above 1.0 is set to NULL as known-bad. A rate of exactly 0 or 1 (0 or 100 percent) instead takes the Census's own model margin for such estimates, 1.645 * sqrt(R * (1 - R) * AW / N) with R = min(2.3 * AW / N, 0.5), N the denominator and AW Georgia's average survey weight for the vintage (18 in 2020, 19 in 2021-2024): the ratio formula would give a 0 percent rate only the zero count's margin over N, about half the width the Census publishes. Never the headline metric.Full description▾90 percent margin of error for uninsured_rate, derived from the count margins with the Census ratio formula: the subtraction form, with the Census addition-form fallback whenever the radicand is not positive, so a served margin is always greater than zero; a result above 1.0 is set to NULL as known-bad. A rate of exactly 0 or 1 (0 or 100 percent) instead takes the Census's own model margin for such estimates, 1.645 * sqrt(R * (1 - R) * AW / N) with R = min(2.3 * AW / N, 0.5), N the denominator and AW Georgia's average survey weight for the vintage (18 in 2020, 19 in 2021-2024): the ratio formula would give a 0 percent rate only the zero count's margin over N, about half the width the Census publishes. Never the headline metric. | |
num_uninsured | integer | — | yes | People in the citizenship group with no health insurance coverage (people whose only coverage is the Indian Health Service count as uninsured) - the rate's numerator. Published on the native, naturalized, and noncitizen rows; DERIVED on the 'all' row (native + naturalized + noncitizen cells) and the 'foreign_born' row (naturalized + noncitizen cells), because B27020 publishes coverage cells only under those three groups. Published zeros are real.Full description▾People in the citizenship group with no health insurance coverage (people whose only coverage is the Indian Health Service count as uninsured) - the rate's numerator. Published on the native, naturalized, and noncitizen rows; DERIVED on the 'all' row (native + naturalized + noncitizen cells) and the 'foreign_born' row (naturalized + noncitizen cells), because B27020 publishes coverage cells only under those three groups. Published zeros are real. | |
num_uninsured_moe | number | — | yes | 90 percent margin of error for num_uninsured. Published (integer, cast to float) on the native, naturalized, and noncitizen rows; on the 'all' and 'foreign_born' rows the Census sqrt-sum-of-squares approximation over the summed leaf cells' margins under the zero-estimate rule (non-integer). Never the headline metric.Full description▾90 percent margin of error for num_uninsured. Published (integer, cast to float) on the native, naturalized, and noncitizen rows; on the 'all' and 'foreign_born' rows the Census sqrt-sum-of-squares approximation over the summed leaf cells' margins under the zero-estimate rule (non-integer). Never the headline metric. | |
num_insurance_universe | integer | — | yes | Civilian noninstitutionalized population of the citizenship group - the rate's denominator. Always the PUBLISHED B27020 group total (001 all, 002 native, 007 foreign born, 008 naturalized, 013 noncitizen), never derived. Excludes active-duty military and people in institutional group quarters, so it is smaller than the total population.Full description▾Civilian noninstitutionalized population of the citizenship group - the rate's denominator. Always the PUBLISHED B27020 group total (001 all, 002 native, 007 foreign born, 008 naturalized, 013 noncitizen), never derived. Excludes active-duty military and people in institutional group quarters, so it is smaller than the total population. | |
num_insurance_universe_moe | integer | — | yes | 90 percent margin of error for num_insurance_universe. Always the published group-total margin (integer). Never the headline metric.Full description▾90 percent margin of error for num_insurance_universe. Always the published group-total margin (integer). Never the headline metric. | |
num_insured | integer | — | yes | People in the citizenship group with health insurance coverage (private, public, or both). With num_uninsured it partitions the group exactly: num_insured + num_uninsured = num_insurance_universe. Published on the native, naturalized, and noncitizen rows; DERIVED on the 'all' row (native + naturalized + noncitizen cells) and the 'foreign_born' row (naturalized + noncitizen cells), because B27020 publishes coverage cells only under those three groups. Published zeros are real.Full description▾People in the citizenship group with health insurance coverage (private, public, or both). With num_uninsured it partitions the group exactly: num_insured + num_uninsured = num_insurance_universe. Published on the native, naturalized, and noncitizen rows; DERIVED on the 'all' row (native + naturalized + noncitizen cells) and the 'foreign_born' row (naturalized + noncitizen cells), because B27020 publishes coverage cells only under those three groups. Published zeros are real. | |
num_insured_moe | number | — | yes | 90 percent margin of error for num_insured. Published (integer, cast to float) on the native, naturalized, and noncitizen rows; on the 'all' and 'foreign_born' rows the Census sqrt-sum-of-squares approximation over the summed leaf cells' margins under the zero-estimate rule (non-integer). Never the headline metric.Full description▾90 percent margin of error for num_insured. Published (integer, cast to float) on the native, naturalized, and noncitizen rows; on the 'all' and 'foreign_born' rows the Census sqrt-sum-of-squares approximation over the summed leaf cells' margins under the zero-estimate rule (non-integer). Never the headline metric. | |
num_private_coverage | integer | — | yes | People in the citizenship group with private health insurance (employer-based, direct-purchase, or TRICARE), alone or together with public coverage. OVERLAPS num_public_coverage - never add the two (their sum exceeds num_insured by the people holding both) and never subtract them to get a 'private only' count. Published on the native, naturalized, and noncitizen rows; DERIVED on the 'all' row (native + naturalized + noncitizen cells) and the 'foreign_born' row (naturalized + noncitizen cells), because B27020 publishes coverage cells only under those three groups. Published zeros are real.Full description▾People in the citizenship group with private health insurance (employer-based, direct-purchase, or TRICARE), alone or together with public coverage. OVERLAPS num_public_coverage - never add the two (their sum exceeds num_insured by the people holding both) and never subtract them to get a 'private only' count. Published on the native, naturalized, and noncitizen rows; DERIVED on the 'all' row (native + naturalized + noncitizen cells) and the 'foreign_born' row (naturalized + noncitizen cells), because B27020 publishes coverage cells only under those three groups. Published zeros are real. | |
num_private_coverage_moe | number | — | yes | 90 percent margin of error for num_private_coverage. Published (integer, cast to float) on the native, naturalized, and noncitizen rows; on the 'all' and 'foreign_born' rows the Census sqrt-sum-of-squares approximation over the summed leaf cells' margins under the zero-estimate rule (non-integer). Never the headline metric.Full description▾90 percent margin of error for num_private_coverage. Published (integer, cast to float) on the native, naturalized, and noncitizen rows; on the 'all' and 'foreign_born' rows the Census sqrt-sum-of-squares approximation over the summed leaf cells' margins under the zero-estimate rule (non-integer). Never the headline metric. | |
num_public_coverage | integer | — | yes | People in the citizenship group with public coverage (Medicare, Medicaid and other means-tested coverage, or VA health care), alone or together with private insurance. OVERLAPS num_private_coverage - never add the two (their sum exceeds num_insured by the people holding both) and never subtract them to get a 'public only' count. Published on the native, naturalized, and noncitizen rows; DERIVED on the 'all' row (native + naturalized + noncitizen cells) and the 'foreign_born' row (naturalized + noncitizen cells), because B27020 publishes coverage cells only under those three groups. Published zeros are real.Full description▾People in the citizenship group with public coverage (Medicare, Medicaid and other means-tested coverage, or VA health care), alone or together with private insurance. OVERLAPS num_private_coverage - never add the two (their sum exceeds num_insured by the people holding both) and never subtract them to get a 'public only' count. Published on the native, naturalized, and noncitizen rows; DERIVED on the 'all' row (native + naturalized + noncitizen cells) and the 'foreign_born' row (naturalized + noncitizen cells), because B27020 publishes coverage cells only under those three groups. Published zeros are real. | |
num_public_coverage_moe | number | — | yes | 90 percent margin of error for num_public_coverage. Published (integer, cast to float) on the native, naturalized, and noncitizen rows; on the 'all' and 'foreign_born' rows the Census sqrt-sum-of-squares approximation over the summed leaf cells' margins under the zero-estimate rule (non-integer). Never the headline metric.Full description▾90 percent margin of error for num_public_coverage. Published (integer, cast to float) on the native, naturalized, and noncitizen rows; on the 'all' and 'foreign_born' rows the Census sqrt-sum-of-squares approximation over the summed leaf cells' margins under the zero-estimate rule (non-integer). Never the headline metric. |
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 | countiesdistrictsstatestracts | enum-enforced, default: counties |
district_code | foreign_key | any value | multi-value |
county_fips | foreign_key | any value | multi-value |
tract_geoid | foreign_key | any value | multi-value |
citizenship_status | categorical | allnativeforeign_bornnaturalizednoncitizen | 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), counties level
curl "https://georgiacivicdata.org/api/v1/census/health_insurance_by_citizenship"counties data for 2024
curl "https://georgiacivicdata.org/api/v1/census/health_insurance_by_citizenship?year=2024"Filtered to citizenship_status = native for 2024
curl "https://georgiacivicdata.org/api/v1/census/health_insurance_by_citizenship?year=2024&citizenship_status=native"One district (code 660), 2024
curl "https://georgiacivicdata.org/api/v1/census/health_insurance_by_citizenship?district_code=660&year=2024&detail=districts"One county (FIPS 13121), 2024
curl "https://georgiacivicdata.org/api/v1/census/health_insurance_by_citizenship?county_fips=13121&year=2024&detail=counties"Download 2024 as CSV
curl "https://georgiacivicdata.org/api/v1/census/health_insurance_by_citizenship?year=2024&format=csv"Notes & limitations
NULL handling
- Zero is a real, reported value.
Limitations
citizenship_status is a hierarchy, not a partition: all = native + foreign_born and foreign_born = naturalized + noncitizen, so never sum across it. Private and public coverage overlap (a person can hold both), so never add num_private_coverage and num_public_coverage or derive a 'private only' count; only insured + uninsured partition a group. Universe: the civilian noninstitutionalized population, excluding active-duty military and institutional group quarters. The private + public sum double-counts people holding both (e.g. employer insurance plus Medicare) and so is at least, and almost always more than, num_insured. The 'all' universe is smaller than the total population (10,746,448 vs 10,940,407 in population_by_race for 2024) because prisons, nursing homes, and military personnel are outside it; the gap is material in counties with large institutional or military populations. Coverage is measured at the time of the interview, not over the year; people whose only coverage is the Indian Health Service count as uninsured. The source publishes coverage cells only for native, naturalized, and noncitizen residents: the 'all' and 'foreign_born' rows' uninsured, insured, private, and public counts are derived as exact sums of those cells, with margins from the Census sqrt-sum-of-squares approximation under the zero-estimate rule (non-integer, served as floats), while num_insurance_universe on every row is the published group total with its published margin. uninsured_rate_moe is derived from the count margins with the Census ratio formula (addition-form fallback whenever the subtraction form's radicand is not positive, so a served margin is never zero; a 0 or 100 percent rate takes the Census's own model margin for such estimates); a degenerate small-sample margin above 1.0 is set to NULL. Published zeros are real estimates, not suppression: small foreign-born cells in rural counties and many tracts are 0 with a positive margin, and a NULL uninsured_rate means the group has no civilian noninstitutionalized members in the geography (a zero universe - a true absence). The ACS asks citizenship, not legal status: noncitizen covers lawful permanent residents, temporary visa holders, humanitarian migrants, and unauthorized migrants alike. No annotation sentinel appears in vintages 2020-2024, so no count is masked; a NULL count margin beside a present estimate would be a controlled estimate, never suppression. ACS 5-year period estimates: the year column is the vintage END year and each estimate pools five years of survey responses (2024 = 2020-2024). Consecutive vintages share about 80% of their sample, so the series is heavily smoothed - never difference overlapping vintages as if they were annual change. Estimates are survey-based and carry 90% margins of error (the *_moe columns); tract-level margins can be large relative to the estimate. All levels serve vintages 2020-2024 only, on 2020-vintage tract boundaries. State rows have NULL county_fips, district_code, and tract_geoid; county rows carry only county_fips, district rows only district_code, tract rows only tract_geoid. District rows cover the ~180 standard (city/county) districts only: the Census publishes school-district estimates at unified school district geography, which has no codes for charter schools, RESAs, or state agencies, and its few Census-only districts (e.g. the Fort Stewart military district) have no GCD district code and are dropped.