MyTown · Research
Primary-source US local-government records · CC BY 4.0
This is a queryable snapshot of the MyTown corpus: records from US city councils, county boards and school districts, together with the public disclosure data that sits beside them. The meeting layer is collected from each government's own agenda portal (over a dozen different vendor platforms), and the rest comes from state comptrollers, state disclosure agencies and federal sources, with every row keeping the URL of the document it was read from. What is unusual here is the evidence trail: where a dollar figure, a decision or a vote was extracted from a document, the verbatim supporting text is stored in the row next to it, so you can read the sentence before you quote the number. The limits are just as real: coverage follows whatever each government actually chooses to publish, so some places have full minutes with named roll calls while many have only an agenda, and several tables cover a handful of states rather than the country. Parts of the corpus are machine-extracted, and a few tables are discovery indexes whose amounts must not be added together, so read the methodology before you publish anything from here.
94,727,099 rows across
74 tables · 8,372 governments in this
snapshot · rebuilt nightly from the live database
Rows are rows, not distinct events. One procurement or one meeting
can appear in several rows and in more than one table, so a count(*) is not a
count of things that happened.
Data dictionary: every table, its grain and its caveats →
01
Explore prepared investigations
Saved queries with their caveats written into them. Start here if you want a figure you can defend in print.
- Surveillance and police technology: the conservative total deduped, stated amounts only, a floor rather than a total
- What is wrong with that table, counted duplicates, "not to exceed" ceilings, suspect attribution
- Line items for one vendor, with the quote and the source document
- Vendor totals by record type run this before quoting any vendor total; federal awards are not local spending
- Awards, contracts and payments for one vendor
- How one town's council voted name search; the largest councils can exceed the query time limit
02
Query the database
Read-only SQL over the whole snapshot. Every result exports as CSV or JSON, and the query travels in its own URL, so a query is citable.
select mu.name as government, m.meeting_date,
mv.motion, mv.member_name, mv.vote,
coalesce(m.minutes_url,
m.agenda_url) as source_doc
from member_votes mv
join meetings m on m.id = mv.meeting_id
join municipalities mu on mu.id = mv.muni_id
where mv.meeting_id = 870314
order by mv.motion, mv.member_name
The full roll call of one Denver City Council meeting, 20 July 2026: every named
member's vote on every motion, next to the minutes PDF it was read out of. Change the
meeting_id for any other meeting.
Queries are capped at 9 seconds and 2,000 returned rows. Substring
searches over the multi-million-row tables (cf_transactions,
member_votes) will hit that ceiling; filter by muni_id or
state first.
03
Download for research
Two options, and they are not the same thing.
- This exact database a 39.2 GB
uncompressed SQLite file. A complete snapshot, not a sample: every table above is exported
in full. It is a point in time, rebuilt nightly, so it lags the live database, and how far
behind varies by table. The methodology page carries the
per-table detail. Two tables in it are research-use only and are excluded from the
redistributable dataset:
evictions(CC BY-NC-SA, non-commercial) andmobility_outcomes(no explicit open license). - The packaged open dataset the CC BY 4.0 release of the core meeting layer (municipalities, meetings, briefs, decisions, extracted agenda and minutes text, transcripts, demographics) as gzipped SQLite, mirrored to Hugging Face as Parquet. Smaller, license-clean, and the right choice if you want the core rather than everything.
- One result at a time: add
.csvor.jsonto any table or query URL.
Data license: CC BY 4.0 · Data source: MyTown
mytown-research
94,727,099 rows across 74 tables
Full-text search indexes for briefs, decisions,
meeting_attachments and member_votes are held in separate FTS5
tables and are not counted above: they are search internals for those four tables, not
additional records.
cf_transactions, food_inspections, professional_licenses, member_votes, lobbying_registrations, ...