Pre-run requirements & feasibility: page · PDF
Dashboards: Project 1 · Project 2
Non-technical review PDFs: Project 1 (Crime x $5M Homes) · Project 2 (Permits) · combined: Sauron_Data_Sources_Review.pdf  |  Interactive API docs (Swagger, live "Try it out"): Project 1 · Project 2 · combined

Terminal AI GTM Lab x Sauron — Data Source Findings

TL;DR

All endpoints below were hit live on 2026-09-02 and returned data unless noted.

Project 1: Recent Crime x $5M+ Homes

1. LAPD Open Data — crime incidents

Current dataset LAPD NIBRS Offenses (2024→present), refreshed bi-weekly (not weekly)
Portal https://data.lacity.org/Public-Safety/LAPD-NIBRS-Offenses-Dataset-2026-to-Present/k7nn-b2ep
API (SODA, no auth) https://data.lacity.org/resource/k7nn-b2ep.json
Companion LAPD NIBRS Victims dataset (same portal)
Legacy dataset "Crime Data from 2020 to Present" 2nrs-mtv8frozen / no longer updated (LAPD retired legacy RMS in 2024). Historical only.
Key fields date_occ, nibr_description, crime_against, premis_desc, area_name, rpt_dist_no, hndrdth_loc_chk (hundred-block address), hndrdth_lat/lon

Gotchas - No zip code field. Locations are given to the nearest hundred block + lat/lon. Need to spatially join to zip polygons (or filter by area_name: Pacific Palisades & Brentwood = "West LA"; Bel Air = "West LA"; parts of 90046 = "Hollywood"). - Jurisdiction gap: LAPD only covers the City of LA. Two of the five target zips are not LAPD: - Beverly Hills (90210) → Beverly Hills PD (separate city). No open-data API found; crime stats published as PDFs/CrimeMapping.com. - West Hollywood (90046) → 90046 is split: the City of West Hollywood is patrolled by LA County Sheriff (LASD) — https://data-lasd.opendata.arcgis.com/ (ArcGIS Hub, incident-level). The Hollywood Hills portion of 90046 is LAPD. - Many crime types in the brief (porch piracy, casing, door tampering, prowling, suspicious person/vehicle) are not NIBRS offense codes — they're calls-for-service, not reported crimes. Map to the closest NIBRS codes (Burglary 220, Theft 23x, Motor Vehicle Theft 240, Robbery 120, Assault 13x, Vandalism 290, Arson 200, Stalking/Intimidation 13C, Trespass 90J).

2. FBI UCR / Crime Data Explorer

Portal https://cde.ucr.cjis.gov/
API https://api.usa.gov/crime/fbi/cde — requires free api.data.gov key
Docs https://cde.ucr.cjis.gov/LATEST/webapp/#/pages/docApi

Annual, agency-level aggregates only — not useful for weekly address-level targeting. Only value is context / sales-collateral stats. Recommend dropping from the pipeline.

3. LA County Assessor — property values & ownership

Parcel API (ArcGIS REST, no auth) https://public.gis.lacounty.gov/public/rest/services/LACounty_Cache/LACounty_Parcel/MapServer/0/query
Also https://assessor.gis.lacounty.gov/assessor/rest/services/PAIS/pais_parcels/MapServer
Bulk download LA County Open Data Hub — "Assessor Parcels Data 2006 thru Present" (https://data.lacounty.gov)
Per-parcel lookup https://portal.assessor.lacounty.gov/ (owner name shown per parcel, UI only)

Verified query — $5M+ parcels in 90272:

where=SitusZIP LIKE '90272%' AND (Roll_LandValue+Roll_ImpValue)>5000000   → 795 parcels

Fields available: AIN, SitusFullAddress, SitusZIP, UseDescription (SFR/condo/etc.), Roll_LandValue, Roll_ImpValue, Roll_HomeOwnersExemp (>0 ⇒ owner-occupied, good proxy for "person" vs "business"), YearBuilt1, SQFTmain1, Bedrooms1, CENTER_LAT/LON.

Gotchas - Owner name is NOT in the open dataset (Assessor excludes it from bulk data). Options: per-parcel scrape of portal.assessor.lacounty.gov, or a commercial provider (ATTOM, PropStream, Regrid, Melissa). - Assessed value ≠ market value (Prop 13). A long-held Palisades home assessed at $1.5M may be worth $8M+. Use AVM from ATTOM/PropStream or filter on land value + sqft instead of raw roll value. - Homeowner email / phone are not in any public source — requires a skip-trace / contact-append vendor (PropStream, BatchSkipTracing, Tracerfy, Melissa, PDL).

4. Local news API

Not a single source. Options: NewsAPI.org, GDELT (free), Google News RSS, or scrape LA Times / KTLA / Patch (Palisades, Beverly Hills, Brentwood, WeHo editions). Citizen app also surfaces incidents but has no public API.


Project 2: Permits

LA County / City

City of LA (LADBS) — SODA API https://data.lacity.org/resource/pi9x-tg5x.json (Permits Issued 2020→present) — verified
Older/alt dataset hbkd-qubn (LADBS-Permits)
LA County unincorporated (EPIC-LA) ArcGIS: https://dpw.gis.lacounty.gov/dpw/rest/services/ (EpicLA_* services) + portal https://epicla.lacounty.gov
Fields permit_nbr, primary_address, zip_code, apn, permit_type, permit_sub_type, use_desc, issue_date, status_desc, valuation, lat/lon

Note: Beverly Hills and West Hollywood issue their own permits (separate city portals, no open API found).

San Francisco (DataSF)

Building Permits https://data.sfgov.org/resource/i98e-djp9.json — verified
Permits since 2013 https://data.sfgov.org/resource/p4e4-a5a7.json
Data dictionary https://sfdigitalservices.gitbook.io/dataset-explainers/dbi-building-permits-and-permit-addenda-data

Miami-Dade County

ArcGIS REST (last 3 yrs, weekly refresh) https://gisweb.miamidade.gov/arcgis/rest/services/MD_LandInformation/MapServer/1/query — verified
Open Data Hub https://gis-mdc.opendata.arcgis.com/ (Building Permits)
City of Miami (separate) https://datahub-miamigis.opendata.arcgis.com/datasets/MiamiGIS::building-permits-since-2014

MLS closing data


Bottom line

Need Free public source? Status
Incident-level crime, LA City zips (90272, 90049, 90077, part of 90046) Yes — LAPD NIBRS SODA API Verified
Crime in 90210 (BHPD) No API Gap
Crime in West Hollywood city (LASD) Yes — LASD ArcGIS Hub Found, not yet tested
$5M+ homes by zip Yes — LA County parcel ArcGIS API Verified (795 hits in 90272)
Owner name Partial — per-parcel UI only Need ATTOM/PropStream
Owner email / phone No Need skip-trace vendor
LA / SF / Miami-Dade permits Yes — all three have public APIs Verified
MLS closings No Need ATTOM or MLS license