Municode Records Scraper avatar

Municode Records Scraper

Pricing

from $11.99 / 1,000 result items

Go to Apify Store
Municode Records Scraper

Municode Records Scraper

Scrapes municipal meeting minutes, agendas, resolutions, and ordinances from Municode by state, municipality, and document type. Returns each document as a flat row with source URL.

Pricing

from $11.99 / 1,000 result items

Rating

3.0

(1)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

6 days ago

Last modified

Share

ParseForge

Municode Records Scraper

Scrape municipal meeting minutes, agendas, resolutions, and ordinances from Municode, up to a million documents per run. Every record comes with the municipality, document type, meeting date, and a direct link to the source. No login or API key. Export to CSV, JSON, Excel, or XML.

Municode hosts public meeting records for thousands of US cities and counties, but there is no bulk download or official API for researchers. This Actor reads the public document indexes directly, filtered by state, municipality, document type, and year range, and returns each match in one fixed schema.

Who uses itWhat they scrape Municode for
Local government reportersTrack what a city council discussed or voted on last month
Civic tech developersBuild a searchable archive of local decisions for a region
Policy researchersCompare how different municipalities handle a specific issue
Legal professionalsPull ordinances and resolutions for a client's compliance review
Data journalistsCollect meeting records across a state for a trend analysis

What it does

This Actor collects municipal meeting minutes, agendas, resolutions, and ordinances from Municode by state, municipality, or document type, and returns each one as a flat row.

  • ๐Ÿ“„ Document types: minutes, agendas, resolutions, ordinances, or all of them in one run.
  • ๐Ÿ“ Geographic filters: target one state, one municipality, or a city name across the whole US.
  • ๐Ÿ“… Year range: limit results to documents from a start year, an end year, or both.
  • ๐Ÿ”— Direct links: every record includes the source URL on Municode for verification.
  • โš™๏ธ Flexible input: use state abbreviation, municipality name, or exact municipality ID.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with Municode data

๐Ÿ“ฐ Local news monitoring.

A reporter sets the state to Texas and document type to minutes, then reviews the latest meeting records for every city in the state to find story leads.

๐Ÿ›๏ธ Ordinance research.

A legal analyst filters by municipality name and document type ordinances to collect all short-term rental rules passed since 2020 for a client report.

๐Ÿ“Š Cross-city policy study.

A policy researcher scrapes agendas from 50 municipalities in one state and compares which topics appear most often in the last two years.

๐Ÿ—‚๏ธ Civic archive building.

A civic tech developer runs the Actor weekly with document type all and stores the results in a public database of local government actions.

Why choose this scraper

What you get
No official APIMunicode does not offer a public bulk API, so this Actor reads the indexes directly
One fixed schemaEvery document returns the same flat fields, ready for CSV or a database
Scale to a millionCollect up to 1,000,000 documents per run, enough for a whole state
Verifiable sourcesEach row includes the original Municode URL for citation or audit

How it compares

No other Store actor targets Municode the same way, so the honest comparison is with the alternatives teams actually weigh.

Municode Records ScraperBuild it in-houseBy hand
SetupRun it now, zero configDays of engineeringNone, but hours per pull
When Municode changesMaintained for youYou fix itYou re-learn the page
Proxies, retries, anti-botBuilt inYour problemBrowser only
OutputFixed JSON schema, CSV/Excel exportWhatever you buildCopy-paste
CostPay per resultEngineering timeAnalyst hours

Configure the run

Drive the Actor from state abbreviations, municipality names, municipality IDs, and document types, alone or together, and filters run as each document is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
"maxItems": 10,
"stateAbbr": "tx",
"municipalityName": "Abilene",
"documentType": "minutes"
}

A larger pull:

{
"maxItems": 200,
"stateAbbr": "tx",
"municipalityName": "Abilene",
"documentType": "minutes"
}

Pricing

Pay-per-result: $0.01599 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$1.60
1,000 results$15.99
10,000 results$159.90

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Municode Records Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to Municode through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/municipal-meeting-minutes-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check your filters. A municipalityName that is too specific or a startYear after the latest available document will return nothing. Try broadening the state or removing the year range.

Why does the run stop before maxItems?

The Actor stops when it has read all matching documents on Municode. If your filters are narrow, the total available may be less than maxItems.

How do I find the municipality ID?

You can usually find it in the Municode URL for the municipality's page. If you do not know it, use municipalityName or city instead.

Why are some documents missing from my results?

Municode may not have digitized every historical document. The Actor only returns what is publicly listed on the site.

Can I scrape a municipality that is not on Municode?

No. This Actor only works with municipalities that publish their records on Municode. Check the site first to confirm coverage.

FAQ

QuestionAnswer
What is Municode?Municode is a platform operated by CivicPlus that hosts municipal codes, meeting minutes, agendas, resolutions, and ordinances for thousands of US local governments.
Do I need an API key or login?No. The Actor reads the public document indexes on Municode directly, so no registration or authentication is required.
Can I scrape all states at once?Yes. Omit the state abbreviation field and the Actor will process every state that Municode covers, subject to the maxItems limit.
What document types can I collect?You can choose minutes, agendas, resolutions, ordinances, or all. The default is minutes.
How do I filter by a specific city?Use the municipalityName field for a partial, case-insensitive match, or the municipalityId field for an exact Municode ID. The city field also filters by city name.
Can I limit results to a date range?Yes. Set startYear and endYear to include only documents from that period. Both are optional.
What does each result row contain?Each row includes the municipality name, state, document type, meeting date, document title, and the direct URL to the source on Municode, along with other metadata.
Is there a limit on how many documents I can scrape?You can set maxItems up to 1,000,000 documents per run. The default is 10.
What output formats are supported?The Actor exports to CSV, JSON, Excel, and XML through the Apify platform.
Can I schedule this Actor to run regularly?Yes. Use Apify's scheduler to run it daily, weekly, or monthly and collect new meeting records automatically.

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by CivicPlus, LLC. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.