City Council Agenda Scraper (Legistar, Granicus, CivicPlus) avatar

City Council Agenda Scraper (Legistar, Granicus, CivicPlus)

Pricing

from $4.00 / 1,000 council agenda monitors

Go to Apify Store
City Council Agenda Scraper (Legistar, Granicus, CivicPlus)

City Council Agenda Scraper (Legistar, Granicus, CivicPlus)

Scrape city council, county board and planning commission agendas, minutes and agenda items from Legistar, Granicus, CivicPlus AgendaCenter, PrimeGov and CivicClerk. Keyword alerts with PDF text snippets.

Pricing

from $4.00 / 1,000 council agenda monitors

Rating

0.0

(0)

Developer

ryan smith

ryan smith

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

City Council Agenda & Minutes Scraper (Legistar, Granicus, CivicPlus)

Scrape and monitor city council, county board, planning commission and school board agendas and minutes from Legistar, Granicus, CivicPlus AgendaCenter, PrimeGov and CivicClerk, with keyword alerts and PDF text snippets.

Track what your local governments are about to vote on without opening 20 different websites. You get one clean record per meeting with agenda, minutes, packet and video links, the agenda items, and the exact passages where your keywords (rezoning, data center, police budget...) appear in the agenda or minutes PDFs. Schedule it daily with Only new meetings since last run and it becomes an alert feed.

Try it now: the input is prefilled (Seattle Legistar + Wichita CivicPlus), so just click Start. A first run takes under a minute.

Supported platforms

PlatformWhat to enterAgenda/minutes linksAgenda item listNotes
Legistar (Granicus)Client name, e.g. seattle, oakland, or https://seattle.legistar.com✅✅ (with file numbers)Uses the official public Legistar Web API
CivicPlus AgendaCenterSite root or https://www.city.gov/AgendaCenter✅— (use PDF text)All categories (boards) on the site, including past years
Granicus (classic ViewPublisher)https://<city>.granicus.com/ViewPublisher.php?view_id=N✅ (+ video)— (use PDF text)
PrimeGovhttps://<city>.primegov.com✅✅
CivicClerkhttps://<tenant>.portal.civicclerk.com or civicclerk:<tenant>✅ (+ packet)✅

You can mix platforms in a single run.

Use cases

  • Journalists and newsrooms: a morning digest of every agenda posted in your coverage area; keyword alerts for settlement, no-bid, emergency contract or consent decree that return the paragraph, not just the PDF; a searchable archive of minutes.
  • Lobbyists and government-affairs teams: monitor dozens of jurisdictions for ordinances that affect clients (short-term rental, franchise fee, cannabis, 5G); see items before the meeting so there is time to comment or brief a council member; push results to a CRM, Slack or Google Sheets through Apify integrations.
  • Realtors and real-estate agents: catch rezoning, annexation, variance and subdivision plat items early and tell clients what is coming to a neighborhood.
  • Developers and site selectors: follow planning commission and zoning board agendas for site plan, PUD, impact fee, data center or incentive items across every market you are evaluating.
  • Civic tech and researchers: build open meeting archives, vote trackers and transparency dashboards from structured JSON instead of scraping five platforms yourself.
  • Also used by advocacy groups and community organizers (affordable housing, bike lane, public hearing) and by consultants who sell to local government.

Verified cities and counties (tested Oct 16, 2026)

Each of these returned meetings with agenda links in a quick test fetch. Paste the value from the Input column into sources.

JurisdictionPlatformInput
Seattle, WALegistarseattle
Oakland, CALegistaroakland
Boston, MALegistarboston
Denver, COLegistardenver
Mesa, AZLegistarmesa
Kansas City, MOLegistarkansascity
Milwaukee, WILegistarmilwaukee
Columbus, OHLegistarcolumbus
Pittsburgh, PALegistarpittsburgh
Baltimore, MDLegistarbaltimore
Richmond, VALegistarrichmondva
Nashville, TN (Metro)Legistarnashville
Louisville, KY (Metro)Legistarlouisville
Jacksonville, FLLegistarjaxcityc
San Jose, CALegistarsanjose
Fresno, CALegistarfresno
Sacramento, CALegistarsacramento
Alameda, CALegistaralameda
Corpus Christi, TXLegistarcorpuschristi
El Paso, TXLegistarelpasotexas
Ann Arbor, MILegistara2gov
King County, WALegistarkingcounty
Pima County, AZLegistarpima
Clark County, NVLegistarclark
DeKalb County, GALegistardekalbcountyga
Fulton County, GALegistarfulton
Hillsborough County, FLLegistarhillsboroughcounty
Wichita, KSCivicPlushttps://www.wichita.gov/AgendaCenter
Murfreesboro, TNCivicPlushttps://www.murfreesborotn.gov/AgendaCenter
San Marcos, TXCivicPlushttps://www.sanmarcostx.gov/AgendaCenter
Ankeny, IACivicPlushttps://www.ankenyiowa.gov/AgendaCenter
Los Angeles, CAPrimeGovhttps://lacity.primegov.com
San Jose, CAGranicushttps://sanjose.granicus.com/ViewPublisher.php?view_id=60
Lakewood, COCivicClerkhttps://lakewoodco.portal.civicclerk.com

