Skip to content
← All datasets

ICE Detention Stays at Georgia Facilities

People held in ICE detention at Georgia facilities (by longest facility): stays begun each month, how long they lasted, and how they ended.

Year coverage
20222026
Updated
irregular
Version
1.0.0
Schema hash
ff3841f38c3d

Detail levels available

State · defaultCounty

Overview

Stays in ICE detention whose longest facility was in Georgia, October 2022 through 6 August 2026, from the ICE detention records released under FOIA (Hausman v. ICE) and processed to the stay level by the Deportation Data Project. A stay is one uninterrupted period in ICE custody, possibly across several facilities, located here at the facility where the person spent the longest. Counts of stays begun and ended, the average length of ended stays, and the average number of facilities per stay, by calendar month, ICE's gender determination, the arresting agency (ICE or CBP), how the stay ended, and citizenship country at state level; annual totals by the facility's county.

Row grain: One row per year, month, county_fips, demographic, arresting_agency_group, release_reason, citizenship_country.

Key metric

avg_stay_length_daysAverage Stay Length Days

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
yearYearintegernoCalendar year the stay began (from stay_book_in_date_time) - NOT the federal fiscal year ICE reports by. 2022 covers October-December only; 2026 runs through 6 August.
Full description
Calendar year the stay began (from stay_book_in_date_time) - NOT the federal fiscal year ICE reports by. 2022 covers October-December only; 2026 runs through 6 August.
monthMonthstringnoCalendar month the stay began, or 'all' for the year.
Full description
Calendar month the stay began, '01'-'12', or 'all' for the calendar-year total. County rows carry 'all' only (monthly counts are published at state grain).
13 allowed values
  • all — total / aggregate
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
county_fipsCounty FIPSstringyes5-digit FIPS of the county of the DETENTION FACILITY where the person spent the longest part of the stay (county_longest) - the facility's county, not the person's residence. Georgia's ICE facilities sit in Stewart (Stewart Detention Center), Charlton (the Folkston processing centers), Irwin, Fulton (the Atlanta hold room and the federal penitentiary), Clayton (Robert A. Deyton), plus county jails that hold ICE detainees for short periods (Floyd, Cobb, and a few others whose counts are withheld). NULL on state rows; stays whose longest facility has no county in the source (the Savannah hold room) appear in state rows only.
Full description
5-digit FIPS of the county of the DETENTION FACILITY where the person spent the longest part of the stay (county_longest) - the facility's county, not the person's residence. Georgia's ICE facilities sit in Stewart (Stewart Detention Center), Charlton (the Folkston processing centers), Irwin, Fulton (the Atlanta hold room and the federal penitentiary), Clayton (Robert A. Deyton), plus county jails that hold ICE detainees for short periods (Floyd, Cobb, and a few others whose counts are withheld). NULL on state rows; stays whose longest facility has no county in the source (the Savannah hold room) appear in state rows only.

Joins counties; adds its label columns.

demographicDemographicstringnoICE's own gender determination (agency-assigned, not self-reported): 'male', 'female', or 'all'. ICE's 'Unknown' counts toward 'all' only, so male + female is at most 'all'. County rows carry 'all' only.
Full description
ICE's own gender determination (agency-assigned, not self-reported): 'male', 'female', or 'all'. ICE's 'Unknown' counts toward 'all' only, so male + female is at most 'all'. County rows carry 'all' only.
3 allowed values
  • all
  • female
  • male

Joins demographics; adds its label columns.

arresting_agency_groupArresting Agency GroupstringnoWhich agency's program produced the arrest: ICE or CBP.
Full description
The Deportation Data Project's program-group flag (apprehension_final_program_group) for the arrest that led to the stay: 'ice' (an ICE program) or 'cbp' (a Border Patrol / port of entry program); a NULL flag in the source is published as 'unknown' so the three parts sum exactly to 'all'. County rows carry 'all' only.
4 allowed values
  • all — total / aggregate
  • cbp
  • ice
  • unknown
