# CA DRE Real Estate License Lookup Scraper (`crawlerbros/ca-dre-real-estate-license-scraper`) Actor

Look up California real estate salesperson, broker, and corporation licenses from the CA Department of Real Estate. Search by name or license number, filter by type and status, get expiration dates, disciplinary history, and brokerage affiliations.

- **URL**: https://apify.com/crawlerbros/ca-dre-real-estate-license-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## CA DRE Real Estate License Lookup Scraper

Look up **California real estate licenses** from the California Department of Real Estate (DRE) public license lookup. Search by licensee or brokerage/company name, or jump straight to a license number. Get license status, expiration date, brokerage affiliations, DBAs, and disciplinary history for salespersons, brokers, and corporations. HTTP-only against the public `www2.dre.ca.gov` license search — no login, no CAPTCHA, no proxy required.

### What this actor does

- **Two modes:** search by licensee/company `name`, or direct `license number` lookup
- **Covers all three DRE license types:** Salesperson, Broker, Corporation
- **Filters:** license type, license status (18 DRE-defined statuses)
- **Rich brokerage data:** current DBAs, branch offices, licensed officers, broker associates, affiliated corporations
- **Disciplinary transparency:** flags any public disciplinary comments/documents on file
- **Empty fields are omitted** — a field only appears when DRE actually publishes that data for the license

### Output per license

- `licenseId` — DRE license ID
- `licenseType` — `salesperson`, `broker`, or `corporation`
- `name` — licensee or company name
- `formerNames[]` — prior names on file
- `mailingAddressLine1`, `mailingCity`, `mailingState`, `mailingZip`
- `mailingAddressUnreliable` — `true` if DRE flags the mailing address as unreliable
- `expirationDate` — ISO date the license expires/expired
- `licenseStatus` — current DRE status (e.g. `LICENSED`, `EXPIRED`, `REVOKED`)
- `licenseIssuedDate` — ISO date the license was first issued
- `licenseIssuedNote` — DRE annotation on the issue date, if any (e.g. sourced from secondary records)
- `responsibleBroker` — the salesperson's current responsible broker (salespersons only)
- `mainOffice` — main office address (brokers/corporations only)
- `currentDbaNames[]` — currently active "doing business as" names (brokers/corporations only)
- `branches[]` — branch office addresses (brokers/corporations only)
- `affiliatedCorporations[]` — corporations affiliated with a broker (brokers only)
- `licensedOfficers[]` — `{licenseId, name, expirationDate, status}` for each corporate officer (corporations only)
- `brokerAssociatesCount`, `brokerAssociates[]` — count and sample (up to 50) of `{licenseId, name, expirationDate}` broker associates (corporations only)
- `salespersonsAffiliatedCount`, `salespersonListUrl` — count and DRE URL for affiliated salespersons (corporations only)
- `hasDisciplinaryAction` — `true` if DRE lists any public disciplinary comment or document
- `disciplinaryComments[]` — public disciplinary comments, if any
- `disciplinaryDocuments[]` — links to DRE disciplinary/formal action PDFs, if any
- `sourceUrl` — the DRE license detail page
- `recordType: "license"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `byName` | `byName` or `byLicenseNumber` |
| `licenseeName` | string | `Smith, John` | Licensee (`Last, First`) or company name (mode=byName) |
| `cityFilter` | string | – | Narrow by DRE mailing-address city (mode=byName, optional) |
| `licenseNumber` | string | `01910275` | DRE license ID (mode=byLicenseNumber) |
| `licenseType` | select | – | `salesperson` / `broker` / `corporation` |
| `licenseStatus` | select | – | One of 18 DRE-defined statuses (e.g. `expired`, `licensed`, `revoked`) |
| `maxItems` | int | `20` | Hard cap on emitted license records (1–2000) |

#### Example: search by name

```json
{
  "mode": "byName",
  "licenseeName": "Smith, John",
  "maxItems": 20
}
````

#### Example: search by name, restricted to active brokers in one city

