Open Policing Data Hub
Quick start

Base URL: /api/v1. All responses are JSON with a { data, meta } envelope. List endpoints paginate with limit and cursor (from meta.next_cursor).

curl "https://YOUR-HOST/api/v1/agencies?state=TX&limit=5"
curl "https://YOUR-HOST/api/v1/agencies/TX2200100/trends"
curl "https://YOUR-HOST/api/v1/search?q=burglary&kind=guides"

Access is open — no key needed. Optionally send X-API-Key to identify your client and raise your rate limit; request a key here. Data is served from versioned snapshots — check meta.generated_at and cite the original sources (FBI CDE, BJS, publishing agencies).

GET/api/v1/meta

API and dataset metadata

Dataset inventory with record counts and snapshot timestamps, plus links to documentation.

GET/api/v1/guides

List POP guides

Problem, response, and tool guides.

ParamInDescription
qqueryText match on title, author, description, agency.
typequeryExact resource type, e.g. 'Problem Guide'.
yearquery
limitqueryPage size (default 25, max 100).
cursorqueryCursor from meta.next_cursor.
GET/api/v1/guides/{id}

Get a guide

Full guide record with markdown and HTML URLs.

ParamInDescription
id*path
GET/api/v1/projects

List POP projects

Conference submissions and case studies.

ParamInDescription
qquery
agencyquerySubstring match on agency name.
countryquery
yearquery
limitqueryPage size (default 25, max 100).
cursorqueryCursor from meta.next_cursor.
GET/api/v1/projects/{id}

Get a project

Full project record, including the matched agency ORI when known.

ParamInDescription
id*path
GET/api/v1/agencies

List agencies

Compact directory rows for ~19,000 US law enforcement agencies. Always paginated.

ParamInDescription
statequeryTwo-letter state abbreviation.
qquerySubstring match on name or county.
typequeryAgency type, e.g. 'City'.
has_trendsqueryOnly agencies with trend snapshots.
limitqueryPage size (default 25, max 100).
cursorqueryCursor from meta.next_cursor.
GET/api/v1/agencies/{ori}

Get an agency

Full enriched record: directory data, NIBRS status, LEMAS staffing history, policy portal, open data links, POP submissions.

ParamInDescription
ori*pathFBI Originating Agency Identifier, e.g. TX2200100.
GET/api/v1/agencies/{ori}/nibrs

Agency NIBRS snapshot

Incident-based detail (victims, offenders, relationships, weapons, locations) over complete calendar years for eight offense categories, aggregated from FBI CDE bulk extracts.

ParamInDescription
ori*pathFBI Originating Agency Identifier, e.g. TX2200100.
GET/api/v1/agencies/{ori}/similar

Comparable agencies

Precomputed nearest neighbors by size, crime mix, rates, and staffing within the same agency class (cosine over z-scored warehouse metrics).

ParamInDescription
ori*pathFBI Originating Agency Identifier, e.g. TX2200100.
GET/api/v1/sources

List open data sources

Curated source registry with provenance.

ParamInDescription
statequery
dataset_typequeryTaxonomy value, e.g. USE_OF_FORCE.
source_classquerye.g. api, csv, socrata.
limitqueryPage size (default 25, max 100).
cursorqueryCursor from meta.next_cursor.
GET/api/v1/sources/{id}

Get a source

Full registry entry.

ParamInDescription
id*path
GET/api/v1/policies

List policy portals

Public police policy portal directory.

ParamInDescription
statequery
qquerySubstring match on agency or jurisdiction.
limitqueryPage size (default 25, max 100).
cursorqueryCursor from meta.next_cursor.
GET/api/v1/datasets

List datasets

Downloadable dataset files.