release_reasonRelease ReasonstringnoHow the stay ended, or 'still_detained'.
Full description
How the stay ended (stay_release_reason), collapsed to the sub_topic's shared vocabulary: 'removed', 'transferred' (ICE's stay-closing code 'Transferred' - rare at stay level, and in Georgia four of five such stays are followed by another ICE stay for the same person within days, so it marks a re-booking gap, not a hand-off out of ICE custody), 'released_on_bond', 'released_on_order' (recognizance or supervision), 'paroled', 'other' (a mixed bucket: transfer to the U.S. Marshals or another agency - the actual hand-off out of ICE custody - voluntary departure/return, relief granted, proceedings terminated, court ordered, administrative re-processing, death, escape); 'still_detained' = no book-out at extraction (a real category, not missingness); 'all' = total. County rows carry 'all' only.
8 allowed values
  • all — total / aggregate
  • other
  • paroled
  • released_on_bond
  • released_on_order
  • removed
  • still_detained
  • transferred
citizenship_countryCitizenship CountrystringnoCitizenship country (22 named, else 'other').
Full description
Citizenship country as recorded by ICE, mapped to the sub_topic's shared vocabulary: the 22 countries most frequent among Georgia records across the ICE and EOIR sources, 'other' for every other country, 'unknown' for stateless / unknown labels; 'all' = total. Published at state grain only - county rows carry 'all'.
25 allowed values
  • all — total / aggregate
  • brazil
  • china
  • colombia
  • cuba
  • dominican_republic
  • ecuador
  • el_salvador
  • guatemala
  • haiti
  • honduras
  • india
  • jamaica
  • mauritania
  • mexico
  • nicaragua
  • nigeria
  • peru
  • russia
  • senegal
  • south_korea
  • venezuela
  • vietnam
  • other
  • unknown
num_staysNumber StaysintegercountyesStays in ICE detention that began in the cell.
Full description
Number of stays - uninterrupted periods in ICE detention, possibly across several facilities - that began in the cell's month/year and whose LONGEST facility is in Georgia (or the county). A stay is not a person: someone detained twice is two stays. Includes stays still open at extraction. State rows are complete (a 0 is a real zero); county counts below 5, zero included, are withheld as NULL.
num_stays_endedNumber Stays EndedintegercountyesStays in the cell that had ended by 6 August 2026.
Full description
Stays in the cell with a book-out date by the coverage end (2026-08-06) - the N that avg_stay_length_days averages over; num_stays - num_stays_ended is the number still detained at extraction. Recent months have many open stays, so this lags num_stays there. County counts below 5, zero included, are withheld as NULL.
avg_stay_length_daysAverage Stay Length DaysnumberyesAverage days in ICE detention, ended stays only.
Full description
Mean stay_length_days (book-in to book-out, fractional days) over the stays in the cell that had ENDED by 2026-08-06, i.e. sum of lengths / num_stays_ended. Open stays are excluded, so the most recent months are biased SHORT: the long stays that are still open are missing from their book-in month, and a rising or falling series near the end of the window can be a censoring artifact. No unit (days). §4b: a length below 0 or above the coverage window (1405 days) is NULLed before averaging; none occur in the window.
avg_facilities_per_stayAverage Facilities per StaynumberyesAverage number of facilities a stay passed through.
Full description
Mean n_stints - the number of facility stints making up the stay - over ALL stays in the cell (open ones included): a measure of transfer intensity, 1.0 meaning nobody was moved. No unit. §4b: an n_stints below 1 is NULLed before averaging; none occur.

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
detaildetailcountiesstatesenum-enforced, default: states
county_fipsforeign_keyany valuemulti-value
demographicforeign_keyallfemalemalemulti-value, enum-enforced
monthcategorical
13 allowed values
  • all
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
multi-value, enum-enforced
arresting_agency_groupcategoricalallcbpiceunknownmulti-value, enum-enforced
release_reasoncategorical
8 allowed values
  • all
  • other
  • paroled
  • released_on_bond
  • released_on_order
  • removed
  • still_detained
  • transferred
multi-value, enum-enforced
citizenship_countrycategorical
25 allowed values
  • all
  • brazil
  • china
  • colombia
  • cuba
  • dominican_republic
  • ecuador
  • el_salvador
  • guatemala
  • haiti
  • honduras
  • india
  • jamaica
  • mauritania
  • mexico
  • nicaragua
  • nigeria
  • peru
  • russia
  • senegal
  • south_korea
  • venezuela
  • vietnam
  • other
  • unknown
