Technical writing

FBI NIBRS: The National Crime Database Behind Incident-Level Crime Statistics

· 22 min read· AI Analytics
FBINIBRSCrime DataLaw EnforcementFederal Data

The FBI's National Incident-Based Reporting System is the most granular federal crime database in existence—incident-level records from more than 15,000 law enforcement agencies across the United States, capturing offense type, victim demographics, offender characteristics, weapons used, property lost, and arrest outcomes for every reported criminal incident. It replaced the century-old UCR Summary Reporting System in 2021 and, despite persistent participation gaps, has become the foundation of serious American crime research.

The UCR program and the transition to NIBRS

The FBI's Uniform Crime Reporting program was established in 1929 under a compact between the FBI and the International Association of Chiefs of Police. For most of the twentieth century, the program operated through the Summary Reporting System: agencies submitted monthly aggregate counts of Part I offenses —murder, rape, robbery, aggravated assault, burglary, larceny-theft, motor vehicle theft, and arson—with no detail about individual incidents, victims, or offenders. These eight Index Crimes were the backbone of every national crime trend analysis from 1929 through 2020.

The Summary system had fundamental architectural limits. The hierarchy rule required that only the most serious offense in a multi-offense incident be counted; a home invasion involving burglary, assault, and rape contributed one entry to the rape tally and zero to anything else. Victim and offender demographics were absent entirely. The definition of rape excluded male victims until 2013. Monthly aggregate totals could not support geographic hot-spot analysis, victim–offender relationship studies, or any form of incident-level research.

The National Incident-Based Reporting System was developed beginning in the late 1980s and formally launched in 1989 as a fundamentally different architecture: one structured record per reported criminal incident, with linked segments for every offense in the incident, every victim, every known offender, every arrestee, and every piece of property involved. NIBRS eliminated the hierarchy rule—all offenses in a multi-offense incident are recorded—and added demographic fields, relationship codes, weapon codes, and property valuations that the SRS never captured.

Adoption was slow. In 2016, when the FBI announced that the SRS would be retired by January 2021, agencies participating in NIBRS covered roughly 45 percent of the U.S. population. Large cities had complex legacy records management systems that required years and significant funding to retool for NIBRS submission. The deadline arrived and numerous major agencies had not completed their transitions. The consequence was the most incomplete national crime statistics report in the program's ninety-year history: the 2021 Crime in the United States publication was missing data from agencies covering tens of millions of Americans, most consequentially the New York City Police Department, which serves more than eight million people and had not submitted NIBRS data for calendar year 2021.

By 2022, coverage improved substantially. The FBI received 2022 NIBRS data from 15,724 agencies covering approximately 79 percent of the U.S. population, and it now applies statistical imputation models to estimate national totals that account for non-participating agencies. NYPD began NIBRS submission in 2023. California, whose state reporting infrastructure was built around an SRS-incompatible system, migrated individual agencies through 2022 and 2023, though the state's largest departments lagged. The participation gap remains consequential for any national-level analysis, and understanding which agencies are and are not included in a given year's data is prerequisite work before interpreting NIBRS-derived national statistics.

Group A and Group B offense categories

NIBRS organizes offenses into two tiers with fundamentally different reporting requirements. Group A comprises 52 serious crime categories for which agencies submit full incident-level records: offense segment, victim segment, offender segment, arrestee segment (if applicable), and property segment (if applicable). Group B comprises 11 less-serious offense categories—including curfew violations, disorderly conduct, drunkenness, and vagrancy—for which agencies submit only arrestee records, not full incident records.

The Group A offense list covers all violent crimes and property crimes from the legacy Index, plus drug violations, fraud, embezzlement, bribery, extortion, gambling, pornography/obscene material, prostitution, weapons violations, human trafficking, and a range of other offenses. Each Group A offense has a three-character alphanumeric code. Key codes include:

  • 09A — Murder and nonnegligent manslaughter
  • 09B — Negligent manslaughter
  • 09C — Justifiable homicide (informational, not a crime)
  • 11A — Rape (revised definition)
  • 11B — Sodomy
  • 11C — Sexual assault with an object
  • 11D — Fondling
  • 13A — Aggravated assault
  • 13B — Simple assault
  • 13C — Intimidation
  • 23A–23H — Larceny-theft subcategories (pocket-picking through all other larceny)
  • 35A — Drug/narcotic violations
  • 35B — Drug equipment violations
  • 64A — Human trafficking, commercial sex acts
  • 64B — Human trafficking, involuntary servitude

