Oakland Crime Watch

For journalists & council staff

Using these numbers in your work

How to quote a figure so it can be checked, what each comparison means, how to reproduce a number from the city's data, and how to embed a live chart.

Photo: Andrew Robles andrewroblesphoto, CC0

How to cite a figure

Name the category, the geography and the exact window, and link the page the figure came from. Suggested form:

According to Oakland Crime Watch's analysis of OPD's public CrimeWatch dataset, [area] recorded [count] [category] incidents during [start date–end date]. Source: [page URL], accessed [date]. Figures may be revised.

Three dates matter and they are different things: the period measured (printed beside every figure), the latest incident date in the data (Oct 29, 2026) and the last refresh (Nov 1, 2026 23:58 UTC); the last two are in every page's footer. Say "reported incidents", not "crimes".

For publication, use the figure printed on the public page. Its category definition and cutoff are visible beside it. Interactive dashboards are for exploration; if you cite a filtered result, record every active filter and its date range.

What the totals include

Overall totals include some non-criminal incidents recorded by police, such as towed and recovered vehicles, warrants and missing persons. Use the named crime categories when describing trends in specific offences. This also means the site's totals differ from OPD's official statistical releases, which count only Part 1 offences under the department's own definitions and cut-off dates; the direction of a trend usually agrees, the level does not.

What the comparisons mean

  • Year-over-year comparison — a current window ending at the last month that is at least 90 days old (Jun 30, 2026), compared with the same dates a year earlier. This buffer makes late arrivals much less likely to distort the percentage change.
  • Reported so far — a raw recent count. Recent counts are provisional and may change as reports arrive or classifications are revised; avoid comparing them directly with an older, more fully processed period.
  • Per 1,000 residents — annual total over an annual population estimate. Complete years only.
  • Per 1,000 residents, by beat — reports over the last 12 months divided by the beat's 2020 Census population, on every map and beat page. Commercial and transit beats run high because visitors and workers are not residents; it is not a measure of personal risk.
  • Families — five fixed groupings of OPD categories, published in full.

Reproducing a number

Download every published row as CSV from the City of Oakland or query the JSON API (Socrata SoQL; no key needed for modest use), then apply the same rules this site does:

  1. Filter on the datetime field, the incident date and time, not the date the report was filed.
  2. Count distinct casenumber values. The city publishes one row per charge, so a case can have several rows.
  3. Use the crimetype a case currently carries; when the city has republished a case under a new category, the newest wins.
  4. Treat HOMICIDE rows whose description is an unexplained death (SC UNEXPLAINED DEATH) as "everything else", not as homicides or violent crime.
  5. Group categories into families exactly as the published table; violent crime is HOMICIDE, ROBBERY, FELONY ASSAULT and FORCIBLE RAPE.

Worked example, the citywide total for 2025 (42,111 on the ten-year page):

https://data.oaklandca.gov/resource/ppgh-7dqv.json?$select=count(distinct casenumber)&$where=datetime between '2025-01-01T00:00:00' and '2025-12-31T23:59:59'

Dashboard tables can also export their current filtered rows.

Citing a 311 figure

The 311 figures come from a different city feed with different rules. When you cite one, give the request type, the geography, the dates the requests were opened, the date you read the figure, and the URL. Example: "Oakland residents filed 29,508 illegal dumping requests with OAK 311 between Sep 19, 2025 and Sep 18, 2026 (Oakland Crime Watch, from City of Oakland open data, read Sep 20, 2026)."

  • "Marked closed" is a record, not an outcome. Write "marked closed within 30 days," not "fixed within 30 days." Some request types are almost never closed in the city's system, whatever happened on the street.
  • Closure figures describe a cohort. They cover requests opened in a stated 12 months, exclude cancelled, referred and other statuses that carry no close date, and count still-open requests as not yet closed. A change from one year to the next can reflect recording practice as much as service.
  • Requests are not problems. One pile of debris can produce ten requests. Counts by address show where residents report most, not how many incidents occurred.
  • "Still marked open" covers one year. A request leaves that count when it turns a year old, so a falling count is not proof the backlog shrank.
  • To reproduce a count, query the city's OAK 311 dataset: count requestid where datetimeinit falls in your window, grouped by reqcategory, beat or councildistrict. Use srx and sry for longitude and latitude; the feed's reqaddress point is unreliable. Full method.

Embedding a live dashboard

The public interactive views below use the same datasets and definitions as the figures on this site, and they update daily. That means an embedded chart can change after your story is published: keep a dated export or screenshot of what you cited, and label the embed as updating automatically. Paste an iframe like this into a CMS that allows embeds:

<iframe src="https://www.knowi.com/d/leBkCBKAwFAbt5g6n1T2DiivXgEm1fQbCeb3ipGBL0UcUie" width="100%" height="900" title="Oakland crime trends"></iframe>

Need something that is not here?

If you need a neighborhood, category or time window the site does not show, such as stolen vehicles in one beat since 2022, email hello@knowi.com with the geography, the categories, the dates, how you plan to use it and your deadline. There is no charge.

Spotted an error?

Email us at hello@knowi.com with the page URL, the figure you saw, any filters you had set and the date you viewed it.