How I Actually Navigate the Alachua County Mugshot Archive
The Alachua County Sheriff's Office maintains a booking photo database that gets updated daily, sometimes multiple times per shift. Most people look at it and see a grid of faces. What they miss is the metadata layered underneath every single entry. I spent three years pulling reports from that system for a private investigator job before I stopped doing that kind of work. The habits stuck. Here is the straightforward part. You go to the Alachua County Corrections search portal. You enter a name or a booking reference number. The results page shows booking dates, charges, bond amounts, and mugshot images. That is the surface level. The thing nobody mentions is that the raw booking data sits behind a separate API endpoint that most users never find, and it returns fields the public interface deliberately strips out. I learned this the hard way in late 2023. I was tracking a subject who had been arrested under slightly different name spellings across three separate incidents. The public search tool returned only the most recent booking. The older two were there, but they required exact middle name initials and the correct date format to surface. I ended up writing a simple script that cycled through common name variations and queried the underlying records endpoint directly. It cut my search time from about forty minutes per subject down to roughly eight minutes. The script itself is not worth sharing, but the method is what matters.
Start with the booking reference number whenever you have it. Searching by name alone in Alachua County produces noisy results because the county covers Gainesville, a university town with a high transient population. Multiple Jason Michels exist in the system. The booking ref is unique and immutable. If you are doing any serious work, get into the habit of recording that number on first sight and using it for everything downstream.
What the 90-Day Window Actually Means
The term "90-day mugshots" refers to the retention window for booking photos before they are automatically purged from the live archive. After ninety days, the mugshot drops off the public-facing page. This is not a legal expungement. The record still exists in the backend system. It just requires a records request to retrieve rather than appearing in a free search. Here is the counter-intuitive detail: the ninety-day clock does not always start at the moment of arrest. It starts at the moment the booking photo was officially processed and timestamped in the database. If a subject was held in a different county's facility and transferred to Alachua forty-eight hours later, the 90-day window begins from the transfer booking date, not the original arrest date. I ran into this when trying to pull a photo from what I thought was a current arrest. The record showed as purged. A quick cross-reference with the Miami-Dade custody logs revealed the original arrest occurred there. The transfer to Alachua happened later, and the ninety-day window was already ticking from that transfer date. That meant I had only a short window to submit a records request before the photo disappeared entirely.
Get the Full Details

Practical Workflow for Pulling Records
The most efficient approach combines three sources. First, you pull the current public booking data from the Alachua County Corrections site. Second, you check the Florida Department of Law Enforcement offender search for statewide arrest history. Third, you submit a formal public records request through the county clerk's office for any records beyond the ninety-day window or for sealed entries that may still appear in internal systems. The FDLE search is useful because it shows arrests across all Florida counties, not just Alachua. This matters when someone has a history of moving between jurisdictions. A subject might have six prior bookings, three of them in other counties, and the Alachua-only view would make it look like a first-time offense. The full picture changes how you assess risk or understand patterns. I recommend keeping a simple spreadsheet with columns for booking ref, arrest date, charge codes, bond, release date, and mugshot status. When you are comparing a dozen subjects over a week, mental notes do not hold up. The spreadsheet becomes your actual research tool. I have seen people lose track of which booking matched which charge because the names looked similar and the dates were close together. A spreadsheet prevents that kind of error.
Common Mistakes People Make
The biggest mistake I see is assuming a missing mugshot means the person was not arrested. Alachua County sometimes processes bookings without taking photos, particularly for minor traffic-related holds or when the facility is at capacity. A blank photo field in the record does not equal a clean record. The second mistake is relying solely on the front page search results and stopping there. The advanced filters on the booking search are not obviously labeled. There is a checkbox for "completed" versus "pending" cases, and a date range filter that uses a different format than the rest of the page. If you do not adjust these, you will either get too many results or miss recent bookings entirely. Spend five minutes exploring the filter options before you run a broad search. A third mistake involves bond amounts. People read the bond figure and assume that is the actual cost to get released. Bond in Alachua County can be set at multiple levels. The initial bond on the booking page is often a preliminary figure. The final bond determination happens at a first appearance hearing, which can adjust it significantly upward or downward depending on the judge and the charge severity. I once saw a bond drop from fifteen thousand dollars on the booking page to two thousand five hundred at the hearing because the initial charge was upgraded mid-processing and then corrected. The numbers on the site were stale by the time most people read them.
Limitations You Need to Accept
This system is not comprehensive. It only covers Alachua County bookings. If your subject was arrested in Santa Fe County, Leon County, or any neighboring jurisdiction, their mugshot will not appear here. You need a multi-county strategy if you are doing serious background research. The data also has a delay. New bookings can take up to four hours to appear on the public site after processing. If you are tracking something in real time, do not expect instant updates. I have lost track of how many times someone called me saying a booking was missing, only to find it appeared two hours later after a shift change backlog cleared. Sealed and expunged records do not show up in any public search, period. No workaround exists for that unless you have a court order or are working through an attorney. The system will return nothing for those entries. Do not waste time convincing yourself the data is being withheld arbitrarily. It is legally protected.

If you need historical mugshots beyond the ninety-day window, the fastest route is a public records request submitted via email to the Alachua County Sheriff's Office communications division. Response time is typically five to seven business days. Some records come back within forty-eight hours if they are straightforward. Others take longer because they require manual retrieval from archived storage. Budget your time accordingly.
Technical Notes for People Who Want to Automate
The county booking search page is not particularly friendly to automation. It uses client-side JavaScript rendering, which means simple HTTP requests will not grab the results. You need a browser automation tool like Playwright or Puppeteer to interact with it properly. I built a small Python script using Playwright that handles the name search, extracts the booking reference numbers, and writes them to a CSV file. It takes about three seconds per search once the browser is loaded. If you go this route, throttle your requests. Running fifty searches in a minute will get your IP flagged and temporarily blocked. Space them out. One search every thirty seconds is a safe cadence. The county IT department does not advertise the block threshold, but it exists and it is easier to work around than to debug after you hit it. The booking reference number is your most valuable output from any automated process. Store it somewhere persistent. That number survives name changes, address updates, and system migrations. Everything else can be reconstructed from it if needed, but losing the reference number makes reconstruction substantially harder.