The Group A taxonomy's granularity is one of NIBRS's principal analytical advantages over the SRS. Where the SRS counted all larceny-theft as a single category, NIBRS distinguishes pocket-picking, purse-snatching, shoplifting, theft from motor vehicles, theft of motor vehicle parts, theft from buildings, theft from coin-operated machines, and all other larceny. Where the SRS counted rape under a definition unchanged from 1929, NIBRS captures four distinct sexual assault categories under the revised definition, including assaults against male victims. Where the SRS had no drug offense incident data at all (only arrest counts), NIBRS records the drug type, offense type (possession vs. distribution vs. manufacturing), and location for every drug incident.

NIBRS segment structure

Each NIBRS submission is organized around a master incident record with linked child segments. The segments are tied together by the incident number and the agency's ORI (Originating Agency Identifier), the nine-character code that uniquely identifies each law enforcement agency in the FBI system.

Incident Segment (also called the Administrative Segment): one record per incident. Fields include incident date, incident hour, location type (one of 46 standardized location categories including residence/home, highway/road/alley, convenience store, park/playground, government/ public building, school, and so on), premises entered (for burglary, the number of premises entered), and exceptional clearance status and date if applicable. The ORI and incident number together form the primary key used to join all other segments.

Offense Segment: one record per offense per incident. Fields include the NIBRS Group A offense code, completed or attempted flag, location type, bias motivation code (the hate crime indicator—NIBRS uses 88 bias motivation codes covering race/ethnicity/ancestry, religion, sexual orientation, disability, gender, and gender identity), weapon or force type (up to three weapons per offense), method of entry (for burglary: force used or no force used), number of premises entered, and automatic weapon indicator. An incident can contain up to 10 offense segments.

Victim Segment: one record per victim per incident. Victim type codes distinguish individual persons from businesses, government entities, financial institutions, religious organizations, society/ the public, law enforcement officers, and unknown victims. For individual victims, fields include age, sex, race, ethnicity, resident status (resident or nonresident), and up to five injury type codes. The victim segment also includes offense connection codes linking each victim to each offense in the incident, and victim–offender relationship codes (approximately 25 categories including spouse, common-law spouse, parent, sibling, child, grandparent, grandchild, in-law, stepparent, stepchild, stepsibling, other family, acquaintance, friend, neighbor, employer, employee, schoolmate, otherwise known, stranger, and relationship unknown). An incident can contain up to 999 victim segments.

Offender Segment: one record per known offender per incident. Fields include age (or “unknown”), sex, and race. If the offender is not identified, a single unknown-offender record is entered. NIBRS tracks up to 99 offenders per incident. Unknown offender records are common in property crimes; for homicide, unknown offender records reflect unsolved cases and have significant implications for any analysis of offender demographics.

Arrestee Segment: one record per person arrested in connection with the incident, if an arrest was made. Fields include arrest date, arrest type (on-view arrest, taken into custody, summoned or cited), armed-with indicator, the NIBRS offense code charged, age, sex, race, ethnicity, resident status, and juvenile disposition (for arrestees under 18). An incident with no arrest has no arrestee segment; an incident with multiple arrests has multiple arrestee segments.

Property Segment: one record per property type involved per incident, for incidents involving property. Fields include property description code (one of 81 standardized types: motor vehicles, currency, jewelry, clothing, firearms, consumable goods, drugs/narcotics, household goods, livestock, negotiable instruments, and so on), property loss type (stolen, recovered, counterfeited, bribed, destroyed/damaged/vandalized, seized, or none), estimated dollar value, date recovered (for recovered property), and for drug seizures, the drug type and quantity. An incident can have multiple property segments representing different property types.