```json
{
  "mode": "byName",
  "licenseeName": "Garcia",
  "cityFilter": "Los Angeles",
  "licenseType": "broker",
  "licenseStatus": "licensed",
  "maxItems": 50
}
```

#### Example: direct license number lookup

```json
{
  "mode": "byLicenseNumber",
  "licenseNumber": "01310197"
}
```

#### Example: brokerage/corporation lookup

```json
{
  "mode": "byName",
  "licenseeName": "Keller Williams",
  "licenseType": "corporation",
  "maxItems": 25
}
```

### Use cases

- **Real estate compliance** — verify an agent's or broker's license is active before a transaction
- **Recruiting & due diligence** — check a candidate's license history and disciplinary record
- **Brokerage research** — enumerate a franchise's licensed offices, DBAs, and affiliated agents
- **Lead validation** — confirm a lead's real estate license number resolves to a real, active license
- **Legal & investigative research** — pull disciplinary documents tied to a license

### FAQ

**What is the data source?**
The California Department of Real Estate's public license lookup at `www2.dre.ca.gov`. This actor is an independent, third-party tool and is not affiliated with or endorsed by the DRE.

**How fresh is the data?**
Every run queries DRE live — there is no cached or stale data.

**Why do some brokers/corporations have empty `branches` or `currentDbaNames`?**
Those fields are only included when DRE's own detail page lists at least one currently active entry. Historical (expired) DBAs are not counted as "current".

**Why is `licenseStatus` filtering sometimes slower on broad name searches?**
DRE's name search only returns license type on the results list; status, expiration, and disciplinary data live on each license's own detail page. When a `licenseStatus` filter is set, the actor has to open detail pages for candidates until enough matches are found (or candidates run out), which takes longer for common names.

**Does this actor need a login, CAPTCHA solve, or proxy?**
No. DRE's public lookup requires none of these. The actor uses Apify's free `AUTO` proxy group only as a courtesy fallback.

**What does `hasDisciplinaryAction` mean?**
`true` means DRE's public comment section lists something other than "no disciplinary action" / "no other public comments", or a disciplinary/formal-action PDF is on file. It does not indicate the outcome or severity — check `disciplinaryComments` and `disciplinaryDocuments` for details.

**Can I look up a corporation's affiliated salespersons?**
The actor reports the affiliated salesperson count and a `salespersonListUrl` pointing at DRE's own list page for that corporation; the individual salesperson roster itself is not expanded into separate records.

# Actor input Schema

## `mode` (type: `string`):

How to look up licenses.

## `licenseeName` (type: `string`):

Last name, First name (e.g. `Smith, John`) or a company/brokerage name (e.g. `Keller Williams`). Matches DRE's own name search.

## `cityFilter` (type: `string`):

Narrow a name search to licensees whose DRE mailing address city matches (e.g. `Sacramento`). May differ from the licensee's main/branch office city.

## `licenseNumber` (type: `string`):

The DRE license ID, e.g. `01310197`. Leading zeros are optional.

## `officeStreetAddress` (type: `string`):

Street name of a broker/corporation's main or branch office (e.g. `Canon Dr`). DRE's own office-address search — returns brokers and corporations only, not individual salespersons.

## `officeStreetNumber` (type: `string`):

Street number to narrow the office-address search (e.g. `145`). If no match is found with a street number, try leaving it blank.

## `officeCity` (type: `string`):

City to narrow the office-address search (e.g. `Beverly Hills`).

## `licenseType` (type: `string`):

Only emit licenses of this type. Leave unset for all types.

## `licenseStatus` (type: `string`):

Only emit licenses currently in this DRE status. Leave unset for all statuses. Applying this can slow down broad name searches because DRE only exposes status on the per-license detail page.

## `maxItems` (type: `integer`):

Hard cap on emitted license records.

## Actor input object example

```json
{
  "mode": "byName",
  "licenseeName": "Smith, John",
  "licenseNumber": "01910275",
  "licenseType": "",
  "licenseStatus": "",
  "maxItems": 20
}
```

# Actor output Schema

## `licenses` (type: `string`):

