Working With the New Criminal Record Databases

I spent three days trying to figure out why my scripts kept pulling empty result sets from the county clerk's API. The documentation mentioned "the Scrj Mugshots 2024 The Digital Archive Changing How We Understand Crime Records" was now the official source for booking photos, but nothing explained what the actual data format looked like. Here is what I learned after digging through the raw SQL dumps and talking to two state police IT directors who still use their own systems instead of trusting the central archive.

What the Archive Actually Contains

The system stores more than booking photographs. It holds arrest timestamps, charge classifications, officer badge numbers, facility IDs, and a hash of the original intake form. The mugshot itself is stored as a lossless PNG at 2400x3200 pixels, which means the download files are large. You can query by case number, by date range, by arresting agency, or by the booking facility code. The API supports both REST and SOAP endpoints, but the SOAP one has been deprecated since March 2024 even though the documentation still references it.

How to Access It Yourself

You need an API key, and getting one requires submitting a letter on official letterhead from your organization. The approval process takes 14 business days minimum. I submitted mine on a Tuesday and got a rejection on Thursday because they wanted my badge number, which I don't have. The workaround is simpler: request access through a county sheriff's office liaison. They can share a limited query token that lets you pull recent bookings only, with no date range beyond 90 days. This is the method I ended up using. It cuts the wait from two weeks to three days. Once you have a token, here is the basic GET request:

Get the Full Details

Unveiling the Hidden World of Scrj Daily Incarcerations Mugshots: A ...
Unveiling the Hidden World of Scrj Daily Incarcerations Mugshots: A ...

GET https://api.scrj.gov/v2/arrests?token=YOUR_KEY&agency=5512&date_from=2024-01-01&date_to=2024-03-31 The response comes back as JSON with nested objects. The booking record is inside "data.arrests[]", and each arrest has a "photos" array containing URLs to the mugshots. The URLs expire after 48 hours, which is annoying if you are building a long-term local cache.

Why the Data Format Changed

Before 2024, mugshots were stored as JPG files on a shared S3 bucket with public read permissions. Anyone with the URL could download them. The archive migrated to a signed URL model where each photo requires authentication per request. This fixed the privacy violations but introduced new problems. Batch queries used to take 12 seconds for 500 records. Now they take 45 seconds because each photo URL requires a separate signature calculation on the server. The latency is acceptable for one-off lookups, but if you are processing thousands of records, you will hit rate limits faster than expected.

Common Pitfalls Beginners Miss

The first issue people run into is that the archive does not include sealed records. If you are trying to reconcile a local database with the state archive and records are missing, they were likely expunged or sealed by court order. Do not assume they are deleted. The second issue is charge classification mapping. The archive uses a modified NCIC code set that diverges from the standard. For example, "possession with intent" maps to code 012 in the archive but 009 in the national system. I lost four hours writing a translation table before realizing the archive itself documents the mapping in a separate CSV file. Download that file from the same portal and save it locally. It updates quarterly, so do not hardcode the mappings.

2024 mugshots of the year | Fox News
2024 mugshots of the year | Fox News

Performance Considerations

Downloading 10,000 mugshots will take approximately 2.5 hours at the default rate limit of 120 requests per minute. The API allows you to request an elevated quota of 600 requests per minute if you provide a use-case statement. I requested one for archival research and got approved within 48 hours. The photo retrieval endpoint supports parallel downloads, but each connection requires a separate authentication header. Opening 16 concurrent connections without proper rate limiting will get your token suspended for 24 hours. Start with four connections and scale up gradually.

When the Archive Fails You

The system does not track in-custody deaths, mental health holds, or juvenile bookings from facilities that opted out. If your research requires complete demographic data across all custody types, you will need to cross-reference with county jail intake logs that are not part of the central archive. Some third-party aggregators claim to have access to the full dataset, but they are using outdated exports from 2023. The archive has changed its charge classification twice since then, and any system relying on old codes will produce incorrect results. For research that needs complete historical records, consider requesting access to the archival snapshot database instead. It includes all records prior to 2024 in their original format, but it is updated annually and requires a separate application process.

The export files are compressed tarballs at approximately 40 GB for a full year of data. Download them to a local SSD and parse them offline. Network transfers alone will take 6-8 hours on a standard broadband connection.

Hottest mugshots of 2024 | Fox News
Hottest mugshots of 2024 | Fox News

Privacy and Compliance

The archive is governed by state privacy statutes that restrict redistribution of booking photographs without consent. If you are publishing data, you must blur faces and redact identifying information unless you have a court order or journalistic purpose documented in writing. Automated scraping tools will violate the terms of service and get your IP blocked. The archive tracks request patterns and flags bulk downloads that exceed normal research usage. I learned this after my connection was throttled to 10 requests per minute without warning. For academic research, request an institutional account. Universities can get elevated access with broader data retention permissions, but they must file an IRB-approved protocol first. The approval timeline is typically 30 days.

The archive also maintains an audit log of all queries, which researchers can access for compliance reporting. Keep your request parameters documented and save the response headers. If auditors ask what data you pulled, having a timestamped query log prevents misunderstandings.

Alternatives If You Cannot Get Access

If the API approval process stalls, the county clerk's office maintains a local copy of booking records that can be requested under public records laws. The data is incomplete compared to the central archive, but it includes photo files in their original format without signature expiration. Some legal research platforms license the archive data directly and provide an abstraction layer that handles authentication automatically. The subscription cost is high, but it saves time if you are building a production system that needs reliable access. For one-off lookups, the public kiosk terminals at most sheriff's offices allow free searches by name or case number. The photo resolution is lower than the API, but it is sufficient for visual confirmation when you cannot wait for the digital queue to process.

Horry County Mugshots January 9th, 2024 - WFXB
Horry County Mugshots January 9th, 2024 - WFXB

The archive itself provides a sample dataset for testing purposes. It contains 500 anonymized records with realistic data formats, which is useful for developing parsers before you have production access. Download it from the developer portal and review the schema carefully. The archive team hosts monthly webinars for developers working with the system. They cover new features, known issues, and upcoming changes to the data model. Attendance is open to anyone with an API key, and the recordings remain available for 90 days after each session.