Participation gaps and coverage limitations

NIBRS participation maps on the Crime Data Explorer show agency-by-agency coverage, and the pattern reveals consistent structural gaps that analysts must account for. The 2022 data—the most complete NIBRS dataset to date—excluded or incompletely included several state systems and individual agencies that represent substantial population shares.

New York City is the most consequential single-agency gap in recent history. The NYPD, serving more than 8 million people in the nation's largest city, did not submit NIBRS data for 2021 or 2022. It began NIBRS submission in 2023, but the absence from two consecutive years leaves a gap in national longitudinal analysis at exactly the time when crime trends were most closely watched following the 2020–2021 murder surge. Any state-level New York analysis using 2021 or 2022 NIBRS data is effectively measuring crime in New York State minus New York City.

California's transition has been fragmented. The California Department of Justice operates a state-level UCR program through which individual agencies report, and its infrastructure required a ground-up rebuild for NIBRS. Individual California agencies began NIBRS submission at different times through 2022 and 2023. Because California represents approximately 12 percent of the U.S. population and has property crime patterns that diverge from national medians, its partial inclusion affects national NIBRS-derived property crime estimates materially.

The Transactional Records Access Clearinghouse (TRAC) at Syracuse University maintains independent analysis of NIBRS coverage gaps and publishes agency-level participation data that supplements the FBI's own participation tables. For researchers who need to know which agencies reported in a given year, the FBI publishes the NIBRS Agency Participation file as part of the annual bulk data download. That file lists every agency by ORI, state, population covered, and months of data submitted during the year—an agency that submitted only six months should be weighted accordingly in trend analyses, not treated as a full-year reporter.

The Bureau of Justice Statistics' National Crime Victimization Survey provides an important complement to NIBRS precisely because it captures crimes never reported to police. The NCVS surveys approximately 240,000 persons annually about victimization they experienced in the prior six months regardless of police contact. NCVS and NIBRS consistently diverge: NCVS estimates that fewer than 43 percent of violent crime victimizations are reported to police at all, with rape and sexual assault reported at rates closer to 25 percent. Property crime reporting rates are higher but still well below the actual victimization rate estimated by NCVS. Using both sources together is the only way to construct an accurate picture of the full volume of criminal victimization.

The Crime Data Explorer and its API

The FBI's Crime Data Explorer (CDE) at cde.ucr.cjis.gov is the primary public interface for NIBRS data. It provides a web application for browsing agency-level, state-level, and national-level statistics by offense category, and it exposes a REST API for programmatic access. API keys are available through free registration; the rate limit is approximately 1,000 requests per day per key.

The CDE API base is at cde.ucr.cjis.gov/LATEST/webapp/publicapi. Key endpoint patterns:

  • /api/nibrs/{offense}/offense/states/count— incident-level offense counts aggregated by state, with since and until year parameters
  • /api/nibrs/{offense}/victim/count— victim demographic counts by offense type, nationally or filtered by state or agency ORI
  • /api/nibrs/{offense}/offender/count— offender demographic counts (with the important caveat that unknown offender records skew these heavily for property crimes)
  • /api/nibrs/{offense}/offense/weapon/count— weapon type breakdown for a given offense
  • /api/agencies— full agency list with ORI, name, state, county FIPS, and population served

Offense type strings used in the API URL path include: homicide, rape-legacy, rape-revised, robbery, aggravated-assault, burglary, larceny, motor-vehicle-theft, arson, and human-trafficking. The API returns JSON with a data array whose structure varies by endpoint. The CDE web application at the same domain provides a documentation interface showing available parameters and example responses.

For incident-level granularity, the API is insufficient—it returns pre-aggregated counts, not raw incident records. Full incident-level analysis requires the NIBRS bulk downloads, which the CDE provides via the downloads section as annual archives containing all six segment files. The 2022 NIBRS national bulk extract is several gigabytes compressed and tens of gigabytes uncompressed. Working with it in Python requires either a machine with substantial RAM or chunked processing using pandas chunk iteration or conversion to a columnar format such as Parquet after initial ingestion.

