Legistar Agenda Radar - City Council Agenda Keyword Alerts avatar

Legistar Agenda Radar - City Council Agenda Keyword Alerts

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Legistar Agenda Radar - City Council Agenda Keyword Alerts

Legistar Agenda Radar - City Council Agenda Keyword Alerts

Scan city council agendas for zoning, contract, RFP, and bid keywords across 86 U.S. cities (Chicago, Boston, Austin, Denver, and more). Returns matched items with attachment links. Optional vote records and RSS feed for Slack/Zapier alerts. No browser needed — pure API, runs on the cheapest plan.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

tyler

tyler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Legistar Agenda Radar

Get keyword alerts for zoning, contract, RFP, and bid items on city council agendas — automatically.

This tool scans public meeting agendas for 86 U.S. cities and counties that use Legistar (including Chicago, Boston, Detroit, Austin, Dallas, Atlanta, Miami, San Jose, Denver, and more). You tell it which city and which keywords to watch, and it returns every matching agenda item with direct links to the attached documents.

It runs on Apify (a cloud automation platform), uses zero browser automation, and can be scheduled to run daily.


What You Get

For every agenda item that matches your keywords, you get:

  • What it is — the agenda item title, matter title, and which committee/body it belongs to
  • When — meeting date and time
  • Where to read more — direct link to the Legistar event page
  • Attachments — direct download URLs for every PDF, Word doc, etc. attached to that item
  • Vote records (optional) — who voted and how
  • RSS feed (optional) — plug it into Slack, email, Zapier, or any feed reader for real-time alerts

You can download results as JSON, CSV, or Excel from the Apify Console.


Quick Start

Copy this into the Apify Console input editor (or save as INPUT.json locally):

{
"client": "seattle",
"daysBack": 14,
"keywords": "zoning"
}

That's it. This scans Seattle City Council agendas from the last 2 weeks for anything mentioning "zoning" and returns matching items with all their attachments.

Want to monitor multiple keywords?

Separate them with commas:

{
"client": "chicago",
"daysBack": 30,
"keywords": "zoning,RFP,contract,bid"
}

Want everything (no filter)?

Leave keywords empty:

{
"client": "boston",
"daysBack": 7,
"keywords": ""
}

Which Cities Work?

86 cities and counties are confirmed working. Here are some of the big ones:

CityClient IDCityClient ID
Seattle, WAseattleChicago, ILchicago
Boston, MAbostonDetroit, MIdetroit
San Jose, CAsanjoseDenver, COdenver
Phoenix, AZphoenixSacramento, CAsacramento
Oakland, CAoaklandPittsburgh, PApittsburgh
San Francisco, CAsfgovNashville, TNnashville
Baltimore, MDbaltimoreMilwaukee, WImilwaukee
Long Beach, CAlongbeachKansas City, MOkansascity

Watch out — some cities use non-obvious IDs:

CityYou might guess...Actual ID
Austin, TXaustinaustintexas
Dallas, TXdallascityofdallas
Atlanta, GAatlantaatlantaga
Charlotte, NCcharlottecharlottenc
Miami, FLmiamimiamifl
Minneapolis, MNminneapolisminneapolismn
Cleveland, OHclevelandcityofcleveland
Albuquerque, NMalbuquerquecabq
San Francisco, CAsanfranciscosfgov

Counties work too: kingcounty, lacounty, miamidade, broward, pinellas, mecklenburg.

See SUPPORTED_CLIENTS.md for the full list of all 86.

How to find your city's ID

  1. Google "your city" legistar and look for a URL like https://seattle.legistar.com
  2. The part before .legistar.com is your client ID
  3. If that doesn't work, try {city}{state} (e.g. miamifl) or cityof{city} (e.g. cityofdallas)

Cities that DON'T work

Some major cities use different platforms entirely (not Legistar), so they'll never work with this tool: Houston (uses Swagit), Los Angeles (uses PrimeGov), Portland (uses their own website). NYC and Philadelphia require an API key — pass yours via the apiKey input field.


All Input Options

FieldWhat it doesDefault
clientYour city's Legistar ID (see above)seattle
daysBackHow far back to search (in days)14
keywordsComma-separated keywords to match. Empty = get everything""
includeAttachmentsGrab attachment download URLs?true
includeVotesFetch vote records? (slower — extra API call per item)false
rssGenerate an RSS feed?false
maxEventsMax number of meetings to scan50
maxItemsPerEventMax agenda items per meeting200
debugShow extra logging (URLs, raw data)false
apiKeyAPI key if your city requires one (NYC, Philly)""
authHeaderNameHow to send the key: Authorization or X-API-KEYAuthorization

What the Output Looks Like

Each matching agenda item looks like this (real data from Seattle):

{
"client": "seattle",
"eventId": 6581,
"eventDate": "2026-02-10T00:00:00",
"eventTime": "2:00 PM",
"eventName": "City Council",
"bodyName": "City Council",
"agendaItemTitle": "AN ORDINANCE relating to land use and zoning; revising environmental review thresholds...",
"agendaItemOrder": 18,
"matterId": 16444,
"matterTitle": "CB 121093",
"legistarEventUrl": "https://seattle.legistar.com/MeetingDetail.aspx?LEGID=6581&GID=393&...",
"matchedKeywords": ["zoning"],
"attachmentUrls": [
"https://legistar2.granicus.com/seattle/attachments/8e51b18e-...docx",
"https://legistar2.granicus.com/seattle/attachments/57775d1e-...pdf"
]
}

RSS Feed

Set "rss": true and the actor generates an RSS 2.0 XML file saved in the Key-Value Store as OUTPUT_RSS. Plug the URL into Slack, Zapier, Microsoft Teams, or any feed reader to get notified when new matches appear.


Who This Is For

You are...You care about...Try these keywords
A GovTech sales teamRFPs and contract awardsRFP,contract,bid,procurement
A real estate developerZoning changes and permitszoning,variance,permit,rezoning
A journalistPolicy debates and votesordinance,resolution,hearing
A civic watchdogBudget and spendingbudget,appropriation,grant,funding
A lobbyist or advocateLegislation on your issuecannabis,housing,transit,climate

Running Locally

You need Node.js 18+ and the Apify CLI.

npm install -g apify-cli # one-time setup
git clone <repo-url> legistar-agenda-radar
cd legistar-agenda-radar
npm install

Create your input file:

$mkdir -p storage/key_value_stores/default

Then create storage/key_value_stores/default/INPUT.json with your settings (see Quick Start above).

Run it:

$apify run

Results appear in storage/datasets/default/ as JSON files. If you enabled RSS, the feed is at storage/key_value_stores/default/OUTPUT_RSS.xml.


Publishing to Apify

apify login
apify push

Your actor will appear in your Apify account. You can schedule it (e.g. daily at 8am), set up webhooks, or call it via API.


Under the Hood

  • Talks directly to the Legistar Web API — no browser, no scraping HTML
  • If a request fails (rate limit, server error, timeout), it retries up to 4 times with increasing waits
  • Pauses 250ms between requests to avoid hammering the API
  • If one date format is rejected, it automatically tries an alternate format
  • Runs on the cheapest Apify plan (no Playwright/Puppeteer needed)

License

ISC