ICE Detention Stays at Georgia Facilities
ICE detention stays with any time at a Georgia facility: stays begun each month, how long they lasted, how much of that was in Georgia, and how they ended.
- 2022–2026
- irregular
- 2.0.0
- dd125f43f0db
Overview
Stays in ICE detention that spent any time at a Georgia facility, October 2022 through 6 August 2026, from the ICE detention records released under FOIA (Hausman v. ICE) and processed to the stay and stint level by the Deportation Data Project. A stay is one uninterrupted period in ICE custody, possibly across several facilities and states; it counts here if at least one of its facility book-ins was in Georgia, and its county is the Georgia county where it spent the most time. Counts of stays begun and ended, the average length of the whole ended stay, the average days of it spent in Georgia, 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.
num_stays — Number Stays (count)
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 | Calendar year the STAY began (stay_book_in_date_time, as an Eastern-time date) - NOT the federal fiscal year ICE reports by. For a stay transferred into Georgia this is when it began elsewhere, not when it reached Georgia. 2022 covers October-December only; 2026 runs through 2026-08-06.Full description▾Calendar year the STAY began (stay_book_in_date_time, as an Eastern-time date) - NOT the federal fiscal year ICE reports by. For a stay transferred into Georgia this is when it began elsewhere, not when it reached Georgia. 2022 covers October-December only; 2026 runs through 2026-08-06. |
month | string | — | — | no | Calendar month the stay began, or 'all' for the year.Full description▾Calendar month the stay began (possibly outside Georgia), '01'-'12', or 'all' for the calendar-year total. County rows carry 'all' only (monthly counts are published at state grain). 13 allowed values▾
|
county_fips | string | — | — | yes | 5-digit FIPS of the Georgia county where the stay spent the MOST TIME in ICE detention: the stay's Georgia stints (facility book-ins) are summed by the facility's county and the largest wins; ties go to the county of the most recent Georgia book-in, then the lower FIPS. Each stay is placed in ONE county only, so county rows never double-count a stay that moved between Georgia facilities. It is the DETENTION FACILITY'S county, never 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, and Cobb, whose small counts are withheld). Short book-ins at other Georgia jails (Hall, Chatham and a few more) never hold a stay's most time in Georgia, so those counties carry no stays. NULL on state rows; stays whose most-time Georgia location has no county in the source (the Savannah hold room) appear in state rows only.Full description▾5-digit FIPS of the Georgia county where the stay spent the MOST TIME in ICE detention: the stay's Georgia stints (facility book-ins) are summed by the facility's county and the largest wins; ties go to the county of the most recent Georgia book-in, then the lower FIPS. Each stay is placed in ONE county only, so county rows never double-count a stay that moved between Georgia facilities. It is the DETENTION FACILITY'S county, never 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, and Cobb, whose small counts are withheld). Short book-ins at other Georgia jails (Hall, Chatham and a few more) never hold a stay's most time in Georgia, so those counties carry no stays. NULL on state rows; stays whose most-time Georgia location has no county in the source (the Savannah hold room) appear in state rows only. |
demographic | string | — | — | no | 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.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▾
|
arresting_agency_group | string | — | — | no | Which 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 - typically a border arrest whose stay later passed through Georgia); 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▾
|
release_reason | string | — | — | no | How the whole stay ended, or 'still_detained'.Full description▾How the WHOLE stay ended (stay_release_reason) - possibly after the person was moved out of Georgia (a stay transferred to Louisiana and removed from there is 'removed'). Collapsed to the sub_topic's shared vocabulary: 'removed', 'transferred' (ICE's stay-closing code 'Transferred' - rare at stay level, and in Georgia four in five such stays are followed by another ICE stay for the same person, about half of them beginning within a week, 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 - the person may be held outside Georgia by then); 'all' = total. County rows carry 'all' only. 8 allowed values▾
|
citizenship_country | string | — | — | no | Citizenship 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▾
|
num_stays | integer | — | yes | Stays in ICE detention with any time at a Georgia facility.Full description▾Number of stays - uninterrupted periods in ICE detention, possibly across several facilities - that began in the cell's month/year and included at least one stint (book-in) at a GEORGIA facility, however short and wherever the rest of the stay was spent. County rows count each such stay once, in the Georgia county where it spent the most time. 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_ended | integer | — | yes | Stays 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 and avg_days_in_georgia average over; num_stays - num_stays_ended is the number still detained at extraction (in Georgia or elsewhere). 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_days | number | — | — | yes | Average days in ICE detention for the whole stay, ended stays only.Full description▾Mean stay_length_days (book-in to book-out of the WHOLE stay, fractional days - including any time held outside Georgia before or after its Georgia stints) 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_days_in_georgia | number | — | — | yes | Average days the stay spent at Georgia facilities, ended stays only.Full description▾Mean number of days the stay spent at GEORGIA detention facilities - the sum of its Georgia stints (book-out minus book-in), with overlapping Georgia stints of one stay counted once - over the same ended stays avg_stay_length_days averages (N = num_stays_ended). It therefore never exceeds avg_stay_length_days; the difference is, roughly, the average time held outside Georgia (before being moved in, or after being moved out). Censored exactly like avg_stay_length_days: open stays are excluded, so recent months are biased short. No unit (days). §4b: a per-stay value below 0, above the coverage window (1405 days) or above the stay's own length is NULLed before averaging; none occur. |
avg_facilities_per_stay | number | — | — | yes | Average number of facilities a stay passed through.Full description▾Mean n_stints - the number of facility stints making up the WHOLE stay, Georgia and out-of-state facilities alike - 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.
| Parameter | Kind | Allowed values | Notes |
|---|---|---|---|
year | year_exact | any value | — |
year_min | year_range | any value | — |
year_max | year_range | any value | — |
detail | detail | countiesstates | enum-enforced, default: states |
county_fips | foreign_key | any value | multi-value |
demographic | foreign_key | allfemalemale | multi-value, enum-enforced |
month | categorical | 13 allowed values▾
| multi-value, enum-enforced |
arresting_agency_group | categorical | allcbpiceunknown | multi-value, enum-enforced |
release_reason | categorical | 8 allowed values▾
| multi-value, enum-enforced |
citizenship_country | categorical | 25 allowed values▾
| multi-value, enum-enforced |
demographic_category | dimension_attribute | 12 allowed values▾
| 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 (values the source withholds, usually for a group too small 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 - for a stay transferred into Georgia, the date it began at a facility elsewhere), taken in Eastern time: ICE records each facility's local wall-clock time (DDP labels it UTC), so a stay that began at a facility in another time zone is converted to its Eastern date (963 stays moved to the next day, 23 of them into another month), 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,961 with a Georgia stint, reaching back to 2004) are the left-censored residue of detentions still open when the FOIA window opened, not a series, and are dropped. WHICH STAYS COUNT: a stay is one uninterrupted period in ICE detention, possibly across several facilities (transfers do not end a stay), and this topic counts every stay with AT LEAST ONE stint (facility book-in) at a Georgia facility, however short, taken from the stint-level release of the same extract (DDP's duplicate-flagged stints dropped). Of the stays that began in the window, 78,248 touched Georgia; the stays file's own single-facility readings give 31,385 by first facility, 68,369 by the facility where the person spent the longest and 44,679 by last facility, so a 'detentions in Georgia' figure depends on the reading. Version 1.x of this dataset used the longest-facility reading; the 9,879 stays added in 2.0.0 passed through Georgia but spent longer at a facility in another state (for 88% of them one in AZ, MS, TX or LA). Among those that had ended, the median stay spent 7.6 days in Georgia (a median 26% of the stay), and 72% ended at a Georgia facility. Georgia is both an entry point and a way station: 48% of the window's stays whose first facility was in Georgia ended in another state, chiefly Louisiana and Texas, while people first booked in Fulton are largely moved on to Stewart and Folkston. 53 Georgia stints in the stint file carry no stay_ID and cannot be linked to a stay; a stay whose only Georgia time was one of them is missed. WHOLE-STAY MEASURES: `avg_stay_length_days`, `avg_facilities_per_stay`, `release_reason`, `arresting_agency_group`, `citizenship_country`, `demographic` and the `year`/`month` keys describe the WHOLE stay, including time held outside Georgia before it arrived or after it was moved on; a stay moved to Louisiana and removed from there is `removed` here. Only `avg_days_in_georgia` is Georgia-specific: the mean days the same ended stays spent at Georgia facilities (47.4 of 60.0 days on average across all ended stays in the window). COUNTY: each stay is placed in ONE Georgia county - the one where it spent the most days, summing its Georgia stints by the facility's county (an open stint runs to the end of 2026-08-06); ties go to the county of the most recent Georgia book-in, then the lower FIPS. 31,159 stays touched more than one Georgia location (most often the Atlanta hold room and Stewart, or Folkston and Stewart); they count only in their most-time county, so a county row is NOT every stay that passed through that county's facilities (use ice_detention_stints for book-ins by facility county), and county rows can never sum above the state total. Overlapping Georgia stints of one stay (3 stays in this release, not flagged as duplicates by DDP) are counted once. 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, whose most-time Georgia location has 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, and every average is withheld wherever its N is below 5 (at every grain) or withheld. 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` and `avg_days_in_georgia` average ENDED stays only (7.6% 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).