ICPSR (Inter-university Consortium for Political and Social Research) at the University of Michigan archives cleaned NIBRS data going back to 1991 under study numbers 38565 (recent years) and earlier studies for historical files. The ICPSR versions provide NIBRS segments in SAS, SPSS, Stata, and R formats with pre-applied variable labels, substantially lowering the barrier compared to raw FBI flat files. ICPSR access requires free institutional or individual registration. The National Archive of Criminal Justice Data (NACJD) maintained by BJS hosts additional NIBRS-adjacent datasets with documentation oriented toward academic researchers.

Supplemental Hate Crime Statistics

The FBI publishes annual Hate Crime Statistics reports drawing on NIBRS hate crime data collected under the Hate Crime Statistics Act of 1990. The act mandated that the FBI collect data on offenses motivated by bias against the victim's race, ethnicity, ancestry, religion, sexual orientation, disability, gender, or gender identity. The NIBRS offense segment's bias motivation field carries 88 codes covering these categories.

The 2022 Hate Crime Statistics report documented 11,643 hate crime incidents. Race/ethnicity/ancestry was the most common bias motivation category, accounting for 64.5 percent of incidents, with anti-Black bias the single most frequent motivation. Among religion-motivated hate crimes, anti-Jewish bias represented approximately 55 percent of incidents. Anti-gay male bias was the most common sexual-orientation-motivated category. Anti-transgender hate crimes have shown significant increases in recent years.

The 2020 period produced a dramatic documented increase in anti-Asian hate crimes, rising from approximately 150 incidents annually to more than 700, associated with COVID-19 stigma and political rhetoric. Stop AAPI Hate and the Anti-Defamation League maintain supplemental tracking that extends beyond the FBI's law enforcement reporting pipeline, capturing incidents not reported to police or not classified as hate crimes by receiving agencies.

Hate crime data carries the most severe underreporting problem of any NIBRS category. A substantial fraction of agencies submit zero hate crimes in a given year, which the FBI's published tables cannot distinguish from genuine absence of incidents versus non-reporting. Alabama reported zero hate crimes in multiple consecutive years. The BJS has estimated that fewer than half of hate crime victimizations reach police, and of those reported, only a fraction are classified by the receiving agency as hate crimes. The published NIBRS hate crime counts should be understood as a floor—the minimum number of hate crimes that came to police attention and were documented as such—not an estimate of actual hate crime prevalence.

Supplemental Homicide Reports

The Supplemental Homicide Reports (SHR) predate NIBRS by more than a decade. Law enforcement agencies have submitted monthly murder and nonnegligent manslaughter records at the victim–offender–circumstance level since 1976, creating a longitudinal homicide dataset that begins decades before NIBRS coverage reached meaningful national scale. SHR data is archived at ICPSR and widely used in homicide research.

Each SHR record includes victim age, sex, and race; offender age, sex, and race (when known); the victim–offender relationship (intimate partner, family member, acquaintance, stranger, or unknown); weapon type; and circumstance (argument, drug-related killing, gangland killing, brawl, robbery, other felony, or unknown). This makes SHR the primary federal source for intimate partner homicide analysis: estimates of approximately 1,500 to 2,000 intimate partner homicides annually, with female victims comprising the large majority, derive from SHR relationship code analysis. Everytown for Gun Safety, the Violence Policy Center, and the Bureau of Justice Statistics use SHR extensively for gender and relationship-based homicide analysis.

The SHR has a significant “unknown offender” problem that is unique among federal crime datasets: 40 to 50 percent of SHR homicide records have unknown offender characteristics, because unsolved homicides produce an offender record with all demographic fields coded as unknown. This means that offender-side demographic analyses of homicide are based on the solved fraction of cases—a non-random subset, since case solvability correlates with victim–offender relationship, victim demographics, and geographic factors. Analyses of offender race in homicide data must account for this selection bias explicitly.

