US firearm background-check demand intelligence (monthly)
Monthly US firearm background-check demand intelligence from the FBI National Instant Criminal Background Check System (NICS), retrieved via a machine-readable parse of the FBI's official month/year-by-state PDF (verified: annual totals reproduced from the CSV match the FBI publication exactly for 2020 and 2021). Covers 55 jurisdictions (50 states, DC, Guam, Mariana Islands, Puerto Rico, Virgin Islands) with transfer-intent purchase checks (handgun + long gun + other + multiple), permit checks, and administrative/other checks separated. Includes YoY momentum, 3- and 12-month moving averages, a documented 0-100 monthly demand score with per-month state ranks, surge / easing / 12-month-record-high flags, and month-level national context. Trailing 10-year panel. Caveats: NICS counts checks initiated, not firearms sold (FBI disclaimer) — permit regimes substitute for point-of-sale checks in many states; the latest month is subject to FBI revision. FBI material is U.S. federal public domain (commercial reuse allowed); source: Federal Bureau of Investigation.
- Rows
- 6,600
- Columns
- 22
- Source cadence
- Monthly
- Last refreshed
- Sep 30, 2026
- Theme
- retail
| Column | Type | Description |
|---|---|---|
| month | string | Reference month, YYYY-MM. The panel covers the trailing 120 months of the FBI NICS publication. (unit: ISO year-month) |
| country_code | string | ISO alpha-3 country code (USA for every row). (unit: ISO 3166-1 alpha-3) |
| state_code | string | Stable geography code: USPS postal abbreviation, lowercase (tx, ca, ny, ...; dc, gu, mp, pr, vi). Primary join key with month. |
| state_name | string | State/territory name as published by the FBI (e.g. Texas, District of Columbia, Puerto Rico). |
| checks_total | integer | Total NICS background checks initiated in the state/month (all transaction types). (unit: checks) |
| purchase_checks | integer | Transfer-intent purchase proxy: handgun + long gun + other + multiple checks (FBI transaction-type definitions). (unit: checks) |
| permit_checks | integer | Permit + permit-recheck checks. Kept separate because permit regimes substitute for point-of-sale checks in many states (FBI note). (unit: checks) |
| admin_other_checks | integer | Administrative + pawn/redemption/return/rental/private-sale transaction checks. (unit: checks) |
| purchase_share_pct | float | Share of total checks that are transfer-intent purchase checks. (unit: percent) |
| checks_yoy_pct | float | Year-over-year percent change of total checks vs the same month 12 months earlier. (unit: percent) |
| purchase_yoy_pct | float | Year-over-year percent change of purchase checks vs the same month 12 months earlier. (unit: percent) |
| checks_3m_ma | float | Trailing 3-month moving average of total checks (minimum 3 observations). (unit: checks) |
| purchase_3m_ma | float | Trailing 3-month moving average of purchase checks (minimum 3 observations). (unit: checks) |
| checks_12m_ma | float | Trailing 12-month moving average of total checks (minimum 12 observations). (unit: checks) |
| demand_score | float | Documented 0-100 composite: 100 * (0.70 * min-max(winsorized purchase_yoy_pct, -40/+60) + 0.30 * min-max(winsorized checks_yoy_pct, -40/+60)), min-maxed within each month across the 55 geos. Higher = stronger demand momentum versus peers that month. (unit: 0-100 score) |
| demand_rank | integer | Per-month rank of demand_score across the 55 geos (1 = strongest demand). (unit: rank) |
| demand_surge_flag | integer | 1 when purchase_yoy_pct >= +25%. (unit: binary) |
| demand_easing_flag | integer | 1 when purchase_yoy_pct <= -25%. (unit: binary) |
| record_high_12m_flag | integer | 1 when checks_total equals the trailing-12-month maximum (minimum 12 observations). (unit: binary) |
| us_checks_total | integer | Month-level context: 55-geo sum of total checks. (unit: checks) |
| state_share_of_us_pct | float | Month-level context: the state's share of us_checks_total. (unit: percent) |
| row_hash | string | Deterministic 16-hex row hash of state_code + month (idempotency). |
First 10 sample rows — a preview, not the complete dataset.
| month | country_code | state_code | state_name | checks_total | purchase_checks | permit_checks | admin_other_checks | purchase_share_pct | checks_yoy_pct | purchase_yoy_pct | checks_3m_ma | purchase_3m_ma | checks_12m_ma | demand_score | demand_rank | demand_surge_flag | demand_easing_flag | record_high_12m_flag | us_checks_total | state_share_of_us_pct | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2016-09 | USA | ak | Alaska | 6,867 | 6,141 | 306 | 420 | 89.428 | 10.847 | 9.27 | 6,951.333 | 6,284.333 | 7,421.25 | 49.744 | 28 | 0 | 0 | 0 | 1,983,596 | 0.346 | f12818ba5ae6e33d |
| 2016-09 | USA | al | Alabama | 41,336 | 16,265 | 22,014 | 3,057 | 39.348 | -26.485 | -47.463 | 44,239.333 | 17,193 | 59,534.333 | 4.054 | 55 | 0 | 1 | 0 | 1,983,596 | 2.084 | 88af71735ab08c7f |
| 2016-09 | USA | ar | Arkansas | 18,826 | 11,641 | 3,996 | 3,189 | 61.835 | -13.777 | -6.498 | 19,965.333 | 12,007.667 | 22,651.75 | 31.318 | 51 | 0 | 0 | 0 | 1,983,596 | 0.949 | 9a54982b3a744d4b |
| 2016-09 | USA | az | Arizona | 33,390 | 22,445 | 8,727 | 2,218 | 67.221 | 31.126 | 17.488 | 33,769.333 | 23,025.667 | 33,240.25 | 61.58 | 12 | 0 | 0 | 0 | 1,983,596 | 1.683 | a1aa1770ccfd410d |
| 2016-09 | USA | ca | California | 159,077 | 95,776 | 62,196 | 1,105 | 60.207 | 26.814 | 60.169 | 175,355 | 102,370 | 189,189.333 | 90.044 | 2 | 1 | 0 | 0 | 1,983,596 | 8.02 | 35549672e32537b7 |
| 2016-09 | USA | co | Colorado | 40,013 | 34,190 | 5,593 | 230 | 85.447 | 16.898 | 14.31 | 41,367.667 | 35,047.333 | 44,161.167 | 55.086 | 20 | 0 | 0 | 0 | 1,983,596 | 2.017 | 7d75b40c56d85443 |
| 2016-09 | USA | ct | Connecticut | 14,955 | 8,000 | 6,953 | 2 | 53.494 | -31.32 | -33.676 | 24,021 | 12,565 | 29,468.75 | 7.031 | 54 | 0 | 1 | 0 | 1,983,596 | 0.754 | 624715dcce681837 |
| 2016-09 | USA | dc | District of Columbia | 52 | 52 | 0 | 0 | 100 | 26.829 | 26.829 | 58 | 57.333 | 76.833 | 66.829 | 7 | 1 | 0 | 0 | 1,983,596 | 0.003 | f5ca145f7b9a06e3 |
| 2016-09 | USA | de | Delaware | 4,160 | 3,813 | 291 | 56 | 91.659 | 23.81 | 26.678 | 4,274.333 | 3,618.333 | 4,857.333 | 65.817 | 9 | 1 | 0 | 0 | 1,983,596 | 0.21 | dd3ea75f8d6f3584 |
| 2016-09 | USA | fl | Florida | 102,843 | 73,537 | 24,431 | 4,875 | 71.504 | 20.643 | 12.877 | 114,165.667 | 81,647.333 | 117,587.25 | 55.207 | 18 | 0 | 0 | 0 | 1,983,596 | 5.185 | adf1599cbc18364a |
- Current
20260930T223022Z-8cd79e42af4d · sha256 8cd79e42af4d…
6,600 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/us_nics_demand_intel/us_firearm_check_demand_monthly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/us_nics_demand_intel/us_firearm_check_demand_monthly").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/us_nics_demand_intel/us_firearm_check_demand_monthly
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260930T223022Z-8cd79e42af4d and its content hash, so readers get exactly the data you used.
Federal Bureau of Investigation, National Instant Criminal Background Check System. (2026). US firearm background-check demand intelligence (monthly) [Data set, snapshot 20260930T223022Z-8cd79e42af4d, sha256 8cd79e42af4d]. Datazimuts. Retrieved 2026-10-01, from https://datazimuts.com/en/datasets/us_nics_demand_intel/us_firearm_check_demand_monthly?snapshot=20260930T223022Z-8cd79e42af4d
@misc{dz_us_nics_demand_intel_us_firearm_check_de_8cd79e42,
title = {{US firearm background-check demand intelligence (monthly)}},
author = {{Federal Bureau of Investigation, National Instant Criminal Background Check System}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/us_nics_demand_intel/us_firearm_check_demand_monthly?snapshot=20260930T223022Z-8cd79e42af4d}},
note = {Snapshot 20260930T223022Z-8cd79e42af4d, sha256 8cd79e42af4d766d5debad817e5c99617b694e10f77ea8d8777297b3b7f5f4f3; accessed 2026-10-01}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=us_nics_demand_intel%2Fus_firearm_check_demand_monthly&lang=en&theme=auto&snapshot=20260930T223022Z-8cd79e42af4d&x=month&y=checks_total&agg=avg" title="US firearm background-check demand intelligence (monthly)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.