LA City APIlacity.org ↗
Access LA City Council meeting calendars, archived meetings back to 2008, council files, referrals, journals, and board/commission data via a structured API.
What is the LA City API?
The LA City Clerk API provides 8 endpoints covering the full lifecycle of Los Angeles City Council activity — from upcoming meeting schedules to council file documents and committee referrals. Use get_council_file_detail to retrieve a file's complete document list and activity history by council file number, or get_archived_meetings_by_year to pull historical meeting records going back to 2008. Every response returns structured fields ready for programmatic use.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/c51b39b0-385e-4482-b5bb-38af98531e45/get_meeting_calendar' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace lacity-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: LA City Clerk SDK — meetings, council files, and governance documents."""
from parse_apis.la_city_clerk_api import LACityClerk, CouncilFileNotFound
client = LACityClerk()
# List upcoming meetings with documents and video links
for meeting in client.meetings.upcoming(limit=3):
print(meeting.title, meeting.date, meeting.time, meeting.video_url)
# Search council files by keyword and drill into the first result
summary = client.councilfilesummaries.search(query="budget", limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.council_file_number)
for doc in detail.documents[:3]:
print(doc.title, doc.url)
# List all committees
for committee in client.committees.list(limit=5):
print(committee.name, committee.id)
# List current referral memos
for referral in client.referrals.list(limit=3):
print(referral.title, referral.date)
# Typed error handling for a non-existent council file
try:
bad = client.councilfilesummaries.search(query="99-9999", limit=1).first()
if bad:
bad.details()
except CouncilFileNotFound as exc:
print(f"Council file not found: {exc.cf_number}")
# Browse archived meetings for a specific year
for meeting in client.meetings.by_year(year=2024, limit=3):
print(meeting.title, meeting.date_time)
print("exercised: meetings.upcoming / councilfilesummaries.search / details / committees.list / referrals.list / meetings.by_year")
List current and upcoming meetings from the City Clerk calendar. Returns meeting details including title, date/time, committee, associated documents, and video URLs. Results are not paginated; the full list of upcoming meetings is returned in a single response.
No input parameters required.
{
"type": "object",
"fields": {
"meetings": "array of meeting objects with id, title, date_time, date, time, committee_id, committee_name, meeting_type_id, documents, and video_url"
},
"sample": {
"data": {
"meetings": [
{
"id": 18287,
"date": "Jun 12, 2026",
"time": "08:30 AM",
"title": "Personnel and Hiring Committee",
"date_time": "2026-06-12T08:30:00",
"documents": [
{
"id": 83305,
"type": "HTML Agenda",
"title": "HTML Agenda",
"pdf_url": "https://lacity.primegov.com/Public/CompiledDocument?meetingTemplateId=155150&compileOutputType=1",
"html_url": "https://lacity.primegov.com/Portal/Meeting?meetingTemplateId=155150"
}
],
"video_url": "https://youtube.com/watch?v=faGMcn8Q6xw",
"committee_id": 110,
"committee_name": null,
"meeting_type_id": 1378
}
]
},
"status": "success"
}
}About the LA City API
Meeting Calendars and Archives
get_meeting_calendar returns current and upcoming meetings with fields including id, title, date_time, committee_name, documents, and video URLs. For historical data, get_archived_meetings_by_year accepts a year integer (2008–2026) and returns the same meeting structure. To know which years are available before querying, call get_archived_meeting_years first — it returns a plain array of integers that can be fed directly into the year parameter.
Council Files and Search
search_council_files accepts a query string — either a keyword like "budget" or a council file number like "24-0001" — and returns matching records with council_file_number, title, last_changed_date, and a direct url. To go deeper, pass a file number from those results into get_council_file_detail, which returns the file's full title, an array of documents (each with title, url, and date), and an activity_history array with dated entries describing each action and associated links.
Referrals, Journals, and Committees
get_referrals lists current referral memos sent from City Council to committees, each with title, url, and date. get_journals_minutes provides the same structure for official meeting journals and minutes — the formal action records of council sessions. get_boards_and_commissions_list returns every city board, commission, and committee in the meeting portal as objects with name and id, which correspond to the committee_id fields found in meeting responses.
The LA City API is a managed, monitored endpoint for lacity.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when lacity.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official lacity.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor upcoming LA City Council committee meetings by polling
get_meeting_calendarfor schedule changes and new video URLs. - Build a council file tracker that alerts stakeholders when a specific file number gains new activity using
get_council_file_detailactivity_history. - Research historical voting patterns by retrieving archived meetings by year and cross-referencing committee names and document records.
- Index LA legislative documents for full-text search by combining
search_council_filesresults with document URLs fromget_council_file_detail. - Display current committee referrals on a civic dashboard using
get_referralsto show which items are pending committee review. - Map the complete list of city boards and commissions from
get_boards_and_commissions_listto build a directory of city governance bodies. - Archive council meeting minutes by year using
get_journals_minutesandget_archived_meetings_by_yearfor public records research.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does lacity.org have an official developer API?+
What does `get_council_file_detail` return beyond what `search_council_files` shows?+
search_council_files returns a summary: council_file_number, title, last_changed_date, and a URL. get_council_file_detail returns the full record for a specific file number, including a documents array (each entry has title, url, and date) and an activity_history array with dated entries and action descriptions — data not available in the search summary.How far back does archived meeting data go?+
get_archived_meetings_by_year endpoint covers years from 2008 through 2026. Call get_archived_meeting_years to get the exact list of available years before querying, since not all years in that range may have data.Does the API return vote counts or roll-call records for individual council members?+
Are meeting documents returned as full text, or only as links?+
title, url, and date — not as full text content. The url fields point to the source documents. The API does not currently fetch or parse document body text. You can fork it on Parse and revise to add a document-parsing endpoint if full-text extraction is needed.