multi-value, enum-enforced
demographic_categorydimension_attribute
12 allowed values
  • aggregate
  • disability
  • economic_status
  • esol
  • foster_care
  • gender
  • grade
  • homeless_status
  • migrant_status
  • military
  • race
  • sped
multi-value, enum-enforced

Example requests

Run these against the base URL — they return live data.

All rows (first page), states level

curl "https://georgiacivicdata.org/api/v1/immigration/ice_detention_stays"

states data for 2026

curl "https://georgiacivicdata.org/api/v1/immigration/ice_detention_stays?year=2026"

Filtered to month = 01 for 2026

curl "https://georgiacivicdata.org/api/v1/immigration/ice_detention_stays?year=2026&month=01"

One county (FIPS 13259), 2026

curl "https://georgiacivicdata.org/api/v1/immigration/ice_detention_stays?county_fips=13259&year=2026&detail=counties"

Download 2026 as CSV

curl "https://georgiacivicdata.org/api/v1/immigration/ice_detention_stays?year=2026&format=csv"

Notes & limitations

NULL handling

  • Suppressed cells (too few students to report) are NULL, never zero.
  • Zero is a real, reported value.

Limitations

Calendar years, not federal fiscal years: `year` and `month` come from `stay_book_in_date_time` (the date the stay began), so figures here will NOT match ICE's own or DDP's published FY totals (federal FY runs October 1 - September 30). Coverage is the release window 2022-10-01 through 2026-08-06: calendar 2022 is October-December only and 2026 stops on 6 August, so both end years are partial and a year-over-year chart dips at both ends. Stays that began BEFORE the window (1,747 Georgia stays by longest facility, reaching back to 2004) are the left-censored residue of detentions still open when the FOIA window opened, not a series, and are dropped. A stay is one uninterrupted period in ICE detention, possibly across several facilities (transfers do not end a stay), and this topic locates it at the facility where the person spent the LONGEST: Georgia holds 32,988 stays by first facility, 70,116 by longest and 46,097 by last facility, so a 'detentions in Georgia' figure depends on the reading and only the longest-facility reading is published here. A stay that begins in Georgia frequently does not end there - 47% of stays whose first facility was in Georgia ended in another state, chiefly Louisiana and Texas (Rapides, Evangeline; El Paso, Cameron) - while people first booked in Fulton are largely moved on to Stewart and Folkston. Geography is the DETENTION FACILITY'S county, never the person's residence: Stewart, Charlton, Irwin, Fulton and Clayton hold ICE facilities (Floyd and Cobb county jails also hold ICE detainees for short periods), and nothing here says where the detained person lived. 99.98% of Georgia stays resolved to a county (16 state-only, at a facility with no county in the source), so county rows sum to slightly less than the state total. Disclosure control (the platform's own rule; the source has none): county rows are annual totals with every categorical pinned to `all` (`month` and `citizenship_country` are published at state grain only), on a complete 159-county x 5-year grid; any county count below 5 - ZERO INCLUDED - is withheld as NULL, with complementary suppression so a withheld cell cannot be recovered by subtraction. A county NULL therefore means 'fewer than five, possibly none', never a real zero; state rows are complete and a state 0 is a real zero. At county grain num_stays - num_stays_ended (the still-open count) is published by implication even when small; it is a count of a category at a large facility, not an identity, and the state series publishes it directly. CENSORING: `avg_stay_length_days` averages ENDED stays only (8.2% of Georgia stays in the window were still open at extraction, 24% of those that began in 2026), so the most recent months are biased short - the long stays still in progress are missing from their book-in month - and an apparent fall (or rise, as they close) in average length near the end of the window can be a censoring artifact rather than a change in practice. `num_stays - num_stays_ended` is the open count in each cell. `demographic` is ICE's own gender determination (`Male` / `Female`), not self-reported; ICE's `Unknown` counts toward `all` only, so male + female is at most `all`. `citizenship_country` names the 22 countries most frequent in Georgia records; everything else is `other`. `arresting_agency_group` is the Deportation Data Project's program-group flag for the arrest that led to the stay (ICE vs CBP), not an ICE field; a NULL flag is published as `unknown`. `release_reason` collapses ICE's release labels to six outcome groups plus `still_detained` (no book-out by 2026-08-06).