Not every city exposes the Legistar API (for example Chicago, Philadelphia, Houston and Austin don't, and NYC needs a token). Any other city on a supported platform should work; see Finding your city's platform below.

Input

FieldDescription
sourcesList of portal URLs or Legistar client names (see the table above)
startDate / endDateMeeting date range. Defaults: 30 days back to 30 days ahead
keywordsCase-insensitive matches. Single words match whole words; phrases work too
downloadPdfTextDownload agenda and minutes (PDF or HTML), extract the text and return snippets
includeFullTextAlso include the full extracted text in each record
onlyKeywordMatchesOutput only meetings that match at least one keyword
onlyNewSinceLastRunMonitoring mode. Skips meetings already delivered. A meeting is sent again when its minutes get posted
includeItemsFetch structured agenda items (Legistar, PrimeGov, CivicClerk)
maxMeetingsPerSource, maxPdfPages, snippetCharsLimits
legistarTokensOptional { "client": "token" } for the few Legistar clients that require one (e.g. NYC)

Sample input

{
"sources": ["seattle", "denver", "https://www.wichita.gov/AgendaCenter"],
"startDate": "2026-10-01",
"endDate": "2026-11-15",
"keywords": ["zoning", "housing", "budget"],
"downloadPdfText": true,
"onlyKeywordMatches": true,
"maxMeetingsPerSource": 50
}

Sample output (one item per meeting)

{
"platform": "legistar",
"jurisdiction": "seattle",
"body": "Select Budget Committee",
"title": "Select Budget Committee",
"date": "2026-10-15",
"time": "9:30 AM",
"location": "Council Chamber, City Hall 600 4th Avenue Seattle, WA 98104",
"agendaUrl": "https://legistar2.granicus.com/seattle/meetings/2026/10/6766_A_....pdf",
"minutesUrl": null,
"detailUrl": "https://seattle.legistar.com/MeetingDetail.aspx?LEGID=6766&...",
"items": [{ "number": "1.", "title": "Policy Considerations: Seattle Police Department ...", "fileNumber": null }],
"itemCount": 17,
"keywordMatches": ["budget", "police"],
"matchedSnippets": [{ "keyword": "police", "source": "agenda", "snippet": "…Policy Considerations Seattle Police Department…" }],
"agendaTextLength": 3927
}

Other fields: meetingId, packetUrl, videoUrl, sourceUrl, agendaStatus and minutesStatus (Legistar), textErrors (for example a scanned PDF with no text layer), and scrapedAt. A RUN_SUMMARY record in the key-value store lists any sources that failed and why.

Tips

  • Finding your city's platform: open the city's "Agendas & Minutes" page. A link to *.legistar.com, *.granicus.com, *.primegov.com, *.civicclerk.com or /AgendaCenter tells you which one it uses.
  • Legistar client name: it's the subdomain. For https://oakland.legistar.com, enter oakland.
  • Monitoring: schedule a daily run with onlyNewSinceLastRun and onlyKeywordMatches turned on, then connect a Slack or email integration.

Pricing

Pay per event, starting October 29, 2026:

EventPriceWhen it is charged
Meeting$4 per 1,000 meetings ($0.004 each)each meeting record saved to the dataset
Document text$6 per 1,000 document texts ($0.006 each)each agenda or minutes document whose text is downloaded and extracted (only when downloadPdfText is on)

You only pay for results. With downloadPdfText off, a run costs just the meeting fee. Examples: a newsroom tracking 25 jurisdictions daily (about 260 meetings and 400 documents a month) pays about $3.50 a month. Pulling 1,000 meetings without text costs $4. Apify platform usage is billed separately by Apify under your plan.

FAQ

Which platforms are supported? Legistar (Granicus), Granicus ViewPublisher, CivicPlus AgendaCenter, PrimeGov and CivicClerk. You can mix them in one run.

How do I find my city's input? Open the city's "Agendas & Minutes" page. A link to *.legistar.com means Legistar (enter the subdomain, e.g. oakland); /AgendaCenter means CivicPlus (enter the site URL); *.granicus.com/ViewPublisher.php?view_id=N, *.primegov.com or *.civicclerk.com mean the others.

Can I get alerts only for new agendas? Yes. Turn on onlyNewSinceLastRun (and onlyKeywordMatches), schedule the Actor daily and connect an email, Slack or webhook integration. A meeting is sent again when its minutes are posted.

Does it search inside the PDFs? Yes, with downloadPdfText on. It returns each match with surrounding context (snippetChars). Scanned PDFs without a text layer can't be searched (no OCR) and are marked in textErrors.

Why did one of my sources fail? Some Legistar clients don't enable the public API or need a token (add it under legistarTokens). The run continues with the other sources and lists the failure in the RUN_SUMMARY record of the key-value store.

Do I need a proxy? Usually not. If a CivicPlus site rate-limits you, enable Apify Proxy.

Is this legal? It collects only public meeting records that governments publish for the public. Respect each site's terms and don't schedule runs more often than you need.

Can I export to Google Sheets or CSV? Yes. Every dataset can be downloaded as CSV, Excel or JSON, or sent to Google Sheets with an Apify integration.

Limitations

  • Scanned (image-only) PDFs have no text layer. No OCR is done; the record carries textErrors.
  • Documents larger than 40 MB (usually full agenda packets) are skipped for text extraction.
  • CivicPlus and Granicus don't publish structured item lists, so keyword search there depends on downloadPdfText.
  • Some cities' Legistar instances don't enable the public API (for example Chicago) or require a token (NYC). The run reports a clear error for that source and continues with the rest.
  • Only public data is collected. Respect each site's terms and don't schedule runs more often than you need.