NIBRS, as it gains coverage and historical depth, is beginning to supersede SHR for homicide research because it provides the same victim–offender relationship and circumstance detail within the broader NIBRS incident record architecture, adding weapon-type specificity from the offense segment and arrest outcome from the arrestee segment. For jurisdictions that have submitted NIBRS continuously for several years, NIBRS-based homicide analysis is now preferable to SHR because the NIBRS record is richer. But for historical analysis extending before 2000, SHR remains the only incident-level source.

NIBRS versus NCVS: what each measures

The fundamental distinction between NIBRS and the NCVS is the channel through which crime becomes visible. NIBRS records crimes that come to police attention through officer-initiated contact, victim or witness reports, or discovery by the responding agency. NCVS records crimes that victimized survey respondents, regardless of whether police were contacted. Every crime in NIBRS was reported to or discovered by a law enforcement agency; most crimes in NCVS were never reported to police at all.

The implications are offense-specific. For homicide, NIBRS is far more complete than any victimization survey can be—deaths come to official attention through medical examiner systems independent of police reporting, and NIBRS murder counts are close to (though not identical to) CDC mortality data. For rape and sexual assault, NIBRS drastically undercounts: NCVS estimates reporting rates of approximately 25 percent, meaning that only one in four rape or sexual assault victimizations appears in NIBRS. For property crime, NCVS estimates reporting rates of roughly 30 to 50 percent depending on offense type, with motor vehicle theft (often reported for insurance purposes) at the high end and theft of personal property at the low end.

The NCVS redesign implemented in 2022 significantly increased measured rape and sexual assault victimization rates, incorporating improved survey methodology and expanded incident descriptions. The redesign created a discontinuity in the NCVS time series at 2022 that complicates before-and-after comparisons. Both the old and new NCVS methodologies produce estimates substantially higher than NIBRS rape counts, but the gap is now even larger under the new methodology.

The practical implication for data users: NIBRS is the right source for analyzing what law enforcement did in response to reported crime—clearance rates, arrest demographics, offense patterns by jurisdiction and location type. NCVS is the right source for estimating how much crime actually occurred and whether reporting rates are changing. Long-run trend analysis that uses only NIBRS risks confounding changes in reporting behavior with changes in underlying crime rates. The 2020–2021 murder surge is visible in both NIBRS and NCVS, which provides some confidence that it reflected actual increased homicide rather than reporting artifacts. Other trend claims based solely on NIBRS require that caveat.

NIBRS bulk data files

The annual NIBRS bulk extract available from the Crime Data Explorer downloads section contains a consistent set of files for each year. The primary files are:

  • Agency participation file — ORI, agency name, agency type, county FIPS, state, population covered, and months of NIBRS data submitted during the year. Essential for understanding which agencies contributed to any given year's record count and for constructing population-weighted coverage denominators.
  • Incident (administrative) file — one row per incident, with incident number, ORI, incident date, incident hour, cleared-exceptionally flag, MSA code, county FIPS, and the count of offenses, victims, offenders, and arrestees in the incident.
  • Offense file — one row per offense per incident, with the NIBRS offense code, completed/attempted flag, location type, bias motivation codes, weapon codes, method of entry, and premises entered.
  • Victim file — one row per victim per incident, with victim type, age, sex, race, ethnicity, injury codes, offense connection codes, and victim–offender relationship codes.
  • Offender file — one row per offender per incident, with age, sex, and race (often unknown for unsolved cases).
  • Arrestee file — one row per arrestee per incident, with arrest date, arrest type, offense charged, and arrestee demographics.
  • Property file — one row per property type per incident, with property description code, loss type, estimated value, and drug type/quantity for narcotics seizures.
  • Window exception files — supplemental files covering incidents reported outside the standard reporting window, used to backfill prior-year counts. Required for complete longitudinal analysis.

All files are pipe-delimited flat files with field definitions in the NIBRS Technical Specification document published by the FBI alongside the data. Field names and code lists in the bulk files differ from what the CDE API exposes, so the specification document is essential for correctly interpreting column values. Offense code 13A in the offense file means aggravated assault; location type code 20 means residence/home; weapon code 11 means firearm (type not stated). None of these are self-evident from the column name alone.

