Remulous LabsAPIs › UCRLens

Public safety · FBI UCR

UCRLens API

FBI UCR crime statistics for 17,000+ U.S. cities, all 50 states + DC, and 8 years of history (2018–2025). Query by city name — full multi-offense picture and 8-year trends in one call, no ORI-code lookup or aggregation required. Counts, per-100k rates, all 8 Part I offenses, and coverage transparency — parsed directly from the FBI's Return A master file. The actual data, not a simplified 0–100 label. See it in action: US city crime trends 2018–2025.

17,124 cities 50 states + DC 2018–2025 133,283 records

What you can build

The raw counts and rates behind the headlines — for any city, state, or the nation, across eight years. See how this compares to the raw FBI files.

City & state crime lookups

Violent and property rollups plus all 8 Part I offenses, each with count and rate_per_100k, for any city or state and year.

Multi-year trend charts

/v1/crime/trends returns up to 8 years of annual data for a city, oldest-first — built for charting how crime has moved over time.

Real estate & proptech

Score cities by crime type and trend. Embed historical offense rates into neighborhood comparison tools, relocation guides, and location-intelligence platforms.

Insurance & risk modeling

Feed actuarial and risk models with city-level and state-level Part I rates across eight years of trend data — compare regions by risk profile and benchmark exposure across markets.

Endpoints

Base URL https://ucrlens-api.remulouslabs.com — proxied for you by RapidAPI. /v1/openapi.json and /healthz are open (no key).

GET/v1/crime/city

Crime statistics for a U.S. city. Requires city + state; optional year.

GET/v1/crime/state

Crime statistics for a state, aggregated from reporting agencies. coverage_rate reflects population covered.

GET/v1/crime/national

National-level totals. Optional year — omit for all available years.

GET/v1/crime/trends

Multi-year trend for a city, oldest-first (1–8 years, default 8).

GET/v1/meta

City/state counts, year range, total records, and source attribution.

Parameters for /v1/crime/city

ParameterTypeDescription
citystring (required)City name, case-insensitive (e.g. Dayton).
statestring (required)2-letter state code (e.g. OH).
yearintegerSingle data year 20182025. Omit for all years.

Try it

Your X-RapidAPI-Key comes from your RapidAPI subscription. Pick a language:

Request

curl -X GET "https://us-city-crime-statistics-fbi-ucr17.p.rapidapi.com/v1/crime/city?city=Dayton&state=OH&year=2024" \
  -H "X-RapidAPI-Key: YOUR_KEY_HERE" \
  -H "X-RapidAPI-Host: us-city-crime-statistics-fbi-ucr17.p.rapidapi.com"
const url =
  "https://us-city-crime-statistics-fbi-ucr17.p.rapidapi.com/v1/crime/city?city=Dayton&state=OH&year=2024";
const res = await fetch(url, {
  headers: {
    "X-RapidAPI-Key": "YOUR_KEY_HERE",
    "X-RapidAPI-Host": "us-city-crime-statistics-fbi-ucr17.p.rapidapi.com"
  }
});
const data = await res.json();
console.log(data.results);
import requests

url = "https://us-city-crime-statistics-fbi-ucr17.p.rapidapi.com/v1/crime/city"
headers = {
    "X-RapidAPI-Key": "YOUR_KEY_HERE",
    "X-RapidAPI-Host": "us-city-crime-statistics-fbi-ucr17.p.rapidapi.com",
}
params = {"city": "Dayton", "state": "OH", "year": 2024}
data = requests.get(url, headers=headers, params=params).json()
print(data["results"])

Response

