How to look up code violations on a property in Kansas City
The city publishes 174,999 property code violations in a free database, addressed, dated, and quoting the ordinance. It stopped adding to it on April 30, 2026, and has added nothing in the 135 days since, while the permit file from the same city system took in more than 16,000 new records over the same stretch. Here is how to search what is there, the one keystroke that makes the search lie to you, and why 19,890 rows cannot agree with themselves about whether the problem was ever fixed.
The letter arrives taped to the door, or it does not arrive at all and you hear about it from a neighbour. Somebody has been cited. Or the house you are about to buy has a history nobody volunteered. Or the property next door has been a problem for three years and you want to know whether the city has ever actually done anything about it.
In Kansas City, Missouri all of that is a public record, it is free, and it is already online with no request to file. The city publishes every property code violation its inspectors write, with the address, the section of the municipal code, the inspector’s own instruction in plain words, and the dates. You can have an answer for any address in about a minute.
The catch is the answer’s expiry date. The file that carries the ordinance and the finding, the part that tells you what an inspector decided, stopped on April 30, 2026, and has taken in nothing since. Here is how to search what is there, which of the three files you actually need, and the two columns that will hand you opposite answers to the same question.
The thirty-second version
Go to data.kcmo.org. Find dataset vq3e-m9ge, “EG NPD Violations”. Search the
street_address column for the house number and street, in title case. That is it: 174,999
alleged violations, 2021 to April 2026, one row each.
For anything older, repeat in nhtf-e75a, “Property Violations [Historical]”: 799,671 rows
covering December 5, 2009 to September 30, 2021, with the address in a column called address
instead.
For a complaint filed since May 2026, the only live file is tezm-fh2e, “Open Property
Violations”, a filtered view of the city’s 311 requests, updated September 8, 2026. It will tell you
somebody called. It will not tell you what the inspector found.
Read date_resolved rather than either status column. Both status columns lie, in opposite
directions, on 19,890 rows.
What each row actually gives you
More than most city files. A single row from vq3e-m9ge carries the case number in the city’s NPD
series, the case status, the section of the code, the ordinance text in capitals as the city stores
it, the violation status, the inspector’s corrective instruction as typed, the date found, the date
to comply, the date resolved, the full address, the city’s parcel number, and a map point.
The corrective-action field is the one worth reading and the one nobody expects to be there. It is not boilerplate. It is what the inspector wrote standing in the yard: which bucket of sanitizer tested low, which items were on which porch, what the person in charge did about it while they watched. If you want to know whether a violation was a paperwork technicality or a real problem, that field is where the difference lives, and no summary or dashboard reproduces it.
Use the search box at the top of the dataset page, which ignores capitalization. Type the address
there however you like: The Stare ran the same Prospect Avenue search three ways on September 15,
2026 and got 2,015 rows for Prospect, for PROSPECT, and for prospect alike.
The column filter is a different search, and that one is case-sensitive. If you filter the
street_address column instead of using the search box, type the address exactly the way the city
stores it: title case, 1 E 127th St, never 1 E 127TH ST. On September 12, 2026 The Stare ran
that filter three ways. Prospect returned 2,013 rows. PROSPECT returned zero. So did prospect.
Not an error, not a warning, not “no results for that spelling”, but a clean, confident zero,
identical to the answer you would get for an address that has never been cited in its life.
Anyone who filters that column in capitals, the way addresses are written on nearly every form in America, will be told a property is clean when it is not. The search box does not have that problem, and there is a request that defeats the bug in the column filter too; the exact one is in “How to check us” below.
The catch: the file stops on April 30, 2026
The Kansas City Stare pulled the whole file on September 12, 2026. Counted by the day an inspector found the violation, it runs at an ordinary clip right up to the end of April: 253 violations on Thursday April 30, 312 on the 29th, 203 on the 28th, 250 on the 27th, and on through the month in the two-to-three-hundreds every weekday.
Then nothing. Zero rows for May 1. Zero for June, July, August, and the first twelve days of September. One hundred and thirty-five days, 174,999 rows, and not one of them found after April 30, 2026.
It is not only new violations that stopped. The latest date_resolved anywhere in the file is also
April 30, 2026. The file shows 30,855 cases with the status “In-Violation”, and not one of them
has been recorded as resolved since that Thursday. The feed did not slow down. It stopped in both
directions, on the same day.
This is not a quirk of one view. The city’s own published maps and dashboards are built on that
file, so they all show April too: the property-violations map qvhx-kdqi, the “open violations,
exterior building issues” view w5nm-8qv8, the tree-violations map 76iu-fdsg. A resident who
opens any of them today is looking at spring.
The explanation that does not hold
The obvious reading is that Kansas City moved off its old permitting and enforcement system in May, and this file is simply retired. That would be an ordinary, blameless thing for a city to do, and it is the first thing to check rather than the last.
It does not survive the check. “City Issued Permits”, dataset w8jz-wjgn, comes from the same
EnerGov system and sits on the same portal, and it holds 16,161 permits issued between May 1 and
September 12, 2026. The city last updated it on September 8. The pipe from EnerGov to the public
portal is open and carrying traffic. Only the violations half of it stopped.
The Stare has not established why, and does not assert a reason. What is established is narrower and enough: the public record of code enforcement in Kansas City has a 135-day hole in it, a comparable feed from the same system over the same days does not, and the city’s own maps have been showing April to anyone who looked.
There is one more sign the cases themselves did not stop. The enforcement file holds 5,205 case
numbers in the NPD-2026- series, and every one of them is dated on or before April 30. The 311
feed, meanwhile, is still issuing numbers in that same series; the most recent row The Stare pulled
was NPD-2026-15583, opened September 8, 2026. The cases kept being numbered. The record of what
was found in them did not keep being published.
The second catch: two status columns, opposite answers
Suppose you find your address and it shows a violation. You want one thing: is it fixed?
The file answers twice and the answers disagree. case_status describes the enforcement case.
vio_status describes the violation. Cross-tabulate them across all 174,999 rows and the
disagreement is not marginal:
- 18,797 rows read
case_status=In-Violationandvio_status=In Compliance. The case is open. The problem is recorded as fixed. - 1,093 rows read the reverse.
vio_status=In Violationwhile the case readsIn-Compliance,Complete, orDuplicate-Closed. The case is shut. The violation is not.
That is 19,890 rows, 11.4 percent of the file, where the city’s own two columns contradict each other about whether the condition at that address still exists. On the first group the practical effect is a property carrying an open citation for something already cleaned up; 18,797 of the 30,855 “In-Violation” cases, 61 percent of them, are in exactly that state.
Neither column is the answer. date_resolved is, because it is the only field that puts a day
on it. If it is empty, nobody has recorded a fix. If it carries a date, someone did, whatever the
two statuses say.
The file also records what happens when a case does not resolve. 1,681 rows carry the violation status “In Violation (Transferred to Courts)”, 115 cases read “Court Case Pending”, and 480 are marked “Closed at Municipal Court”. The municipal-court route is real, and it is about one percent of the file.
The third catch: the date range is a lie of arithmetic
Ask the file its own minimum and maximum and it says April 29, 2005 to October 21, 2029.
Both are single stray rows. Exactly one row is dated in the future, and the window from January 2006 through December 2020 holds zero rows. Not few. Zero. Thirty-five more rows carry no date at all.
So the file’s real coverage is 2021 through April 2026, and its year-by-year shape is: 33,228 violations in 2021, 37,584 in 2022, 27,746 in 2023, 26,989 in 2024, 34,851 in 2025, and 14,564 in 2026 through April 30. Anyone who reads the maxima and reports “24 years of Kansas City code enforcement” has a confident, well-formed, wrong number.
Everything before that is in nhtf-e75a, and it is a genuinely different file rather than a longer
one: 799,671 rows from December 5, 2009 to September 30, 2021, last updated by the portal on
September 13, 2022. It stores the address in a column called address, not street_address. It
codes violations with short mnemonics like NSWLWEED beside the ordinance number, where the current
file uses the section alone. It carries a neighbourhood name and a police district, which the
current file does not. If you want the full history of an address you have to search both and
reconcile them by hand, and the nine months from January to September 2021 appear in both.
A trap for anyone counting
If you use this file to say what Kansas City cites people for most, do not group on the violation description. It is a genuinely interesting question, because the answer turns out to be yards rather than buildings, and grouping that way will get it wrong.
The same code section appears under two different wordings. Section 48-25 splits into “LITTER, TRASH, REFUSE AND RUBBISH LOCATED ON THE PREMISES” at 36,740 rows and “RUBBISH, LIMBS AND BRUSH ON THE PROPERTY” at 8,107. Section 48-30 splits 17,757 and 16,443 between two descriptions of rank weeds. Section 48-32 splits 24,446 and 3,922. Group by the text and you will publish the second- biggest violation in Kansas City as about half its real size.
Grouping on the section number is better and still not clean: 56-132 appears as both 56-132
(6,827) and 56-132 (B) (4,903), the same provision with a subsection tacked on.
Normalised, the top of the list as of September 12, 2026 is:
| Code section | What it is | Rows |
|---|---|---|
| 48-25 | Litter, trash, refuse and rubbish on the premises, including cut limbs and brush | 44,931 |
| 48-30 | Rank weeds: any vegetation 10 inches or more, but not trees over 6 feet | 35,666 |
| 48-32 | Open storage of items in conflict with the section | 28,368 |
| 48-27 | Motor vehicles without current plates, or wrecked, on the premises | 13,252 |
| 48-28 | A vehicle parked on a surface that is not solid and all-weather | 9,796 |
| 56-132 | Exterior surface material: peeling, cracked or blistered paint | 6,827 |
Five of the top six are Chapter 48, nuisances, and four of those five are about what is in a yard. The property maintenance code, Chapter 56, does not appear until sixth.
What to do if you actually need to know, today
The honest answer is that for anything after April 30, 2026 the free files will not tell you, and you have to ask a person.
Enforcement is run by the city’s Neighborhood and Community Services department, which appears in the 311 data under the work group “NHS Preservation”. To report a violation, or to ask the status of a case whose number you have from the 311 feed, the city’s route is 311 itself, by phone or through the myKCMO app. That is the same channel the 311 dataset is recording, where “Phone Answered” and “Staff (Internal)” show up as the source on individual rows.
Three free checks, in order, are still worth running before you call anyone:
vq3e-m9geon the address, for the ordinance and the finding, good through April 30, 2026.nhtf-e75aon the same address, for 2009 to 2021.tezm-fh2eon the address, for whether anyone has complained since. 4,709 of its 8,272 rows were opened after April 30, 2026, so this is the only file that knows about the summer.
The warning that matters most if you are buying: a clean record in a file that stopped being written is not a clean property. It is a clean record as of April 30, 2026, and nothing more.
How to check us
Every number above came from one unauthenticated request each against the city’s own data service, on September 12, 2026. No key, no account. Here is an address search as a plain web request rather than the portal’s search box (with a placeholder address that is not real and returns nothing):
Search violations at one address, the obvious wayOptional — for people who use a terminal
# Search violations at one address, the obvious way
curl "https://data.kcmo.org/resource/vq3e-m9ge.json?\$where=street_address%20like%20'%251234%20Example%20St%25'"Here is the fix that defeats the case-sensitivity bug entirely, wrapping the column in upper() on
both sides:
The same search, written so the capitals cannot break itOptional — for people who use a terminal
# The same search, written so the capitals cannot break it
curl "https://data.kcmo.org/resource/vq3e-m9ge.json?\$where=upper(street_address)%20like%20'%251234%20EXAMPLE%20ST%25'"The count of the 135-day hole is this:
Count the violations recorded in the 135-day holeOptional — for people who use a terminal
# Count the violations recorded in the 135-day hole
curl "https://data.kcmo.org/resource/vq3e-m9ge.json?\$select=count(*)&\$where=date_found%3E'2026-04-30T23:59:59'%20AND%20date_found%3C'2026-09-13'"It returned 0. The test that rules out a system migration is this:
The permits filed over the same window, for comparisonOptional — for people who use a terminal
# The permits filed over the same window, for comparison
curl "https://data.kcmo.org/resource/w8jz-wjgn.json?\$select=count(*)&\$where=issue_date%3E'2026-05-01'%20AND%20issue_date%3C'2026-09-13'"It returned 16161. The captures behind every other figure are archived with the story.
Quick answers
- How do I find out if a house in Kansas City has code violations?
- Open the city's open-data portal at data.kcmo.org and find dataset vq3e-m9ge, 'EG NPD Violations'. Search the address in the dataset page's search box, which ignores capitalization. If you use the street_address column filter instead, type it in title case, exactly as the city stores it: '3809 Washington St', not '3809 WASHINGTON ST', because that filter is case-sensitive and fails silently, returning a clean zero rather than an error, so an address typed in capitals reads as a property that has never been cited. Each row is one alleged violation and carries the case number, the Kansas City municipal code section, the ordinance text, the inspector's corrective action in plain words, the date it was found, the date to comply, and the date resolved. It is free and needs no account or records request. For violations before 2021, repeat the search in the older file, nhtf-e75a, where the address column is called address instead.
- How current is Kansas City's code violation data?
- It is not current. The Kansas City Stare pulled the full file on September 12, 2026 and found that 'EG NPD Violations' ends on Thursday, April 30, 2026. It holds zero rows for every day from May 1 to September 12, and max(date_resolved) is also April 30, so none of the 30,855 cases it shows as 'In-Violation' has been recorded as resolved since then either. The feed did not slow down; it stopped in both directions on the same day. The city's own maps and dashboards built on that file therefore all show April, including the property-violations map qvhx-kdqi and the 'open violations, exterior building issues' view w5nm-8qv8.
- Did Kansas City switch enforcement systems in May 2026?
- That is the obvious explanation and it does not survive a check. 'City Issued Permits', dataset w8jz-wjgn, comes from the same EnerGov system and the same city portal, and it holds 16,161 permits issued between May 1 and September 12, 2026, updated as recently as September 8. EnerGov is still feeding the portal. Only the violations half stopped. The Kansas City Stare has not established why and does not assert a reason; what is established is that the public record of code enforcement in Kansas City has a 135-day hole in it and a comparable feed from the same system does not.
- Why does a Kansas City violation say 'In-Violation' when it has been fixed?
- Because the file has two status columns and they do not agree. case_status describes the enforcement case; vio_status describes the violation itself. On 18,797 rows, the case reads 'In-Violation' while the violation reads 'In Compliance' — the case is still open, the problem is recorded as fixed. On another 1,093 rows the reverse is true: the violation reads 'In Violation' while the case reads 'In-Compliance', 'Complete', or 'Duplicate-Closed'. That is 19,890 rows, 11.4 percent of the file, where the two columns disagree about whether the problem at that address still exists. Read both, and read the date_resolved column, which is the only field that puts a day on it.
- What are the most common code violations in Kansas City?
- Overwhelmingly yards, not buildings. Counting the 174,999 rows in 'EG NPD Violations' by municipal code section: 48-25, litter, trash, refuse and rubbish on the premises, 44,931; 48-30, rank weeds, meaning vegetation 10 inches or more in height, 35,666; 48-32, open storage of items in conflict with the code, 28,368; 48-27, motor vehicles without current plates or wrecked on the premises, 13,252; 48-28, parking on a surface that is not solid and all-weather, 9,796. The first building-condition section on the list is 56-132, exterior surface material and peeling paint, at 6,827. Do not count these by grouping on the violation description: the same section appears under two different wordings, splitting 48-25 into 36,740 and 8,107, 48-30 into 17,757 and 16,443, and 48-32 into 24,446 and 3,922.
- How far back do Kansas City code violation records go?
- To December 2009, but not in one file. 'EG NPD Violations' looks like it spans 2005 to 2029 because min(date_found) returns April 29, 2005 and max returns October 21, 2029; both are single stray rows. The window from January 2006 through December 2020 holds exactly zero rows, and 35 rows carry no date at all. Its real coverage is 2021 through April 30, 2026: 33,228 violations in 2021, 37,584 in 2022, 27,746 in 2023, 26,989 in 2024, 34,851 in 2025, and 14,564 in 2026 through April. Everything from December 5, 2009 to September 30, 2021 is in the separate historical file nhtf-e75a, 799,671 rows, which the portal last updated on September 13, 2022 and which uses different column names for the same things.
- Can I see code complaints filed in Kansas City this month?
- Only the complaint, not the outcome. The one live route is dataset tezm-fh2e, 'Open Property Violations', which is a filtered view of the city's 311 service requests and was updated September 8, 2026. It holds 8,272 rows, 4,709 of them opened after April 30, 2026, with the address, the sub-type such as Weeds, the date opened, the reporting channel, and the council district. What it does not carry is the ordinance, the inspector's finding, the corrective action, or a compliance date. Its work-order numbers are in the same NPD series as the enforcement file — NPD-2026-15583 on the most recent row The Stare pulled — so the two are the same cases seen from two ends, and the end that records what an inspector actually found stops in April.
- Who enforces property codes in Kansas City, Missouri?
- The city's Neighborhood and Community Services department, whose work group appears in the 311 data as 'NHS Preservation'. The sections it enforces are Chapter 48 of the Kansas City municipal code, nuisances, and Chapter 56, the property maintenance code. Where a case is not resolved, the file records it going to court: 1,681 rows carry the violation status 'In Violation (Transferred to Courts)' and a further 115 cases read 'Court Case Pending', against 480 marked 'Closed at Municipal Court'. The city's main website, kcmo.gov, refuses automated requests, so The Stare describes only what the data and the portal show.
- Is there a free way to check violations before buying a house in Kansas City?
- Yes, and it is the same free file, with one warning that matters more here than anywhere else. Search vq3e-m9ge and nhtf-e75a on the address, and read date_resolved rather than either status column. But because the current file stops on April 30, 2026, an address with a clean record in it has a clean record only up to that date, and any violation found in the 135 days since would not appear. Cross-check the 311 feed tezm-fh2e for a complaint, and the permit file w8jz-wjgn for whether work was ever permitted. A clean record in a file that stopped being written is not a clean property.