Base URL
https://bpo-v2-api.zeshaq.workers.dev/observatory/data/v1
All endpoints return JSON. Send an API key as Authorization: Bearer <key>
to lift your rate limit.
GET /v1/incidents
Paginated list of incidents matching the supplied filters.
Query params
startdate,enddate— ISO date YYYY-MM-DDviolentNonViolent—V|NVviolenceType,actor,motive,crosscut— comma-separated id listslimit(default 100, max 500),offset
curl -s "https://bpo-v2-api.zeshaq.workers.dev/observatory/data/v1/incidents?startdate=2024-01-01&limit=5" GET /v1/totals
Filter-aware aggregates. Same query params as /incidents minus pagination.
{
"incidents": 162315,
"killed": 52900,
"injured": 284765,
"arrested": 416231
} GET /v1/lookups/{kind}
Reference data for filter ids. kind ∈ violencetype, actor, motive, crosscut, division, district, upazilla, source.
curl -s "https://bpo-v2-api.zeshaq.workers.dev/observatory/data/v1/lookups/violencetype" Rate limits
- Anonymous (no Authorization header): 60 req/min per IP
- Keyed: 600 req/min per key (default)
- 429 responses include a
Retry-After: 60header
Stability
Everything under /v1/ is version-stable: existing fields will not be removed or renamed inside v1. New fields may be added; clients should ignore unknown fields. Breaking changes ship as /v2/.
Attribution
If you publish results derived from this API, please cite:
Bangladesh Peace Observatory (CGS / Centre for Alternatives). Bangladesh Incident Database. https://peaceobservatory-ca.org/