NCS LIVE DESK Independent crisis monitoring across Nigeria
For developers, researchers and newsrooms

NCS public API

Free, read-only JSON access to every published NCS incident, with links back to the original reporting. No key required.

Not an emergency service. NCS is an incident index and reporting aid—not an emergency service, official casualty register or prediction system. In an emergency, call 112. Records are compiled from published reports and may change as stories are corroborated, corrected or withdrawn.

Quick start

curl "https://nigeria-crisis-map-7zyk.vercel.app/api/incidents?state=Benue&since=2026-10-01"

Endpoints

GET /api/incidents
Newest-first list of incidents, filtered by the parameters below.
GET /api/incidents/:id
One incident by id or story slug. Returns 404 if it does not exist or was withdrawn.
GET /api/meta
Accepted categories, states and statuses, plus last_run_at: when the 4-hourly update last completed.

Query parameters

ParameterMeaning
stateState name, case-insensitive ("benue", "Akwa Ibom", "FCT" or "Abuja").
lgaLocal government area, case-insensitive exact match.
categoryOne or more category slugs, comma-separated.
statusdeveloping, corroborated or corrected (comma-separated). Defaults to all three.
since / untilYYYY-MM-DD (whole days in Nigeria time, WAT) or an ISO 8601 timestamp with timezone. Both inclusive.
limitResults per page, 1–100. Default 25.
cursorPass pagination.next_cursor from the previous response to get the next page.

Response

{
  "data": [
    {
      "id": "4bc75adf-75a0-4821-b206-bcd5083bce82",
      "title": "Gunmen kill 5 in Guma, Benue",
      "category": "attack",
      "status": "corroborated",
      "state": "Benue",
      "lga": "Guma",
      "reported_at": "2026-10-02T08:00:00+00:00",
      "updated_at": "2026-10-02T11:20:00+00:00",
      "casualty_min": 6, "casualty_max": 8,
      "fatalities_min": 5, "fatalities_max": 6,
      "injured_min": 1, "injured_max": 2,
      "kidnapped_min": 0, "kidnapped_max": 0,
      "source_count": 2,
      "sources": [
        { "publisher": "Premium Times", "url": "https://www.premiumtimesng.com/…", "published_at": "2026-10-02T08:00:00+00:00" },
        { "publisher": "Channels Television", "url": "https://www.channelstv.com/…", "published_at": "2026-10-02T09:00:00+00:00" }
      ],
      "story_url": "https://nigeria-crisis-map-7zyk.vercel.app/story/gunmen-kill-5-in-guma-benue-1a2b3c4"
    }
  ],
  "pagination": { "limit": 25, "next_cursor": "eyJyZXBvcnRlZF9hdCI6…", "has_more": true },
  "notice": { "attribution": "…", "disclaimer": "…", "docs": "/api" }
}

Fields

FieldTypeDescription
iduuidStable incident identifier.
titlestringHeadline of the first source report (NCS never stores full article text).
categorystringCrisis category slug, e.g. kidnapping, attack, flood. Full list at /api/meta.
statusstringdeveloping (one allowlisted source), corroborated (two or more independent sources) or corrected.
statestringNigerian state or FCT. "Nigeria" means the source did not name a state.
lgastring | nullLocal government area when reported.
reported_atISO 8601When the first source published the report. since/until filter on this field.
updated_atISO 8601Last time NCS changed the record (new source, range or status).
casualty_min / casualty_maxintegerPeople reported killed or injured. Ranges preserve disagreement between sources.
fatalities_*, injured_*, kidnapped_*integerThe same reported ranges broken down by impact type.
source_countintegerNumber of distinct publishers supporting the record.
sources[]arraypublisher, url (canonical link to the original report) and published_at for every supporting report.
story_urlurlThe NCS story page, which links to each source.

Pagination

Results are ordered by reported_at, newest first. When has_more is true, repeat the request with cursor=<next_cursor>. Cursors stay valid as new incidents arrive, so you will not see duplicates or skip records while paging.

Limits, caching and errors

Using the data responsibly