losangeles.gov APIlosangeles.gov ↗
Access LA building permits, inspections, code enforcement, certificates of occupancy, parcel zoning, and retrofit compliance data via 8 structured endpoints.
curl -X GET 'https://api.parse.bot/scraper/529a8bbd-aaca-475d-82da-568cb822cf27/search_permits_by_address?street_name=MAIN&street_number=100' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for building permits by street address. Returns matching addresses with IDs for further lookups. Results depend on exact address data in the LADBS database; some addresses may return an empty list if no matching records exist.
| Param | Type | Description |
|---|---|---|
| street_namerequired | string | Street name without prefixes or suffixes, uppercase preferred (e.g., 'MAIN', 'SPRING') |
| street_numberrequired | string | Street number (e.g., '100'). Do not use fractions. |
{
"type": "object",
"fields": {
"addresses": "array of objects with 'address' (string) and 'id' (string, use as address_id in other endpoints)"
},
"sample": {
"data": {
"addresses": [
{
"id": "630501",
"address": "Direct Match"
}
]
},
"status": "success"
}
}About the losangeles.gov API
The Los Angeles LADBS API provides 8 endpoints covering the full lifecycle of building activity at any LA address — from permit search to inspection history. Starting with search_permits_by_address, you can resolve a street address into an address_id that unlocks permit lists, parcel profiles, code enforcement cases, certificates of occupancy, and seismic retrofit compliance status. All data is drawn from the LA Department of Building and Safety database.
Address Resolution and Permit Discovery
All lookups begin with search_permits_by_address, which accepts a street_number and street_name (uppercase preferred, no prefixes or suffixes) and returns an array of matched addresses, each with an id field. That id feeds into every other endpoint. A useful first step after resolving an address is get_property_permit_summary, which returns an array of sections — each with a name and count — so you can see how many permits, code enforcement cases, or certificates of occupancy exist before making individual detail requests.
Permit Details and Inspection History
get_permit_list_by_parcel returns all permits for a parcel, each containing a permit_number, a three-part ID (id1, id2, id3), job_number, and type. Pass those three ID parts to get_permit_details to retrieve summary, contact_info, clearance_info, inspector_info, status_history, inspection_history, and pending_inspections. Note that older permits may return empty string fields when detail records are not stored in the LADBS system, and parcels with very large permit counts may time out.
Parcel, Compliance, and Enforcement Data
get_parcel_profile returns zoning designations (Zone(s)), lot and tract identifiers, council district, and associated job addresses for a parcel — field availability varies by address. get_code_enforcement_info returns an array of enforcement cases with date_received, case_id, problem_description, and status. get_certificate_of_occupancy returns CoO records including cofo_number, date, and status. get_retrofit_program_info returns soft_story and non_ductile_concrete compliance status text, reflecting LA's mandatory seismic retrofit programs.
- Audit a property's full permit history before a real estate transaction using
get_permit_list_by_parcel - Check open code enforcement cases on a target address with
get_code_enforcement_info - Verify a building's certificate of occupancy status for due diligence or lending purposes
- Look up seismic retrofit compliance for soft-story or non-ductile concrete buildings via
get_retrofit_program_info - Pull zoning designations and council district assignments for parcels using
get_parcel_profile - Track inspection history and pending inspections on active construction permits via
get_permit_details - Build a property research dashboard that aggregates permit counts, enforcement cases, and CoO records by address
| 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 | 250 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 the City of Los Angeles have an official developer API for LADBS data?+
What does `get_permit_details` return, and what are its limitations?+
get_permit_details returns summary, contact_info, clearance_info, inspector_info, status_history, inspection_history, and pending_inspections for a specific permit identified by a three-part ID (id1, id2, id3) from get_permit_list_by_parcel. Older permits frequently return empty string fields because detail records are not retained in the LADBS system for historical entries.Does the API return permit valuation amounts or construction cost estimates?+
Can I search for permits across multiple addresses in a single request?+
search_permits_by_address accepts one street_number and street_name per call and returns matching addresses with their IDs. There is no batch input. Each address requires a separate call. You can fork the API on Parse and revise it to add a batch wrapper endpoint if needed.How complete is the parcel profile data returned by `get_parcel_profile`?+
get_parcel_profile returns whatever fields LADBS has on record for a given address_id, including Lot, Tract, Zone(s), Council District, and job_addresses. The field set is variable — some addresses return fewer fields than others depending on what is stored in the underlying LADBS database. There is no guaranteed minimum set of fields for every parcel.