CA LA County Building Permits (EPIC-LA)
Pricing
$1.00 / 1,000 ca epic-la permit records
CA LA County Building Permits (EPIC-LA)
LA County unincorporated building & planning cases (EPIC-LA public data, 916k records): residential / commercial / multifamily / electrical / plumbing / mechanical / solar / pool / road permits with status, valuation, dates, AIN, ADU & affordable-housing flags.
Pricing
$1.00 / 1,000 ca epic-la permit records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
CA LA County Building Permits (EPIC-LA) - Unincorporated Permit & Planning Cases
LA County Public Works publishes its entire unincorporated-area case history - every building, construction and planning case filed in the county's unincorporated communities - as open data. This actor turns that register into a charged-per-record lookup and diligence tool.
Built for: construction & development leads (who just pulled a permit, what's being built where), contractor / builder prospecting, real-estate & property diligence, ADU / affordable-housing market research, and LA County building-activity analytics.
What it covers
916,509 cases across the county's unincorporated communities (the areas outside LA's 88 city limits - Malibu, East LA, Altadena, Hacienda Heights, unincorporated Torrance / Santa Monica Mountains, and hundreds more). Two case modules:
| Module | What it is | Rows |
|---|---|---|
permits | building & construction permits - the useful slice | 614,180 |
planning | zoning / land-use plan reviews | 302,329 |
permits - the building-permit register (default)
614,180 building & construction cases, including:
| Permit type | What it is |
|---|---|
| Unincorporated Building Residential / Commercial / Multifamily | building permits (new, additions, alterations) |
| Electrical / Plumbing / Mechanical / Solar | trade permits |
| Road / Sewer / Grading / Pool & Spa | infrastructure & site work |
| Construction & Demolition / Flood / Film | special permits |
Every case carries its case number, project name, status, the apply / complete / expire / issuance / last-inspection dates, permit valuation (filled on ~34% of rows - building & valuation-carrying cases; many trade permits are zero), the main address (filled on ~95% of rows) and assessor parcel number (AIN), the supervisorial district and countywide statistical area, current & proposed land-use codes, ADU (accessory dwelling unit) flag, new-dwelling-unit counts, and the affordable-housing designation.
planning - zoning & land-use reviews
302,329 plan reviews (RPPL series) - the zoning conformance and land-use cases that precede or accompany building. Useful for understanding what's been cleared for a property.
Status
The source carries a large status vocabulary (~40 values) - this actor matches status exactly, never by loose substring. Key values: Finaled (333,838) / Issued (146,000) / Approved (98,956) / Completed / Void / Accepted / Canceled / Open / Expired / Denied / In Review / Withdrawn / Rejected / Revoked. Ask for open (or active) to get the live in-progress slice (Open / In Review / New / Waiting for Applicant / Approved Pending Clearances / ...).
Typical questions
- "What building permits were pulled in this neighborhood in the last year?"
- "Show recent residential permits in unincorporated East LA."
- "Which new residential projects were filed this month?"
- "What's the permit valuation mix - find permits over $500k."
- "Finaled commercial permits by countywide statistical area."
- "Permits on this parcel (AIN) - current and historical."
- "How many cases are still open, by case type?"
- "Aggregate the whole register by permit type or status."
Inputs
| Input | What it does |
|---|---|
module | permits (default) / planning |
permitType | building-permit type: residential, commercial, multifamily, electrical, plumbing, mechanical, solar, sewer, grading, pool/spa, road, C&D, flood, film |
status | exact source value (Finaled / Issued / Approved / ...) or open / active for the live slice. Blank = any status |
caseNumber | exact case number -> that case's record |
address / ain | property filter (substring) |
minValuation / maxValuation | permit-valuation range |
appliedFrom/To / issuedFrom/To | date-range filters (applied / issued dates) |
supervisorialDistrict / countywideStatArea | district / community filter |
aggregate / groupBy | one summary row per group - caseType / status / module / countywideStatArea / supervisorialDistrict / useCurr / workClassName |
maxResults | cap records (default 50) |
Default run = the 50 newest building cases (by the register's insert order - the county appends cases as they're filed, so the newest rows are the most recently filed / updated; not sorted by apply date). A live slice, fast for the daily auto-test. For a targeted query add a caseNumber / address / permitType / status filter; for a broad view use aggregate (a handful of summary rows, not a full dump).
Note: a run is capped at $5 of usage - a request large enough to reach it (roughly 5,000 records at the entry price) is cut off part-way, and the truncated run still reports success. For whole-corpus counts, use aggregate.
Example inputs
One case - an exact case number returns that case's record.
{ "caseNumber": "FCDP2026000321" }
Residential permits in East LA - countywideStatArea is the community name.
{ "module": "permits", "permitType": "residential", "countywideStatArea": "East Los Angeles", "maxResults": 10 }
Everything still open - open is the live in-progress slice across the status vocabulary.
{ "status": "open", "maxResults": 10 }
Permits valued over $500k - minValuation filters on the permit valuation.
{ "minValuation": 500000, "maxResults": 10 }
Low cost
From $0.001 per record - billed only for the rows you use, and each record is metered individually.
LA County's EPIC-LA case history is one of those "public portal" exports that hides its mess in plain sight: building permits and zoning reviews live in the same feed (two case modules that behave differently), the status field runs ~40 values that overlap confusingly (a New case vs New - Online, In Review vs Review), permit valuation is filled on only ~34% of rows, and many planning cases carry no address at all. Sorting that into a register where a permitType / status / date-range query returns exactly the cases you mean - never the near-misses - is the actual product. Every pull is integrity-checked against the feed's known shape, so a degraded source fails loudly instead of returning bad rows.
Example output
One case - caseNumber=FCDP2026000321 returns that case's record:
{"module": "PermitManagement","caseNumber": "FCDP2026000321","projectName": "","caseType": "Flood","status": "Waiting for Applicant","description": "","applyDate": "2026-08-12","completeDate": "","expireDate": "","issuanceDate": "","lastInspectionDate": "","valuation": "0","address": "","ain": "","supervisorialDistrict": "2","districtDisplay": "Blank","countywideStatArea": "Unincorporated - Rancho Dominguez","useCurr": "","useProposed1": "","useProposed2": "","useProposed3": "","affordableHousing": "","accessoryDwellingUnit": "","newDwellingUnits": "","workClassName": "Access","styleCategory": "","spatialType": "Parcel","statClass": "","platform": "ca-epic-la","source": "epic-la-case-history","groupKey": "","groupCount": ""}
aggregate=true, groupBy=status - the register's status mix:
Finaled 333,838Issued 146,000Approved 98,956
Source
- LA County Public Works EPIC-LA - the county's public case-management portal. This actor reads the published
EPIC-LA_Case_History_viewservice. - Reflects the county's published record as of the refresh date; not an endorsement of any project or contractor.