# Los Angeles — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search for building permits, inspection records, and property details for Los Angeles addresses to access permit histories, parcel information, code enforcement records, and occupancy certificates. Track retrofit programs and get comprehensive permit summaries to research property compliance and construction activity in LA.

**Category:** Government & Public Data | **Website:** [losangeles.gov/](https://losangeles.gov/) | **Docs:** [parse.bot/marketplace/edac10e1-3865-43cf-a169-c44f468813b4/losangeles-gov-api](https://parse.bot/marketplace/edac10e1-3865-43cf-a169-c44f468813b4/losangeles-gov-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_certificate_of_occupancy

Get Certificate of Occupancy records for an address. Returns an empty array for addresses with no CoO records. Check get_property_permit_summary to see the CoO count before calling this endpoint.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `address_id` | string | Yes | Numeric address ID obtained from search_permits_by_address results (e.g., '630413') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/get_certificate_of_occupancy \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address_id":"<string>"}'
```

### get_code_enforcement_info

Get code enforcement cases for an address. Returns all enforcement cases with dates, case IDs, problem descriptions, and status. Check get_property_permit_summary first to confirm cases exist for the address.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `address_id` | string | Yes | Numeric address ID obtained from search_permits_by_address results (e.g., '630501') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/get_code_enforcement_info \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address_id":"<string>"}'
```

### get_parcel_profile

Get full parcel profile details including zoning, lot info, and planning data. Returns a variable set of fields depending on what data is available for the parcel. Common fields include Tract, Lot, Zone(s), Council District, and job_addresses. Some addresses may return fewer fields than others.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `address_id` | string | Yes | Numeric address ID obtained from search_permits_by_address results (e.g., '630413') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/get_parcel_profile \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address_id":"<string>"}'
```

### get_permit_details

Get detailed information and inspection history for a specific permit. Uses the three-part permit ID (id1, id2, id3) from get_permit_list_by_parcel. Returns structured text sections including certificate information, status history, contact info, inspector details, and inspection history.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id1` | string | Yes | First part of permit ID from get_permit_list_by_parcel results (e.g., '06041') |
| `id2` | string | Yes | Second part of permit ID from get_permit_list_by_parcel results (e.g., '20000') |
| `id3` | string | Yes | Third part of permit ID from get_permit_list_by_parcel results (e.g., '20567') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/get_permit_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id1":"<string>","id2":"<string>","id3":"<string>"}'
```

### get_permit_list_by_parcel

Get full list of permits for a parcel address. Returns all permits with three-part IDs that can be used for detailed lookups via get_permit_details. Parcels with very large numbers of permits (200+) may time out on the upstream server. Check get_property_permit_summary first to see the permit count.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `address_id` | string | Yes | Numeric address ID obtained from search_permits_by_address results (e.g., '630501') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/get_permit_list_by_parcel \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address_id":"<string>"}'
```

### get_property_permit_summary

Get summary counts and available data sections for a specific address ID. Returns the address, available data sections (parcel profile, permits, code enforcement, certificate of occupancy, retrofit program), and record counts for each section. Use to determine which detail endpoints will return data before calling them.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `address_id` | string | Yes | Numeric address ID obtained from search_permits_by_address results (e.g., '630413') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/get_property_permit_summary \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address_id":"<string>"}'
```

### get_retrofit_program_info

Get retrofit program compliance information including soft story and non-ductile concrete status. Returns text strings with compliance status for each program.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `address_id` | string | Yes | Numeric address ID obtained from search_permits_by_address results (e.g., '630413') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/get_retrofit_program_info \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address_id":"<string>"}'
```

### search_permits_by_address

Search for building permits by street address. Returns matching addresses with numeric IDs for further lookups. Multiple matches may be returned if the street name matches addresses in different directions (N, S, E, W). A single exact match redirects directly and returns as 'Direct Match'.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `street_name` | string | Yes | Street name without prefixes or suffixes, uppercase preferred (e.g., 'MAIN', 'SPRING') |
| `street_number` | string | Yes | Street number (e.g., '200'). Do not use fractions. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-losangeles-gov-api-edac10e1/search_permits_by_address \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"street_name":"<string>","street_number":"<string>"}'
```
