FBI Crime Data Scraper — Crime Statistics & NIBRS
Pricing
from $1.60 / 1,000 fbi crime observations
FBI Crime Data Scraper — Crime Statistics & NIBRS
Export FBI crime data from the Crime Data Explorer: yearly crime statistics by state, nation or agency, plus NIBRS offense counts. USD 2 per 1,000 rows.
Pricing
from $1.60 / 1,000 fbi crime observations
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
FBI Crime Data Scraper exports FBI crime data from the official FBI Crime Data Explorer as clean yearly rows: offense counts, clearances, rate per 100,000 people and population, for the nation, a state or one police agency. It is built for researchers, journalists, analysts and AI agents, and costs USD 2.00 per 1,000 records on the Apify Free plan.
Each row is one year × one offense × one place, so you get tables you can chart or join straight away. Summary crime statistics cover national, state and agency level; NIBRS offense counts cover state level.
How do I get FBI crime statistics by state?
Set locationLevel to state, enter a two-letter stateCode, list offenses such as violent-crime and property-crime, and choose a year range. The Actor calls the FBI's Crime Data Explorer once per offense, adds the monthly figures into yearly totals, and stores one row per year.
For example, California with two offenses and the years 2020–2024 returns 10 rows. The default run did exactly that on 2026-10-26 in about 4 seconds.
- National:
locationLevel: "national"returns U.S. totals. - State:
locationLevel: "state"withstateCodesuch asCA,TXorNY. - Agency:
locationLevel: "agency"with the agency's FBI ORI, such asCA0194200. Use the ORI, not a city name.
Summary offense slugs: violent-crime, property-crime, homicide, rape, robbery, aggravated-assault, burglary, larceny, motor-vehicle-theft and arson. Up to 10 offenses per run.
What data does the FBI crime data scraper return?
| Field | What it means |
|---|---|
recordType | summary or nibrs-offense-count |
dataYear | Calendar year of the observation |
locationLevel | national, state or agency |
stateCode, ori | State abbreviation or FBI agency ORI when relevant |
offense | Offense slug or NIBRS code you queried |
count, actual | Offenses reported for the year (sum of the monthly figures) |
cleared | Offenses cleared for the year, when supplied |
rate | Offenses per 100,000 people, calculated from actual and population |
population | Population covered (latest month of the year) |
sourceUrl | The FBI API request, with the key redacted |
retrievedAt | When the row was fetched |
raw | Compact source row, including source_months |
warnings | Row-level interpretation notes |
The run summary in the OUTPUT record lists requests attempted, succeeded and failed, rows collected, events charged and warnings.
How do I query NIBRS offense counts?
Set dataMode to nibrs, keep locationLevel at state, and enter NIBRS offense codes such as 120 (robbery), 220 (burglary/breaking and entering), 240 (motor vehicle theft) or lettered codes such as 13A (aggravated assault); case does not matter. A direct check of the FBI endpoint on 2026-10-26 returned 21,206 robberies (120) and 89,050 burglaries (220) for Texas in 2023.
In a 2026-10-27 run, 13A returned 87,223 aggravated assaults for Texas in 2023. Values that are not NIBRS codes, such as robbery, are skipped in NIBRS mode with a warning in OUTPUT and no charge. When the FBI answers a query with only zero or empty series (its reply to an unknown code or slug), the Actor stores and charges nothing for that offense.
NIBRS results are aggregated offense counts, not raw incident records.
When should I use it, and when should I use something else?
Use it for repeatable FBI crime statistics tables: state trends, year-over-year comparisons, agency-level counts, and datasets for dashboards, reports or AI agents.
Use something else when:
- You need individual Los Angeles crime incidents with dates, areas and coordinates: LAPD Crime Data Scraper.
- You need case-level NIBRS incident files: download the annual NIBRS files from the FBI Crime Data Explorer.
- You need live emergency information, criminal-history checks, personal data, demographic breakdowns or city lookups by name. The Actor returns none of these.
Input example
{"dataMode": "summary","locationLevel": "state","stateCode": "CA","offenses": ["violent-crime", "property-crime", "homicide"],"fromYear": 2020,"toYear": 2024,"maxResults": 100}
NIBRS offense counts for Texas:
{"dataMode": "nibrs","locationLevel": "state","stateCode": "TX","offenses": ["120", "220"],"fromYear": 2022,"toYear": 2024}
maxResults caps stored rows and charges (1–1,000, default 100). fromYear must be 1960 or later and toYear no later than the current year. apiKey is optional; for repeated or larger runs, enter your own free api.data.gov key so shared rate limits do not stop the run.
Use it from an AI assistant
The Actor works as a tool in Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/fbi-crime-data-scraper to your client and ask, for example: "Get FBI violent crime and property crime statistics for Texas from 2019 to 2024 and show the rate per 100,000 by year."
API examples
JavaScript with apify-client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/fbi-crime-data-scraper').call({dataMode: 'summary',locationLevel: 'state',stateCode: 'TX',offenses: ['violent-crime', 'property-crime'],fromYear: 2019,toYear: 2024,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.table(items.map(({ offense, dataYear, count, rate }) => ({ offense, dataYear, count, rate })));
Python with apify-client 3.x:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("muhammadafzal/fbi-crime-data-scraper").call(run_input={"dataMode": "summary","locationLevel": "national","offenses": ["homicide", "robbery"],"fromYear": 2015,"toYear": 2024,})for row in client.dataset(run.default_dataset_id).iterate_items():print(row["offense"], row["dataYear"], row["count"], row["rate"])
Output example
Two rows from the default run on 2026-10-26 (California; raw shortened):
[{"recordType": "summary","dataYear": 2023,"locationLevel": "state","stateCode": "CA","ori": null,"offense": "violent-crime","count": 201391,"actual": 201391,"cleared": 79842,"rate": 516.85,"population": 38965193,"sourceUrl": "https://cde.ucr.cjis.gov/LATEST/summarized/state/CA/violent-crime?from=01-2020&to=12-2024&API_KEY=REDACTED","retrievedAt": "2026-10-26T07:48:03.802Z","raw": { "data_year": 2023, "state_code": "CA", "actual": 201391, "cleared": 79842, "population": 38965193, "source_months": ["01-2023", "...", "12-2023"] },"warnings": []},{"recordType": "summary","dataYear": 2024,"locationLevel": "state","stateCode": "CA","ori": null,"offense": "property-crime","count": 783508,"actual": 783508,"cleared": 80795,"rate": 1987.02,"population": 39431263,"sourceUrl": "https://cde.ucr.cjis.gov/LATEST/summarized/state/CA/property-crime?from=01-2020&to=12-2024&API_KEY=REDACTED","retrievedAt": "2026-10-26T07:48:04.713Z","raw": { "data_year": 2024, "state_code": "CA", "actual": 783508, "cleared": 80795, "population": 39431263, "source_months": ["01-2024", "...", "12-2024"] },"warnings": []}]
Rates are shown rounded here; the dataset keeps full precision.
Pricing: how much do FBI crime records cost?
Pay per event at the active Store prices (USD). No price change is scheduled.
| Event | FREE | BRONZE | SILVER | GOLD, PLATINUM, DIAMOND |
|---|---|---|---|---|
| FBI crime observation (primary, per stored row) | $0.002001 | $0.00195 | $0.0019 | $0.0016 |
| Actor start, per started GB of allocated memory | $0.006251 | $0.006094 | $0.005938 | $0.005 |
The default run uses 256 MB, so it pays one start event. Rows are charged only after they are stored.
- Free plan, default run (10 rows): $0.006251 + 10 × $0.002001 = $0.026261.
- BRONZE, 1,000 rows: $0.006094 + 1,000 × $0.00195 = $1.956094.
Coverage and reliability notes
- The FBI Crime Data Explorer reflects what participating agencies submitted. Counts can change between FBI refreshes, and coverage varies by year and place.
- 2021 is a known gap year for some states during the FBI's move to NIBRS. In the default run, California's 2021 violent-crime count was 36,439 against 173,908 in 2020 and 193,824 in 2022; check coverage before comparing years.
- An offense missing from the results means the FBI published no counts for that query, not zero crime;
OUTPUTwarnings name it. Such offenses are not charged. - Failed offense requests are retried twice and listed in
OUTPUTwarnings. If every request fails, the run fails instead of storing empty rows.
FAQ
Where does the data come from? From the FBI's official Crime Data Explorer API at cde.ucr.cjis.gov, the same source as the public CDE website.
Do I need an FBI API key?
No for small runs. For repeated or larger runs, add your own free api.data.gov key in apiKey.
Does it return individual crimes, names or addresses? No. It returns aggregated yearly counts only, with no personal data.
Can I get crime data for a city?
Use agency level with the police agency's ORI, for example CA0194200. City names are not accepted.
Why are some 2021 numbers so low? Many agencies did not report for 2021 during the NIBRS transition, so yearly totals for some states are partial.
How current is the data? As current as the FBI Crime Data Explorer. On 2026-10-26 the FBI API reported its last refresh as 2026-10-15.
Can I export to CSV or Excel? Yes. Apify datasets download as CSV, Excel, JSON or XML, or feed Google Sheets and webhooks.
Related Actors
- LAPD Crime Data Scraper: Los Angeles crime incidents with NIBRS offenses, areas and coordinates.
Legal and responsible use
FBI crime statistics are public government data. Present them with the FBI's coverage caveats, do not treat reported counts as total victimization, and do not use them to profile individuals. The Actor is not affiliated with or endorsed by the FBI.
Last verified: 2026-10-27