How to look up a Kansas City animal control case
The city publishes its animal control cases in four separate files, three of them frozen, with a 565-day hole where nothing is published at all. The one file that is current carries timestamps on two different clocks, which is why the city's own response-time measure, still sitting on the portal, stopped in November 2017.
Kansas City used to publish how long animal control took to reach you. The dataset is still there, on the city’s open data portal, under the plain name Animal Control Median Response Time. It holds sixty-six monthly figures. The first is May 2012. The last is November 2017, at 16.99 minutes, and its rows have not been touched since December 11, 2017.
The cases themselves are still published. Four different files hold them, three are frozen, and between them they leave 565 days of Kansas City animal control unpublished entirely. The one file that is live carries its timestamps on two different clocks, which means the number the city stopped reporting in 2017 cannot be reconstructed from it by anyone.
The thirty-second version
- The current file is
sxcw-gd9k, Animal Services (Post-June 8, 2025), atdata.kcmo.org. Free, no account, no records request. 15,255 cases, created July 19, 2025 through June 22, 2026, pulled by The Kansas City Stare on September 18, 2026. - It was last refreshed on June 22, 2026 — 88 days before that pull, and the same day as its newest case.
- Type the case number in capitals. The filter is case-sensitive and a lowercase case number returns an empty list, not an error.
- Older cases are in different files.
4mkm-gagxfor December 2020 to December 2023;xbnb-pqk8for 2007 to 2021. - Nothing published covers January 1, 2024 to July 18, 2025.
- Do not try to compute how long the city took to answer a call. The section below explains why the obvious calculation produces a clean, plausible, wrong number.
Which file, and when
There are six animal entries on the portal. One, jtss-8fu9, is a narrative page rather than data
and returns an error to any query. One is the frozen response-time measure. The other four are
cases, and nothing on the portal tells a resident which to open.
| Dataset | What it covers | Cases | Rows last refreshed | What it says about itself |
|---|---|---|---|---|
xbnb-pqk8 Animal Control ALL CASES | 2007–2021 | 139,749 | March 12, 2022 | ”Updated daily” |
4mkm-gagx Animal Services Cases | Dec 1, 2020 – Dec 31, 2023 | 70,551 | June 25, 2024 | ”will be updated on a weekly basis” |
| — | Jan 1, 2024 – Jul 18, 2025 | none published | — | — |
sxcw-gd9k Animal Services (Post-June 8, 2025) | Jul 19, 2025 – Jun 22, 2026 | 15,255 | June 22, 2026 | no claim |
rpwu-u3bj Animal Control Median Response Time | May 2012 – Nov 2017 | 66 monthly figures | December 11, 2017 | no description |
The hole in the middle runs 565 days, a little over eighteen months. The 4mkm-gagx file is the
KC Pet Project era; its own description says it begins December 1, 2020, when KC Pet Project began
receiving animal services requests directly, and that it will be updated weekly. Its last case is
dated December 31, 2023.
The current file’s title names June 8, 2025, the day its description says animal control returned from KC Pet Project to the City. Its earliest case was created 41 days after that, on July 19, 2025. What happened in those 41 days is not something this reporting establishes. The file simply does not carry them.
Looking up a case
One unauthenticated request. Capitals matter:
Look up one animal control case by numberOptional — for people who use a terminal
# Look up one animal control case by number
curl -s 'https://data.kcmo.org/resource/sxcw-gd9k.json?case_number=NAS-2026-07972'That returns the case. The same query with nas-2026-07972 returns []. Not an error, not a
warning — an empty list, which reads exactly like a case that does not exist. If you are not sure of
the capitalization, force it:
The same lookup when you are unsure of the case numberOptional — for people who use a terminal
# The same lookup when you are unsure of the case number
curl -s "https://data.kcmo.org/resource/sxcw-gd9k.json?\$where=upper(case_number)%20like%20'%25NAS-2026-07972%25'"The same file runs the opposite convention one column over. Addresses are stored in mixed case. Searching the address field for a street name in capitals returns nothing; the same name capitalized normally returns matches. The Kansas City Stare tested both on September 18, 2026 against a major Kansas City street: 116 cases in mixed case, zero in capitals. One column in this file wants capitals and another refuses them, and neither tells you which.
Case numbers run NAS-YYYY-NNNNN. Each row carries the status, the county, the inspection level,
and the timestamps discussed below. Of the 15,255 cases, 14,504 (95.1 percent) are marked
Complete, 448 are closed as duplicates, 123 canceled, and 92 still pending.
What people call about
| Logged as | Cases | Share |
|---|---|---|
| Stray at large | 6,558 | 43.0% |
| Cruelty or neglect | 2,779 | 18.2% |
| Wildlife | 1,372 | 9.0% |
| Administration and services | 1,320 | 8.7% |
| Questionable activity | 869 | 5.7% |
| Stray confined | 720 | 4.7% |
| Government agency assist | 533 | 3.5% |
| Bites (three separate labels) | 929 | 6.1% |
By county: Jackson 12,576, Clay 2,045, Platte 619, Cass 3, and twelve rows with none recorded.
The catch: two clocks in one file
The file carries four timestamps per case — when it was created, when it was assigned, when the inspector actually arrived, and when it closed. The obvious thing to do with them is subtract the first from the third and find out how long Kansas City takes to show up.
Do that and you get a median of 13.3 hours. It is a clean number, it is well formed, and it is wrong.
Here is what breaks it. On 9,382 of the 14,547 cases that carry both — 64.5 percent — the case is recorded as assigned before it was created. Half the arrival times, 6,968 of 13,803, land before their own case existed. Another 1,257 cases are assigned after they were closed.
Those are not scattered errors. They cluster: of the backwards assignment gaps, 3,779 are almost exactly five hours and 1,847 are almost exactly six. Five and six hours are the offsets between Kansas City’s local time and UTC in summer and winter. The creation timestamp is being written on a different clock from the rest of the row.
Two more reads say the same thing. Sorted by hour of day, the assignment timestamps look like a working day: they peak at noon and every hour from 11 p.m. to 5 a.m. carries under one percent of the volume. The creation timestamps peak at 4 p.m. and go quiet only at 5 a.m. and 6 a.m. — the same working day, displaced. The two operational timestamps then agree with each other where neither agrees with creation: arrival follows assignment correctly on 94.3 percent of cases.
Shifting the creation column five hours does not rescue it either. It cuts the impossible cases from 64.5 percent to 29.7 percent and leaves nearly a third still backwards. Elapsed time from the moment a resident called cannot be measured from this file. Which is the same number the city stopped publishing in November 2017.
The one wait that can be measured
Assignment and arrival share a clock, so the gap between them is real. It is not how long you wait. It is what happens after the call has been taken and routed: dispatch to on scene.
Of the 15,255 cases, 13,496 carry both timestamps; 768 of those record arrival before assignment and are dropped, leaving 12,728 usable measurements. Measured by The Kansas City Stare on September 18, 2026:
| Median | 107 minutes |
| Reached within 30 minutes | 21.7% |
| Reached within an hour | 37.4% |
| Reached within four hours | 65.2% |
| Reached within 24 hours | 85.4% |
| 90th percentile | 43.4 hours |
| Longest | 251.8 days |
Triage is visible in it, and works the way it should. On the 595 cases logged as an emergency animal inspection the median is 37.6 minutes; on the 5,041 logged Level 1, 81.7 minutes; on the 6,666 logged Level 2, 141.9 minutes. By subject, a report of an animal biting a person ran to a median of 51.1 minutes and a wildlife call 51.5, against 116.2 for a stray at large and 145.1 for cruelty or neglect.
This figure is not comparable to the city’s old one. The 16.99 minutes last published in November 2017 was measured from the complaint. The 107 minutes above starts after the complaint has already been taken and assigned. Anyone setting the two side by side is comparing two different things, and the file that would let you convert between them is the one with two clocks in it.
Checking us
Everything above is one file and its metadata:
Count every case in the fileOptional — for people who use a terminal
# Count every case in the file
curl -s 'https://data.kcmo.org/resource/sxcw-gd9k.json?$select=count(1)'Returns [{"count_1":"15255"}]. Parse that as JSON. Stripping the non-digits out of it to get
the number yields 115255, because the 1 in the key count_1 survives the strip — a trap that
has already produced a page of confident wrong counts in this newsroom once.
Ask the portal when the response-time file stoppedOptional — for people who use a terminal
# Ask the portal when the response-time file stopped
curl -s 'https://data.kcmo.org/api/views/rpwu-u3bj.json' \
| python3 -c 'import json,sys,datetime; m=json.load(sys.stdin); \
print(m["name"], "| rows last updated", datetime.datetime.utcfromtimestamp(m["rowsUpdatedAt"]))'Returns Animal Control Median Response Time | rows last updated 2017-12-11 17:33:38.
One thing to know before republishing anything out of the case file: its DESCRIPTION column is
free text typed by a dispatcher and routinely carries a street address and caller detail. It is a
column to count, not to quote. The Stare’s own archived copy of this file drops the address column,
the assigned officer, and the dispatcher for that reason.
What this does not tell you
It does not tell you how long Kansas City takes to answer an animal call, because no published file supports that number and the city stopped reporting it nine years ago. It does not explain the 565-day gap, or the 41 days between the date in the current file’s title and the first case in it. It does not say whether the case you are looking for exists, only which file it would be in. All of it is a measurement of a file that stopped moving on June 22, 2026. Pull the current one before you rely on any figure here.
Quick answers
- Where can I look up an animal control case in Kansas City?
- At data.kcmo.org, free, with no account. Which dataset depends on when the case was opened, and the city does not tell you that anywhere. For a case opened on or after July 19, 2025, use sxcw-gd9k, Animal Services (Post-June 8, 2025), which held 15,255 cases when The Kansas City Stare pulled it on September 18, 2026. For 2020 through 2023, use 4mkm-gagx, the KC Pet Project era file, 70,551 cases ending December 31, 2023. For 2007 through 2021, use xbnb-pqk8, 139,749 cases. A case opened between January 1, 2024 and July 18, 2025 is in none of them.
- Why does my Kansas City animal control case search return nothing?
- Two ordinary reasons before any other. First, capitalization, and the file runs it two different ways in two different columns. Case numbers are stored in capitals, so filtering sxcw-gd9k for case_number=nas-2026-07972 returns an empty list while the same query in capitals returns the case. Street addresses are stored in mixed case, so a filter for a street name in capitals returns nothing while the same name capitalized normally returns matches. The Kansas City Stare tested both on September 18, 2026. Neither failure raises an error; both look exactly like a clean no-record result. Second, the date: nothing published covers January 1, 2024 through July 18, 2025.
- How long does Kansas City animal control take to respond?
- The city stopped publishing that number in November 2017, and the file that would let you compute it cannot support the calculation. Dataset rpwu-u3bj, Animal Control Median Response Time, is still on the portal. It holds 66 monthly figures from May 2012 to November 2017, running between 11.47 and 16.99 minutes, and its rows were last updated on December 11, 2017. In the current case file, the timestamp recording when a case was created sits on a different clock from the timestamps recording what happened next: 64.5 percent of cases are marked assigned before they were created, and the backwards gaps pile up at five and six hours, the offsets between local time and UTC. Any wait computed across those two columns is wrong.
- Is there any animal control response time you can actually measure in Kansas City?
- One, and it is not the same thing as how long you wait. The assignment timestamp and the arrival timestamp share a clock and agree with each other on 94.3 percent of cases, so the gap between them is measurable: that is dispatch to on-scene, after the call has already been taken and routed. Across the 12,728 usable cases in the file, The Kansas City Stare measured a median of 107 minutes on September 18, 2026, with 21.7 percent reached within 30 minutes, 37.4 percent within an hour, 65.2 percent within four hours, and 85.4 percent within 24 hours. This figure cannot be compared with the city's old 16.99-minute measure, which started from the complaint.
- Does Kansas City animal control respond faster to some calls than others?
- Yes, and the pattern is the one you would hope for. Measuring dispatch to arrival on September 18, 2026, The Kansas City Stare found a median of 37.6 minutes on the 595 cases logged as an emergency animal inspection, 81.7 minutes on the 5,041 logged Level 1, and 141.9 minutes on the 6,666 logged Level 2. By subject, a report of an animal biting a person ran to a median of 51.1 minutes across 355 cases and a wildlife call 51.5 minutes across 1,058, while a stray at large ran 116.2 minutes across 5,763 and a cruelty or neglect report 145.1 minutes across 2,446.
- What do people call Kansas City animal control about?
- Strays, by a wide margin. Of the 15,255 cases The Kansas City Stare pulled on September 18, 2026, 6,558 are logged as a stray at large, which is 43.0 percent of everything, and another 720 as a stray confined. Cruelty or neglect accounts for 2,779, or 18.2 percent. Wildlife accounts for 1,372. Bites are split across three labels totaling 929: animal on human, animal on animal, and a general animal bite. By county the cases run 12,576 in Jackson, 2,045 in Clay, 619 in Platte, and 3 in Cass.
- Who runs animal control in Kansas City now?
- The City. The portal's own description of dataset sxcw-gd9k says it holds data for Kansas City Animal Control Services after the service was returned from KC Pet Project to the City, and names June 8, 2025 in the dataset's title. The published case file does not start on that date, though. Its earliest case was created on July 19, 2025, 41 days later. The Kansas City Stare has not established what happened in those 41 days; the file simply does not carry them.
- How current is Kansas City's animal control data?
- Not current, and one of the files says otherwise about itself. The one live file, sxcw-gd9k, was last refreshed on June 22, 2026, which was 88 days before The Kansas City Stare pulled it on September 18, 2026, and its newest case was created the same day it was last refreshed. Of the two older files, xbnb-pqk8 carries the description Updated daily and had not had its rows touched since March 12, 2022. The KC Pet Project file, 4mkm-gagx, says it will be updated on a weekly basis and was last updated on June 25, 2024, with no case in it after December 31, 2023.
- Can I download Kansas City animal control cases myself?
- Yes, one unauthenticated request, no key. The whole current file comes back from data.kcmo.org/resource/sxcw-gd9k.json with a limit above 15,255. One caution before you publish anything from it: the free-text description column is typed by a dispatcher and routinely contains a street address and caller detail, so it is a column to analyze rather than to republish. The Kansas City Stare's own archived copy of this file drops the address, the assigned officer, and the dispatcher columns for that reason.