Skip to content
← All datasets

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.

Year coverage
2020–2024
Updated
annual
Version
1.0.0
Schema hash
0fc2742c28bf

Detail levels available

StateCounty · defaultDistrict

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.

Key metric

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.

ColumnTypeUnitRangeNull?Description
yearYearinteger——noACS 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_fipsCounty FIPSstring——yes5-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.

Joins counties; adds its label columns.

district_codeDistrict Codestring——yesGCD 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.

Joins districts; adds its label columns.

tract_geoidTract GEOIDstring——yes11-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.

Joins tracts; adds its label columns.

citizenship_statusCitizenship Statusstring——noNative 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
  • all — total / aggregate
  • native
  • foreign_born
  • naturalized
  • noncitizen
uninsured_rateUninsured Ratenumberproportion—yesShare 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_moeUninsured Rate Moenumberproportion—yes90 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_uninsuredNumber Uninsuredintegercount—yesPeople 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_moeNumber Uninsured Moenumbercount—yes90 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_universeNumber Insurance Universeintegercount—yesCivilian 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_moeNumber Insurance Universe Moeintegercount—yes90 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_insuredNumber Insuredintegercount—yesPeople 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_moeNumber Insured Moenumbercount—yes90 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_coverageNumber Private Coverageintegercount—yesPeople 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_moeNumber Private Coverage Moenumbercount—yes90 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_coverageNumber Public Coverageintegercount—yesPeople 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_moeNumber Public Coverage Moenumbercount—yes90 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.

ParameterKindAllowed valuesNotes
yearyear_exactany value—
year_minyear_rangeany value—
year_maxyear_rangeany value—
detaildetailcountiesdistrictsstatestractsenum-enforced, default: counties
district_codeforeign_keyany valuemulti-value
county_fipsforeign_keyany valuemulti-value
tract_geoidforeign_keyany valuemulti-value
citizenship_statuscategoricalallnativeforeign_bornnaturalizednoncitizenmulti-value, enum-enforced
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
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.