Guide

How to look up how your city council member voted in Kansas City

Every roll call the Kansas City Council takes is published, free, with each of the thirteen members named. The city's vendor will also hand you a members list that mixes people who left office in 2023 with people serving today, a former councilwoman who appears twice under flags that contradict each other, and — if you ask the ordinary way — a roster that silently omits the entire sitting council. Here is how to get the vote, and how to not get the wrong person.

The Kansas City Council votes in public, and it writes down how each member voted. That record is online, free, requires no account, and almost nobody outside City Hall knows it exists.

Getting it takes about a minute. The part worth 900 words is what the record will do to you if you trust the first screen it shows you.

The one-minute version

The city publishes its legislative record through a Granicus product called Legistar, at kansascity.legistar.com.

  1. Open Calendar. Find the meeting you care about. Full Council meets Thursday afternoons at 2 p.m.; the three standing legislative committees (Finance, Governance and Public Safety, Neighborhood Planning and Development, and Transportation, Infrastructure and Operations) meet Tuesdays, and that is where most legislation gets its first recorded vote.
  2. Click the meeting, then Meeting details. You get the agenda, and, once the clerk has processed it, the minutes.
  3. Find your item. Ordinances and resolutions carry a file number, a six-digit number like 260740. That number, not the title, is the thing to write down. Titles change; the file number does not.
  4. Open the item. Where the Council took a recorded vote, you get every member’s name and how they voted, plus who moved it and who seconded.

If you already know the file number, skip the calendar: Legislation search takes it directly.

That is the method. Now the four ways it will mislead you.

Catch one: the roll call only exists at the decision points

We took the most recent Council meeting on the books, Thursday, August 20, 2026, and counted every item.

Seventy-one items on the agenda. Forty-two of them tied to a piece of legislation. Of those forty-two, twelve carry a per-member roll call. Thirty do not.

The thirty are not missing. Every one of them carries a recorded action: referred, received and filed, Move To Introduce. The Council did something to each of them. It simply did not do it by a vote with names attached. Those are the procedural motions that move a bill to committee, receive a communication, or put an ordinance on the calendar for the first time.

The practical consequence: if you look up an ordinance and find no votes, that is usually not a gap in the record. It means the Council disposed of it without a recorded roll call, and the story of what happened to it is in the minutes rather than the vote tally. A bill that dies by being referred and never returning has no vote to look up. That absence is the finding, and it is the one most easily mistaken for a broken website.

When the roll call does exist, it is complete. Here is one, in full: the vote on file 260740, an ordinance authorizing the city manager to apply for Missouri Highways and Transportation Commission grant agreements, passed August 20:

Quinton Lucas, Aye · Kevin O’Neill, Aye · Nathan Willett, Aye · Lindsay French, Aye · Wes Rogers, Aye · Melissa Patterson Hazley, Aye · Melissa Robinson, Aye · Crispin Rea, Aye · Eric Bunch, Aye · Darrell Curls, Aye · Ryana Parks-Shaw, Aye · Andrea Bough, Aye · Johnathan Duncan, Aye

Thirteen names. Twelve council members and the mayor, everyone accounted for. When a member is absent, the record says so in the same list, as Excused or Out, rather than dropping the name. An absence is recorded, not omitted, which is the property that makes this record worth anything.

Catch two: the members page will hand you people who left in 2023

The obvious place to start is the portal’s Members page. Do not start there.

It lists twenty-two people. Its three columns are “Person Name,” “E-mail” and “Web Site.” There is no district, no term, no indication of who currently holds office, and no voting record link at all. The page that is named after the people is the one page that will not tell you how they voted.

Thirteen of those twenty-two are the sitting Council. The other nine are former members, among them Katheryn Shields, Teresa Loar, Heather Hall, Dan Fowler and Kevin McManus, all of whom left the Council in 2023. Nothing on the page separates the two groups.

Catch three: the field named “active” does not mean in office

Underneath the portal, the same records are served by an open API, and each person record carries a flag called PersonActiveFlag. It reads exactly like the answer to “is this person on the council.”

It is not.

Teresa Loar and Katheryn Shields both left the Council in 2023. Both are flagged 1. Heather Hall and Dan Fowler left at the same time. Both are flagged 0. Two pairs of people, one exit, opposite flags.

We are not going to tell you what that field is for. The vendor publishes no definition we could find, and guessing at it is how people end up printing something false. We will tell you what it demonstrably cannot do, which is separate sitting council members from people who are not on the council.

It gets one degree stranger. Teresa Loar appears in the record twice: two separate person entries, carrying the same teresa.loar@kcmo.org address, one flagged 1 and one flagged 0. The system holds two answers about the same person and does not reconcile them.

Catch four: ask for the roster the ordinary way and the sitting council vanishes

The API caps any single request at one thousand rows. Ask it for the people and it returns exactly one thousand: a full-looking list, no error, no warning, nothing to suggest anything is missing.

What is missing is the current Council. The seven members seated in August 2023 (Nathan Willett, Lindsay French, Wes Rogers, Melissa Patterson Hazley, Crispin Rea, Darrell Curls and Johnathan Duncan) carry the highest record numbers in the system, and the cap cuts the list off just short of them. The default request returns a thousand names and none of the newest council members.

This is the failure mode worth naming, because it is the one that produces a wrong story rather than no story: a query that returns a large, well-formed, plausible result that is silently incomplete. Nothing about the output announces the truncation.

The field that actually answers it

There is a correct way, and it is a different record: officerecords, which carries a person’s seat on a body with a start date and an end date.