Python: violent crime rates by state using the CDE API

The script below uses the FBI CDE API to fetch 2022 NIBRS offense counts for robbery, aggravated assault, and homicide by state, joins those counts to 2022 Census population estimates, computes violent crime rates per 100,000 residents, ranks states by violent crime rate, fetches the weapon type breakdown for aggravated assault nationally, and identifies states with no 2022 NIBRS data. The API key is read from the FBI_API_KEYenvironment variable.

import os
import requests
import json

FBI_API_KEY = os.environ.get("FBI_API_KEY", "")
if not FBI_API_KEY:
    raise ValueError("Set FBI_API_KEY environment variable before running")

CDE_BASE = "https://cde.ucr.cjis.gov/LATEST/webapp/publicapi"

# Census 2022 state population estimates (subset, abbreviated for clarity)
# Full table available at: https://api.census.gov/data/2022/pep/population
CENSUS_POP_2022 = {
    "AL": 5074296, "AK": 733583, "AZ": 7359197, "AR": 3045637, "CA": 39029342,
    "CO": 5839926, "CT": 3626205, "DE": 1018396, "FL": 22244823, "GA": 10912876,
    "HI": 1440196, "ID": 1939033, "IL": 12582032, "IN": 6833037, "IA": 3200517,
    "KS": 2937150, "KY": 4512310, "LA": 4590241, "ME": 1385340, "MD": 6164660,
    "MA": 7029917, "MI": 10034113, "MN": 5717184, "MS": 2940057, "MO": 6177957,
    "MT": 1122867, "NE": 1967923, "NV": 3177772, "NH": 1395231, "NJ": 9261699,
    "NM": 2113344, "NY": 19677151, "NC": 10698973, "ND": 779261, "OH": 11756058,
    "OK": 4019800, "OR": 4240137, "PA": 12972008, "RI": 1093734, "SC": 5282634,
    "SD": 909824, "TN": 7051339, "TX": 30029572, "UT": 3380800, "VT": 647464,
    "VA": 8683619, "WA": 7785786, "WV": 1775156, "WI": 5892539, "WY": 581381,
}

# --- Step 1: Fetch violent crime offense counts by state for 2022 ---
# Offense types: robbery, aggravated-assault, homicide
OFFENSES = ["robbery", "aggravated-assault", "homicide"]
state_data = {}

for offense in OFFENSES:
    url = f"{CDE_BASE}/api/nibrs/{offense}/offense/states/count"
    params = {"since": 2022, "until": 2022, "api_key": FBI_API_KEY}
    resp = requests.get(url, params=params, timeout=30)
    if resp.status_code != 200:
        print(f"Warning: {offense} returned HTTP {resp.status_code}")
        continue
    payload = resp.json()
    for entry in payload.get("data", []):
        state_abbr = entry.get("state_abbr", "")
        count = entry.get("count", 0) or 0
        if state_abbr not in state_data:
            state_data[state_abbr] = {}
        state_data[state_abbr][offense] = count

# --- Step 2: Join to Census population, compute rates per 100k ---
rows = []
for state, pop in CENSUS_POP_2022.items():
    if state not in state_data:
        continue
    d = state_data[state]
    robbery = d.get("robbery", 0)
    agg_assault = d.get("aggravated-assault", 0)
    homicide = d.get("homicide", 0)
    total_violent = robbery + agg_assault + homicide
    if pop == 0:
        continue
    rows.append({
        "state": state,
        "population": pop,
        "robbery": robbery,
        "agg_assault": agg_assault,
        "homicide": homicide,
        "violent_total": total_violent,
        "robbery_rate": round(robbery / pop * 100_000, 1),
        "agg_assault_rate": round(agg_assault / pop * 100_000, 1),
        "homicide_rate": round(homicide / pop * 100_000, 2),
        "violent_rate": round(total_violent / pop * 100_000, 1),
    })

