Municipal Council Minutes & Agenda Scraper
OTHER
Municipal Council Minutes & Agenda Scraper
Fetch US city council meeting agendas, minutes, and documents from major municipal government platforms. Supports Legistar and PrimeGov — covering thousands of US municipalities (more platforms coming). Input a platform type and client slug to retrieve meeting records normalized into a single schema.
Features
- Supports the Legistar and PrimeGov municipal platforms (Granicus and CivicWeb coming soon).
- Returns meeting body, date, time, location, agenda status, document URLs, video URL, and source link for each meeting.
- Filter by date range (
startDate/endDate) and governing body name (bodyName). - Single flat output schema across all platforms — one query, one dataset.
Who Uses Municipal Meeting Data?
- Civic technology and government transparency tools — Track council votes, planning decisions, and public comment periods across municipalities.
- Real estate and land use intelligence — Monitor zoning hearings, planning commission approvals, and variance requests before they become public news.
- Local news and investigative journalism — Automate monitoring of city council, school board, and special district meetings.
- Government relations and lobbying — Follow agenda items relevant to clients across dozens of municipalities without manual calendar checks.
- Academic and policy research — Build longitudinal datasets of local government activity across cities and regions.
How It Works
- Choose a platform (
legistarorprimegov) and provide the municipality's client slug (e.g.chicagofor Chicago on Legistar, orlongbeachfor Long Beach, CA on PrimeGov). Each city is on exactly ONE platform. - Optionally filter by date range or governing body name.
- The scraper queries the platform's public API and returns normalized meeting records.
Input
{
"platform": "legistar",
"clientSlug": "chicago",
"startDate": "2024-01-01",
"endDate": "2024-12-31",
"bodyName": "City Council",
"maxItems": 100
}
| Field | Type | Default | Description |
|---|---|---|---|
platform |
string | legistar |
Platform vendor: legistar or primegov |
clientSlug |
string | chicago |
Municipality client slug on the platform (must match the platform — e.g. chicago, seattle on legistar; longbeach, renton on primegov) |
startDate |
string | — | Filter meetings on or after this date (YYYY-MM-DD) |
endDate |
string | — | Filter meetings on or before this date (YYYY-MM-DD) |
bodyName |
string | — | Filter by governing body name (case-insensitive substring match) |
maxItems |
integer | 10 | Maximum number of meeting records to return |
Platform & Client Slug Guide
Each platform assigns a slug to each municipality. Here are examples:
| Platform | Example Slugs | URL Pattern |
|---|---|---|
legistar |
chicago, seattle, mountainview |
{slug}.legistar.com |
primegov |
longbeach, renton |
{slug}.primegov.com |
A city is on exactly ONE platform — if a slug returns no meetings on one platform, it is almost certainly hosted on the other. To find your city's slug: visit the city's portal (e.g. chicago.legistar.com) — the subdomain is the slug.
Output Schema
Each record represents one meeting:
| Field | Type | Description |
|---|---|---|
platform |
string | Platform vendor (legistar or primegov) |
city |
string | Municipality client slug |
state |
string | US state abbreviation (when available) |
body |
string | Governing body name (City Council, Planning Commission, etc.) |
meeting_type |
string | Meeting type or status |
meeting_date |
string | Meeting date (YYYY-MM-DD) |
meeting_time |
string | Meeting start time (HH:MM) |
location |
string | Meeting location or address |
agenda_status |
string | Agenda document status (Draft, Final, etc.) |
agenda_items |
string | Agenda item titles (top-level, comma-separated) |
document_urls |
string | Space-separated list of agenda/minutes document URLs |
video_url |
string | URL to meeting video recording (where available) |
source_url |
string | Canonical URL for this meeting on the platform portal |
meeting_id |
string | Platform-internal meeting identifier |
Example Output
{
"platform": "primegov",
"city": "longbeach",
"state": "",
"body": "City Council",
"meeting_type": "Regular",
"meeting_date": "2024-09-17",
"meeting_time": "5:00 PM",
"location": "City Hall - Council Chambers",
"agenda_status": "Published",
"agenda_items": "",
"document_urls": "https://longbeach.primegov.com/meeting/4567/agenda.pdf",
"video_url": "",
"source_url": "https://longbeach.primegov.com/portal/meeting?compiledMeetingDocumentFileId=4567",
"meeting_id": "4567"
}