City Council Watch — New Ordinances & Upcoming Meetings avatar

City Council Watch — New Ordinances & Upcoming Meetings

Pricing

$20.00 / 1,000 city querieds

Go to Apify Store
City Council Watch — New Ordinances & Upcoming Meetings

City Council Watch — New Ordinances & Upcoming Meetings

Given a list of cities, get new ordinances/resolutions filed since a date and upcoming council meeting agendas — pulled from each city's own Legistar API, the system behind most US city council websites.

Pricing

$20.00 / 1,000 city querieds

Rating

0.0

(0)

Developer

Timothy Kelvin

Timothy Kelvin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

23 days ago

Last modified

Categories

Share

Give it a list of cities. Get back new ordinances/resolutions filed since a date, and upcoming council/committee meeting agendas — pulled straight from each city's own Legistar system, the software behind most US (and some Canadian) city council websites.

Built for local journalists, government-affairs and lobbying professionals, real-estate developers tracking zoning votes, and civic-tech researchers who currently check multiple city council sites by hand.

Input

{
"cities": [{ "client": "seattle" }],
"sinceDate": "2026-07-01",
"keywordFilter": ["zoning", "housing"],
"matterTypeFilter": [],
"includeUpcomingMeetings": true
}
FieldTypeDescription
citiesarrayOne entry per city: { "client": "seattle" }. The client code is the subdomain of that city's Legistar site.
sinceDatestringOnly include matters introduced on or after this date (YYYY-MM-DD).
keywordFilterarray of stringsOnly keep matters whose title contains one of these (case-insensitive).
matterTypeFilterarray of stringsOnly keep matters whose type exactly matches one of these (e.g. "Ordinance").
includeUpcomingMeetingsbooleanAlso fetch upcoming council/committee meetings (default true).

Finding a city's client code: open that city's council site — if it's Legistar-powered, it'll redirect to or link https://<client>.legistar.com. seattle.legistar.com"seattle". Not every city runs Legistar, and not every guess matches the subdomain exactly (e.g. some counties use a different code than their common name) — an unsupported/incorrect client code fails that one city gracefully and the run continues with the rest.

Output

Two kinds of records, tagged by kind:

{
"kind": "matter",
"client": "seattle",
"matterId": 17394,
"file": "Appt 03569",
"title": "Appointment of Kelli Larsen as Director of the Office of Housing.",
"type": "Appointment (Appt)",
"status": "Committee Agenda Ready",
"body": "Housing, Arts, and Civil Rights Committee",
"introDate": "2026-07-28T00:00:00",
"agendaDate": "2026-08-12T00:00:00",
"passedDate": null,
"url": "https://seattle.legistar.com/LegislationDetail.aspx?ID=17394&GUID=..."
}
{
"kind": "meeting",
"client": "seattle",
"eventId": 6814,
"body": "Select Committee on the Comprehensive Plan",
"date": "2026-08-05T00:00:00",
"time": "9:30 AM",
"location": "Council Chamber, City Hall\r\n600 4th Avenue\r\nSeattle, WA 98104",
"agendaStatus": "Final",
"agendaFile": "https://legistar2.granicus.com/seattle/meetings/.../Agenda.pdf",
"url": "https://seattle.legistar.com/MeetingDetail.aspx?..."
}

How it works

Direct calls to each city's own Legistar Web API — no scraping, no proxy, no key:

  • Matters (legislation): webapi.legistar.com/v1/{client}/matters
  • Events (meetings): webapi.legistar.com/v1/{client}/events

Both are OData endpoints with server-side date filtering (MatterIntroDate ge datetime'...'), so this actor only pulls what's actually newer than sinceDate/today rather than filtering client-side after downloading everything.

Pricing note

Billed per city queried, not per matter or meeting returned — a city with 50 new ordinances this month costs the same as one with 2.