# --- Step 3: Rank states by violent crime rate ---
rows.sort(key=lambda r: r["violent_rate"], reverse=True)
print("\n=== Top 15 States by Violent Crime Rate per 100k (NIBRS 2022) ===")
print(f"{'State':<8} {'Pop':>12} {'Violent/100k':>14} {'Homicide/100k':>15}")
print("-" * 55)
for r in rows[:15]:
    print(
        f"{r['state']:<8} {r['population']:>12,} "
        f"{r['violent_rate']:>14.1f} {r['homicide_rate']:>15.2f}"
    )

# --- Step 4: Fetch weapon type breakdown for aggravated assault nationally ---
url_wpn = f"{CDE_BASE}/api/nibrs/aggravated-assault/offense/weapon/count"
params_wpn = {"since": 2022, "until": 2022, "api_key": FBI_API_KEY}
resp_wpn = requests.get(url_wpn, params=params_wpn, timeout=30)

print("\n=== Aggravated Assault by Weapon Type (National, 2022) ===")
if resp_wpn.status_code == 200:
    wpn_data = resp_wpn.json().get("data", [])
    wpn_data.sort(key=lambda x: x.get("count", 0), reverse=True)
    for entry in wpn_data[:12]:
        weapon = entry.get("weapon_name", entry.get("key", "Unknown"))
        count = entry.get("count", 0) or 0
        print(f"  {weapon:<40} {count:>10,}")
else:
    print(f"  Request failed: HTTP {resp_wpn.status_code}")

# --- Step 5: States with insufficient NIBRS data (low participation warning) ---
all_states = set(CENSUS_POP_2022.keys())
reporting_states = set(state_data.keys())
non_reporting = all_states - reporting_states
if non_reporting:
    print("\n=== States with No 2022 NIBRS Data (check CDE participation map) ===")
    for s in sorted(non_reporting):
        pop = CENSUS_POP_2022.get(s, 0)
        print(f"  {s}  population: {pop:,}")

print("\nNote: Non-participating agencies are excluded from NIBRS counts.")
print("FBI applies statistical imputation for national estimates only.")
print("State-level rates reflect only NIBRS-reporting agencies in each state.")

Accessing NIBRS data

The Crime Data Explorer at cde.ucr.cjis.gov is the primary access point for both the web interface and the API. The web interface provides agency-level browse, state-level statistics, offense trend charts, and links to the annual bulk data downloads—all without registration. API access requires a free key obtained through registration on the CDE or through api.data.gov. The bulk NIBRS data files for each year are available from the CDE downloads section without registration; the files are updated annually after the FBI completes its data collection and validation for each reporting year, typically 12 to 18 months after the reference year ends.

ICPSR at the University of Michigan archives NIBRS data going back to 1991 under study numbers in the NACJD collection. The ICPSR versions provide pre-labeled variables, format conversions, and documentation prepared by the FBI and by academic teams that have cleaned and verified the raw files over many years. For researchers approaching NIBRS for the first time, the ICPSR version is generally the better starting point because the documentation overhead is substantially lower. For production pipelines that need the most current year's data immediately after release, the FBI CDE bulk files are the authoritative source.

The FBI also maintains a NIBRS Technical Specification document that defines every field, segment type, code value, and validation rule in the current NIBRS standard. The specification is updated when NIBRS standards change and is published alongside each year's data. Working from the specification is essential for correct interpretation; offense codes, location type codes, weapon codes, relationship codes, and bias motivation codes each have dozens of possible values, and misinterpreting any of them produces incorrect results in downstream analysis. The specification is available without registration from the FBI's CJIS Division website.

SSA disability insurance intersects with crime victimization research: violent crime victimization is a significant driver of disability applications, and SSDI claims data can be used alongside NIBRS geographic counts to study the economic aftermath of violence at the neighborhood level. For Social Security disability and retirement benefit data: SSA OASDI: the Social Security benefit and enrollment database →

For the adjacent article in this federal database series covering NOAA extreme weather records, which shares the same dark-figure and reporting-completeness challenges as NIBRS: 60 years of extreme weather: using NOAA Storm Events data to map tornado paths, flood losses, and climate trends →