Dataset containing all scraped CA DRE license records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "byName",
    "licenseeName": "Smith, John",
    "licenseNumber": "01910275",
    "licenseType": "",
    "licenseStatus": "",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/ca-dre-real-estate-license-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "byName",
    "licenseeName": "Smith, John",
    "licenseNumber": "01910275",
    "licenseType": "",
    "licenseStatus": "",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/ca-dre-real-estate-license-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "byName",
  "licenseeName": "Smith, John",
  "licenseNumber": "01910275",
  "licenseType": "",
  "licenseStatus": "",
  "maxItems": 20
}' |
apify call crawlerbros/ca-dre-real-estate-license-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/ca-dre-real-estate-license-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CA DRE Real Estate License Lookup Scraper",
        "description": "Look up California real estate salesperson, broker, and corporation licenses from the CA Department of Real Estate. Search by name or license number, filter by type and status, get expiration dates, disciplinary history, and brokerage affiliations.",
        "version": "1.0",
        "x-build-id": "vNCmWWy2TmN0GetfF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~ca-dre-real-estate-license-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-ca-dre-real-estate-license-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~ca-dre-real-estate-license-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-ca-dre-real-estate-license-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~ca-dre-real-estate-license-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-ca-dre-real-estate-license-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "byName",
                            "byLicenseNumber",
                            "byOfficeAddress"
                        ],
                        "type": "string",
                        "description": "How to look up licenses.",
                        "default": "byName"
                    },
                    "licenseeName": {
                        "title": "Licensee / company name (mode=byName)",
                        "type": "string",
                        "description": "Last name, First name (e.g. `Smith, John`) or a company/brokerage name (e.g. `Keller Williams`). Matches DRE's own name search.",
                        "default": "Smith, John"
                    },
                    "cityFilter": {
                        "title": "Mailing address city (mode=byName, optional)",
                        "type": "string",
                        "description": "Narrow a name search to licensees whose DRE mailing address city matches (e.g. `Sacramento`). May differ from the licensee's main/branch office city."
                    },
                    "licenseNumber": {
                        "title": "License number (mode=byLicenseNumber)",
                        "type": "string",
                        "description": "The DRE license ID, e.g. `01310197`. Leading zeros are optional."
                    },
                    "officeStreetAddress": {
                        "title": "Office street name (mode=byOfficeAddress)",
                        "type": "string",
                        "description": "Street name of a broker/corporation's main or branch office (e.g. `Canon Dr`). DRE's own office-address search — returns brokers and corporations only, not individual salespersons."
                    },
                    "officeStreetNumber": {
                        "title": "Office street number (mode=byOfficeAddress, optional)",
                        "type": "string",
                        "description": "Street number to narrow the office-address search (e.g. `145`). If no match is found with a street number, try leaving it blank."
                    },
                    "officeCity": {
                        "title": "Office city (mode=byOfficeAddress, optional)",
                        "type": "string",
                        "description": "City to narrow the office-address search (e.g. `Beverly Hills`)."
                    },
                    "licenseType": {
                        "title": "Filter by license type",
                        "enum": [
                            "",
                            "salesperson",
                            "broker",
                            "corporation"
                        ],
                        "type": "string",
                        "description": "Only emit licenses of this type. Leave unset for all types.",
                        "default": ""
                    },
                    "licenseStatus": {
                        "title": "Filter by license status",
                        "enum": [
                            "",
                            "licensed",
                            "licensed nba",
                            "expired",
                            "revoked",
                            "restricted",
                            "surrendered",
                            "voided",
                            "deceased",
                            "canceled officer",
                            "conditional suspension",
                            "flag suspended",
                            "government service",
                            "military service",
                            "withheld denied",
                            "17520 fc suspended",
                            "11350.6 w&i suspended",
                            "withheld per b&p 494.5",
                            "494.5 b&p suspended"
                        ],
                        "type": "string",
                        "description": "Only emit licenses currently in this DRE status. Leave unset for all statuses. Applying this can slow down broad name searches because DRE only exposes status on the per-license detail page.",
                        "default": ""
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Hard cap on emitted license records.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