{
  "results": [
    {
      "location": "DAYTON",
      "state": "OH",
      "population": 134857,
      "data_year": 2024,
      "data_source": "FBI UCR RETA reta-latest.zip, year 2024",
      "coverage_rate": 1.0,
      "violent_crime":  { "rate_per_100k": 3564.5, "count": 4807 },
      "property_crime": { "rate_per_100k": 4201.7, "count": 5667 },
      "offenses": {
        "murder":              { "rate_per_100k": 14.8,   "count": 20 },
        "rape":                { "rate_per_100k": 88.2,   "count": 119 },
        "robbery":             { "rate_per_100k": 201.0,  "count": 271 },
        "aggravated_assault":  { "rate_per_100k": 3260.5, "count": 4397 },
        "burglary":            { "rate_per_100k": 523.5,  "count": 706 },
        "larceny":             { "rate_per_100k": 3204.1, "count": 4321 },
        "motor_vehicle_theft": { "rate_per_100k": 474.1,  "count": 640 },
        "arson":               { "rate_per_100k": null,   "count": null }
      },
      "disclaimer": "Derived from FBI Uniform Crime Reporting (UCR) Program public data..."
    }
  ]
}

Response fields

FieldNotes
location / statePlace name and 2-letter state code.
populationPopulation covered by the reporting agency (UCR-reported).
data_yearCalendar year the figures describe.
coverage_rateShare of population covered by agencies reporting all 12 months (0–1); estimate.
violent_crime / property_crimeRollups — count + rate_per_100k. Violent = murder + rape + robbery + aggravated assault. Property = burglary + larceny + motor vehicle theft.
offensesAll 8 Part I offenses, each with count + rate_per_100k.
data_sourceOriginating FBI UCR RETA file and data year.
disclaimerSource and informational-use notice.

Rates are per 100,000 population. Arson is not consistently reported in the RETA source and is frequently null. State figures are aggregated from reporting agencies; use coverage_rate when interpreting statewide totals.

Coverage & freshness

17,124 cities · 50 states + DC · 8 years (2018–2025) · 133,283 records. The live, authoritative coverage map is always /v1/meta.

Annual updates

Refreshed ~Q1, when the FBI releases the prior year. Verify against the FBI Crime Data Explorer before relying on a figure.

Voluntary, uneven reporting

UCR reporting is voluntary — not every agency reports, and some report partial years. The coverage_rate field tells you how represented each place is.

Source methodology

Parsed directly from the FBI Return A master file into counts and per-100k rates, with violent/property rollups computed from the underlying offenses.

Don't rank localities

Per the FBI's own guidance, do not rank or directly compare localities using these figures without accounting for reporting, population, and local differences.

Errors & usage

StatusMeaning
200Success.
400Missing required parameter (e.g. city without state).
404No data for the requested place.

Data & usage notes

  • Derived from official FBI UCR Return A master files and provided as is — voluntarily reported, incomplete, and subject to revision.
  • Informational / development use only — not legal, investment, or real-estate advice.
  • Prohibited: FCRA- or Fair-Housing-regulated decisioning (tenant / employment / credit / insurance screening), decisions about individuals or specific addresses, neighborhood steering / redlining, and bulk resale as a competing dataset. See Terms of Use.

Frequently asked questions

Common questions about FBI UCR crime data, coverage, and the API.

What crimes does UCRLens cover?

All 8 FBI Part I offenses: murder and non-negligent manslaughter, rape, robbery, aggravated assault, burglary, larceny-theft, motor vehicle theft, and arson. Each offense is returned with both a raw count and a rate per 100,000 residents.

What years of data are available?

2018 through 2025, parsed from the FBI's official RETA (Return A) master file. Year availability per city depends on whether a given law enforcement agency submitted data to the FBI in that year.

Does the API cover all US cities?

17,124 cities and jurisdictions across all 50 states and Washington DC. Not every city reports in every year; the API returns a coverage_rate field indicating how complete a given year's submission was for a city.

What does "rate per 100k" mean?

The crime rate is normalized per 100,000 residents, making cities of different population sizes directly comparable. It is calculated as (count / population) × 100,000 using the population figure the reporting agency submitted to the FBI.

What is the source of this data?

The FBI Uniform Crime Reporting (UCR) program's Return A (RETA) master file — the official federal source for city-level Part I crime data. The data_source field on each record identifies the specific file version.

Can I query crime trends across multiple years?

Yes. Use GET /v1/crime/trends?city=Chicago&state=IL to get a year-by-year breakdown across all available years. You can also call /v1/crime/city with a specific year parameter to retrieve a single year's data.

Start querying crime data

Free tier on RapidAPI — no credit card to start. Every plan returns the same full data; plans differ only by monthly call volume.