Public API
All endpoints return aggregated data only. No PII, no authentication required for read. Rate-limited to roughly 60 requests per minute per IP. For higher volume or commercial use, contact the maintainer.
Privacy guarantees
- Individual-level data is never returned — locations are grid-aggregated (500m×500m).
- Forbidden fields (name, DOB, address, case_number, photo, etc.) are stripped server-side.
- Counts below 5 are suppressed on sensitive layers.
Spatial data (GeoJSON)
GET
/api/crime-pointsIndividual crime points (aggregated coords, no PII).
| bbox | minLng,minLat,maxLng,maxLat | Optional viewport bbox. |
| categories | comma list | property, other (VPD GeoDASH limits). |
| limit | integer | Default 5000, max 50000. |
| start | YYYY-MM | Month range start. |
| end | YYYY-MM | Month range end. |
/api/crime-points?bbox=-123.27,49.20,-122.98,49.32&categories=property&limit=2500
GET
/api/servicesNGO and service site locations with taxonomy.
/api/services
GET
/api/crisis-signals311 crisis reports (encampments, graffiti, needles).
| start | YYYY-MM | Optional start month. |
| end | YYYY-MM | Optional end month. |
GET
/api/overdose-deathsAggregated overdose deaths (neighborhood grid).
GET
/api/businessesCrime-adjacent business licences (liquor, cannabis).
GET
/api/crashesICBC vehicle crashes.
GET
/api/costsEstimated social cost overlay per grid cell.
Narrative / summary
GET
/api/statsSite-wide stats (totals, YoY, baseline, services).
GET
/api/neighborhood-storyMulti-year trend for a single neighborhood.
| neighborhood | string | Required (exact match). |
| years | integer | Years back. Default 5. |
/api/neighborhood-story?neighborhood=Strathcona&years=5
GET
/api/neighborhood-indexComposite index (crime + crisis + overdose + service) per neighborhood.
GET
/api/news-crimesNews-extracted crime mentions (NLP-filtered).
Export
GET
/api/exportCSV / GeoJSON export for a chosen layer.
| layer | enum | incidents, services, overdoses, crisis, businesses. |
| format | enum | csv or geojson. |
Embeddable widgets
/embedFull interactive map (accepts URL state: start, end, cats, n, lng, lat, zoom).
/embed/statsFour-stat summary card (incidents, YoY, overdose deaths, 311 signals).
/embed/neighborhood/{name}Neighborhood trend card with insights.
Drop any embed into an iframe. The map embed accepts the same URL state as
crimeflark.com/.Terms
- Attribute data to Vancouver Crime Observatory + the underlying source (VPD, StatCan, etc.).
- Do not attempt to re-identify individuals or bypass aggregation.
- No SLA on the free tier. Availability is best-effort.