California Real Estate License Scraper (DRE)
Pricing
from $6.15 / 1,000 results
California Real Estate License Scraper (DRE)
Scrape California real estate license records from the DRE public license lookup by agent or broker name or license ID. Extract licensee name, license ID, type, status, expiration, responsible broker, address and disciplinary flag. Export to JSON, CSV or Excel.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
California Real Estate License Scraper (DRE)
Here is one real result, with every field the actor returns:
{"name": "Garcia, Abelardo","licenseId": "01750396","licenseType": "SALESPERSON","status": "EXPIRED","expirationDate": "2015-06-27","issueDate": "2007-04-12","responsibleBroker": null,"formerNames": null,"mainOffice": null,"licensedOfficers": null,"branches": null,"brokerAssociates": null,"salespersonCount": null,"affiliatedSalespersons": null,"dbas": null,"address": "3449 N GREENWOOD AVENUE","city": "SANGER","state": "CA","zip": "93657","addressReliable": true,"mortgageLoanOriginator": false,"disciplinaryAction": false,"comments": null,"aiLeadScore": null,"aiLeadTemperature": null,"aiProfileSummary": null,"url": "https://www2.dre.ca.gov/PublicASP/pplinfo.asp?License_id=01750396","observedAt": "2026-08-14T07:13:31.212Z","error": null}
The most complete California DRE real estate license scraper available. It returns every field the DRE public license lookup exposes (licensee name, license ID and type, status, issue and expiration dates, mailing address, responsible broker, licensed officers, DBAs and disciplinary flag), and for brokers and corporations it can pull the licensed officers, branch offices and the full roster of affiliated salespersons.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the California DRE public license lookup by licensee name or 8-digit license ID, optionally opens each detail page, and writes one normalized record per licensee to the run's dataset. A name search returns the matching salespersons, brokers and corporations; an 8-digit number returns that single license.
When withDetails is on (the default), each record includes the full detail: license status, issue and expiration dates, mailing address (with a reliability flag), responsible or employing broker, licensed officers, branch offices, DBAs, the affiliated-salesperson count, and any disciplinary action. For brokers and corporations, includeSalespersons also pulls the full roster of affiliated agents. Dates are normalized to YYYY-MM-DD and missing values are returned as null. Optional paid AI add-ons (lead score, profile summary) and a contact enrichment add-on are off by default and billed per record only when they return usable output.
Quickstart
Open the actor, paste this into the input, and press Run. It searches by brokerage name and returns up to 10 licensees with full detail.
{"query": "Coldwell Banker","maxLicensees": 10,"withDetails": true}
query is required. Pass an 8-digit number to look up a single license, or a name (last name, full name, or brokerage) to search. Add a city to narrow a statewide name search.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | yes | (none) | A licensee name (Smith, John, a last name, or a brokerage like Coldwell Banker) or an 8-digit license ID. A number returns that single license. |
city | string | no | (empty) | City filter applied to a name search (Irvine). Blank searches statewide. |
licenseType | enum | no | any | Keep only one kind: any, salesperson, broker, corporation. |
status | enum | no | any | Keep only licenses in a given status: any, licensed, expired. Requires withDetails. |
maxLicensees | integer | no | 10 | Maximum licensee records to collect (1 to 1000000). Free Apify plans are capped at 10. |
withDetails | boolean | no | true | When on, each licensee includes the full detail record. When off, only summary fields (name, license ID, type, city) are returned (faster). |
includeSalespersons | boolean | no | false | For brokers/corporations, also include the full roster of affiliated salespersons. Requires withDetails. |
maxSalespersons | integer | no | 500 | Cap affiliated salespersons per broker/corporation. Free Apify accounts are capped at 100. |
withLeadScore | boolean | no | false | Paid add-on. AI-qualifies each licensee as a sales lead (0-100 plus hot/warm/cold). Billed per record only when produced. |
withProfileSummary | boolean | no | false | Paid add-on. Adds a 1-2 sentence AI profile summary. Billed per record only when produced. |
enrichContacts | boolean | no | false | Paid add-on. For records without an email, attempt to find a public business contact email and name. Billed per attempt, plus an extra charge only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap how many results the contact add-on tries to enrich. Free Apify accounts are capped at 3. |
query is required. AI and contact add-ons require a paid Apify plan and are disabled for free accounts.
Output reference
One dataset item per licensee. Types: string, integer, boolean, object, object[], or null when the value is absent.
| Field | Type | Description |
|---|---|---|
name | string | Licensee name. |
licenseId | string | 8-digit DRE license ID. |
licenseType | string | SALESPERSON, BROKER, CORPORATION, or similar. |
status | string | License status (LICENSED, EXPIRED, ...), or null without details. |
expirationDate | string | License expiration date (YYYY-MM-DD), or null. |
issueDate | string | License issue date (YYYY-MM-DD), or null. |
responsibleBroker | object | Responsible/employing broker { licenseId, name, address, city, state, zip }, or null. |
formerNames | string[] | Former licensee names, or null. |
mainOffice | string | Main office address (brokers/corporations), or null. |
licensedOfficers | object[] | Licensed officers, each { licenseId, name, expirationDate }, or null. |
branches | object[] | Branch offices, each with address and manager fields, or null. |
brokerAssociates | object[] | Broker associates, each { licenseId, name, expirationDate }, or null. |
salespersonCount | integer | Number of affiliated salespersons (brokers/corporations), or null. |
affiliatedSalespersons | object[] | Full roster (only with includeSalespersons), each { licenseId, name, expirationDate }, or null. |
dbas | object[] | DBAs, each { name, status }, or null. |
address | string | Mailing street address, or null. |
city | string | City, or null. |
state | string | State code, or null. |
zip | string | Postal code, or null. |
addressReliable | boolean | false when the DRE marks the address unreliable, else true/null. |
mortgageLoanOriginator | boolean | true when the licensee is a mortgage loan originator (MLO). |
disciplinaryAction | boolean | true when disciplinary action is on record, false when explicitly none, else null. |
comments | string[] | Meaningful public comments, or null. |
aiLeadScore | number | AI lead score (0-100) when the add-on is enabled, else null. |
aiLeadTemperature | string | AI lead temperature (hot/warm/cold) when enabled, else null. |
aiProfileSummary | string | AI profile summary when the add-on is enabled, else null. |
url | string | DRE license detail page URL. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
When the contact add-on finds an email, extra fields are added: enrichedEmail, enrichedContactName, enrichedJobTitle, enrichedEmailStatus, enrichedSource, enrichedConfidence.
Example output record
Real record from a live run (input {"query": "NRT West"}, a corporation; licensedOfficers and branches trimmed to 2 each for length):
{"name": "NRT West, Inc.","licenseId": "01908304","licenseType": "CORPORATION","status": "LICENSED","expirationDate": "2028-02-13","issueDate": "2011-12-09","mainOffice": "1855 GATEWAY BLVD STE 670, CONCORD, CA 94520","licensedOfficers": [{ "licenseId": "01464847", "name": "Papillo, Anthony Francis", "expirationDate": "2028-02-13" },{ "licenseId": "01902860", "name": "Bold, Kimberly L", "expirationDate": "2027-04-19" }],"branches": [{ "address": "101 MORRIS ST", "city": "SEBASTOPOL", "state": "CA", "zip": "95472", "managerLicenseId": "01338735", "managerName": "Kemper, Thomas Martin", "managerRole": "Branch/Division Manager" },{ "address": "101 SYCAMORE VALLEY RD", "city": "DANVILLE", "state": "CA", "zip": "94526", "managerLicenseId": "00679296", "managerName": "Kehrig, Joseph Edward", "managerRole": "Branch/Division Manager" }],"salespersonCount": 3290,"disciplinaryAction": false,"url": "https://www2.dre.ca.gov/PublicASP/pplinfo.asp?License_id=01908304","observedAt": "2026-08-14T07:13:31.212Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~california-dre-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"query":"Coldwell Banker","maxLicensees":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~california-dre-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"query":"Smith","city":"Irvine","licenseType":"salesperson","status":"licensed","maxLicensees":100}'
Apify CLI:
apify call scrapers_lat/california-dre-scraper \--input '{"query":"01750396"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per licensee returned (
resultevent). Adetailsevent is charged when the full detail page is fetched. See the pricing tab for current prices. - No charge on failure. If the search fails or matches nothing, the actor writes a single item with a populated
errorfield and does not charge. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results, including add-on charges. - Free Apify plans are capped at 10 records per run (and 100 affiliated salespersons per record). Upgrade for more.
- AI and contact add-ons require a paid Apify plan and are billed per record only when they return usable output.
FAQ and troubleshooting
How do I look up a single license?
Set query to the 8-digit license ID. The actor returns that one detail record.
How do I search by name?
Set query to a last name, full name (Smith, John), or brokerage name. Add a city to narrow a statewide search, and use licenseType/status to filter the results.
Can I get every agent under a brokerage?
Yes. Search the broker or corporation, keep withDetails on, and set includeSalespersons to true. The affiliatedSalespersons roster is capped by maxSalespersons.
Why is addressReliable false?
The DRE marks some mailing addresses as unreliable. The flag surfaces that so you can weight the address accordingly; the address is still returned when present.
Is this an official DRE tool? No. This actor is independent and has no affiliation with the California Department of Real Estate. It reads only publicly available DRE license data.
Related scrapers
- California CSLB Contractor License Scraper: California licensed contractor records.
- Arizona ADRE Real Estate Scraper: Arizona real estate licensee records.
- North Carolina NCREC Scraper: North Carolina real estate licensees.
- Ohio Real Estate Licensees Scraper: Ohio real estate licensee records.
- California State Bar Scraper: California licensed attorney records.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the California Department of Real Estate (DRE). Accesses only publicly available license data.
