Legistar Agendas, Legislation & Votes Scraper avatar

Legistar Agendas, Legislation & Votes Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Legistar Agendas, Legislation & Votes Scraper

Legistar Agendas, Legislation & Votes Scraper

Scrape meetings, agenda items, legislation and roll call votes from any public Legistar city or county portal, with filters for city, date window and keywords, priced per result.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

M Usama

M Usama

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

What does Legistar Agendas, Legislation & Votes Scraper do?

It pulls meetings, agenda items, legislation and roll call votes from city and county portals hosted on Granicus Legistar. Pick one or more cities, a date window and optional keywords, and get clean JSON, CSV or Excel with meeting date, body, agenda item title, file number, action taken, result, attachment links and a link back to the official meeting page. Filters keep runs small, and pricing is per result.

Data source

The Actor reads the public Legistar Web API (webapi.legistar.com), the same JSON service that powers each city's *.legistar.com portal, so the data is as fresh as the city's own site.

Why use it?

  • Monitor zoning, permits, contracts, cannabis, short term rental or any other topic across many councils at once with keyword filters.
  • Find business leads: contract approvals, RFP awards and licensing items mention vendors and dollar amounts before they reach the news.
  • Track how each council member voted on a bill (roll call votes where the city records them).
  • Replace manual portal browsing, PDF agenda downloads and brittle one off scrapers.

How to use it

  1. Open the Actor and set the filters.
  2. Click Start. Download results as JSON, CSV or Excel, or read them through the API.
  3. Add a Schedule and an Integration (Slack, Google Sheets, webhook) to get new records automatically.

Input

FieldDescription
clientsLegistar client slugs, the first part of the portal address (denver for denver.legistar.com). Tested: denver, seattle, lacounty, boston, phoenix.
recordTypeagendaItems (one record per agenda item), meetings (one per meeting) or matters (legislation such as ordinances, resolutions and appointments).
keywordsKeep only records matching any keyword (case insensitive). Matched against item title, file number, type and action for agenda items, body and location for meetings, and title for legislation.
daysBackInclude meetings (or legislation introduced) from this many days ago. Default 14.
daysAheadInclude meetings scheduled this many days ahead. Default 14.
includeVotesAgenda items only. Adds each member's vote on acted on items. Slower, one extra request per item.
maxResultsHard stop for the run. You are billed per result, so this caps the cost.
proxyConfigurationApify proxy is recommended for larger runs.

Example input:

{
"clients": ["denver", "seattle"],
"recordType": "agendaItems",
"keywords": ["zoning", "contract"],
"daysBack": 14,
"daysAhead": 14,
"maxResults": 100
}

Output

Agenda item record (trimmed):

{
"id": "denver:item:238360",
"client": "denver",
"meetingId": 12969,
"body": "Community Planning and Housing",
"meetingDate": "2026-09-29T13:30:00",
"title": "Approves the landmark designation application for 740 N. Washington St - The Stonehouse, in Council District 7.",
"matterFile": "26-1405",
"matterType": "Bill",
"matterStatus": "Approved for Filing",
"action": "approved for filing",
"result": "Pass",
"mover": "Amanda Sawyer",
"seconder": "Flor Alvidrez",
"votes": [
{ "person": "Flor Alvidrez", "vote": "Aye" },
{ "person": "Paul Kashmann", "vote": "Absent" }
],
"consent": false,
"attachments": [
{ "name": "740WashingtonSt_designation_CPH_staffreport.pdf", "url": "https://denver.legistar1.com/denver/attachments/4f99599f-2250-4210-b886-2fd7f8da6234.pdf" }
],
"meetingUrl": "https://denver.legistar.com/MeetingDetail.aspx?LEGID=12969&GID=655",
"scrapedAt": "2026-10-02T08:25:20.522Z"
}
FieldMeaning
idStable key (client:type:sourceId), safe for deduplication between runs
meetingDateLocal meeting date and time in ISO format, no timezone offset (the city's local time)
matterFileThe legislation file number the item refers to
action, result, tallyWhat the body did and the outcome, when recorded
votesPer member votes, only with includeVotes and only where the city records them
attachmentsStaff reports, ordinances and exhibits linked to the item

Meeting records add agendaStatus, minutesStatus, location, agendaUrl, minutesUrl and videoUrl. Legislation records add file, type, status, introDate, agendaDate, passedDate, enactmentDate, enactmentNumber and requester.

Pricing

Pay per event: a small fee when a run starts, then a fixed price per result returned. You only pay for records that pass your filters. Set maxResults to cap any run.

Limitations

  • Only clients whose Legistar API is open to anonymous requests work. Some cities (for example New York City) require a private token and return no data. Others such as Chicago, Austin and San Francisco do not expose the API publicly.
  • Vote detail and agenda item actions depend on what each city enters. Some cities record no roll calls.
  • Legislation (matters) is filtered by introduction date and, with keywords, by title.
  • Dates are the city's local time without a timezone offset.

FAQ

Is this legal? The Actor reads data the cities publish for any visitor without a login. You are responsible for how you use the data.

How do I find a city's client slug? Look at the portal address: https://denver.legistar.com means the slug is denver.

Something is missing or broken? Open an issue in the Issues tab; response time is usually under a day.