Nathan Willett’s reads Council / Councilmember / 2023-08-01 to 2027-07-31. Teresa Loar’s Council-side records end 2023-08-01. Katheryn Shields’ end 2023-07-31. No interpretation required: the dates are the answer, and they come from the clerk’s own bookkeeping rather than from a flag.

For someone currently serving, you do not need a terminal to see it. Click their name from the Members page (or from any roll call above) to reach their own profile page. Scroll to the table the portal labels “Committees,” the same officerecords data, just rendered under a name a reader would not think to look for. Buried in it is a row that reads simply Council, with a title of Councilmember and the seat’s start and end date. Willett’s page shows exactly that: Council | Councilmember | 8/1/2023 | 7/31/2027.

It stops working the moment someone leaves. That “Committees” table only shows current terms by default, so a former member’s Council row disappears from their own profile page along with everything else about the seat they used to hold. Loar’s page, checked the same way, shows nothing about her Council service at all. The free, no-terminal path answers the question for a sitting member and goes quiet on exactly the person you are most likely to be checking on: someone who left.

For a former member, or for the raw record rather than the page’s rendering of it, the same data is one request, no key and no account:

Find a council member's record ID by last nameOptional — for people who use a terminal
# Find a council member's record ID by last name
curl -s "https://webapi.legistar.com/v1/kansascity/persons?\$filter=substringof('Willett',PersonLastName)"

Take the PersonId it returns, and ask for the terms:

Read the terms that member actually servedOptional — for people who use a terminal
# Read the terms that member actually served
curl -s "https://webapi.legistar.com/v1/kansascity/persons/3566/officerecords"

Without a terminal, the fallback for a former member is the City Clerk’s office, which keeps this bookkeeping and can read you the dates directly.

One caution on reading what comes back, on the page or from the API alike. A title in that record belongs to the body it sits under, not to the city. One person’s record here reads Economic Development Corporation | Mayor. That is the chair of an EDC board rather than the mayor of Kansas City. Read the body name and the title together, or you will misread it completely. That is the general rule for every public record in this piece: find the field the institution itself wrote, and check your reading against it.

What we could not check

The city’s own roster page at kcmo.gov refuses automated requests and returned an access-denied error every time we asked, so the current-membership statements above rest on the Legistar term dates and on the thirteen names in the August 20 roll call, not on the city’s published roster. If the city’s page and this record ever disagree, the city’s page is the one to believe about who holds office today, and we would want to know.

Everything else here we pulled ourselves on September 2, 2026, and archived. Every figure in this piece (the 71 items, the 12 roll calls, the 13 names, the contradictory flags, the truncated roster) was re-pulled and re-checked against the live API on September 6, 2026 before publication, and all of it still held. Fees, waits and web addresses rot; the file numbers and the roll calls do not.

Why this is worth an hour

A file number, a date, and thirteen names is the smallest complete unit of accountability a city produces. It is the thing that survives a press release. When a council member tells you where they stood on something, this record is how you check, and it is sitting there, free, behind a members page that will not mention it.

Quick answers

How do I find out how my Kansas City council member voted?
Go to kansascity.legistar.com and open the Calendar. Find the Council meeting for the date you want, open Meeting details, and locate your item by its six-digit file number. Where the Council took a recorded vote you get every member's name and how each one voted, plus who moved the measure and who seconded it. It is free and requires no account.
Are Kansas City council votes public?
Yes. The city publishes its full legislative record, including per-member roll calls, through a Granicus Legistar portal that requires no login, no account and no records request. The Kansas City Stare confirmed on September 2, 2026 that the underlying data service answers unauthenticated requests.
Why is there no vote listed on a Kansas City ordinance?
Because the Council disposed of it without a recorded roll call. The Stare counted every item on the Council's August 20, 2026 agenda: 71 items, 42 tied to legislation, 12 carrying a per-member roll call and 30 carrying none. All 30 still carry a recorded action such as referred, received and filed, or Move To Introduce. A missing vote is usually a procedural disposition rather than a gap in the record, and what happened to the bill is in the minutes.
How many members are on the Kansas City Council?
Thirteen: twelve council members and the mayor. A complete roll call lists all thirteen names. When a member is absent the record still lists them, marked Excused or Out, rather than dropping the name, which is the property that makes the record worth checking.
When does the Kansas City Council meet?
Full Council meets Thursday afternoons at 2 p.m. The three standing legislative committees, Finance Governance and Public Safety, Neighborhood Planning and Development, and Transportation Infrastructure and Operations, meet on Tuesdays, which is where most legislation gets its first recorded vote.
How do I tell whether someone is currently on the Kansas City Council?
Not from the portal's Members page, which lists 22 people with no district, no term dates and no indication of who currently holds office. Click into a sitting member's own profile page instead and look at the table labeled Committees, which despite the name is the same officerecords data: a row reading Council, Councilmember, with a start and end date. Nathan Willett's reads Council, Councilmember, 2023-08-01 to 2027-07-31. That row disappears once someone leaves office, so for a former member the only reliable route is asking the City Clerk's office directly, or the same officerecords data by API for anyone with a terminal.
Does the active flag in Legistar mean a person is in office?
No. The Kansas City Stare verified on September 2, 2026 that Teresa Loar and Katheryn Shields, who both left the Council in 2023, are flagged active, while Heather Hall and Dan Fowler, who left at the same time, are not. Teresa Loar also appears twice in the system under two records carrying contradicting flags and the same city email address.
What is a Kansas City ordinance file number?
It is the six-digit number, such as 260740, that identifies a piece of legislation across every stage of its life. Titles change and get substituted; the file number does not. It is the thing to write down, and it lets you skip the calendar entirely by searching Legislation directly.
NewsServicePublic RecordsCity CouncilKansas City
A Stare original. More stories · The Wire