California Real Estate License Scraper (DRE) avatar

California Real Estate License Scraper (DRE)

Pricing

from $6.15 / 1,000 results

Go to Apify Store
California Real Estate License Scraper (DRE)

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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

California Real Estate License Scraper (DRE)

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

Apify Coverage Output Billing

Table of contents

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

FieldTypeRequiredDefaultDescription
querystringyes(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.
citystringno(empty)City filter applied to a name search (Irvine). Blank searches statewide.
licenseTypeenumnoanyKeep only one kind: any, salesperson, broker, corporation.
statusenumnoanyKeep only licenses in a given status: any, licensed, expired. Requires withDetails.
maxLicenseesintegerno10Maximum licensee records to collect (1 to 1000000). Free Apify plans are capped at 10.
withDetailsbooleannotrueWhen on, each licensee includes the full detail record. When off, only summary fields (name, license ID, type, city) are returned (faster).
includeSalespersonsbooleannofalseFor brokers/corporations, also include the full roster of affiliated salespersons. Requires withDetails.
maxSalespersonsintegerno500Cap affiliated salespersons per broker/corporation. Free Apify accounts are capped at 100.
withLeadScorebooleannofalsePaid add-on. AI-qualifies each licensee as a sales lead (0-100 plus hot/warm/cold). Billed per record only when produced.
withProfileSummarybooleannofalsePaid add-on. Adds a 1-2 sentence AI profile summary. Billed per record only when produced.
enrichContactsbooleannofalsePaid 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.
enrichContactsMaxintegerno50Cap 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.

FieldTypeDescription
namestringLicensee name.
licenseIdstring8-digit DRE license ID.
licenseTypestringSALESPERSON, BROKER, CORPORATION, or similar.
statusstringLicense status (LICENSED, EXPIRED, ...), or null without details.
expirationDatestringLicense expiration date (YYYY-MM-DD), or null.
issueDatestringLicense issue date (YYYY-MM-DD), or null.
responsibleBrokerobjectResponsible/employing broker { licenseId, name, address, city, state, zip }, or null.
formerNamesstring[]Former licensee names, or null.
mainOfficestringMain office address (brokers/corporations), or null.
licensedOfficersobject[]Licensed officers, each { licenseId, name, expirationDate }, or null.
branchesobject[]Branch offices, each with address and manager fields, or null.
brokerAssociatesobject[]Broker associates, each { licenseId, name, expirationDate }, or null.
salespersonCountintegerNumber of affiliated salespersons (brokers/corporations), or null.
affiliatedSalespersonsobject[]Full roster (only with includeSalespersons), each { licenseId, name, expirationDate }, or null.
dbasobject[]DBAs, each { name, status }, or null.
addressstringMailing street address, or null.
citystringCity, or null.
statestringState code, or null.
zipstringPostal code, or null.
addressReliablebooleanfalse when the DRE marks the address unreliable, else true/null.
mortgageLoanOriginatorbooleantrue when the licensee is a mortgage loan originator (MLO).
disciplinaryActionbooleantrue when disciplinary action is on record, false when explicitly none, else null.
commentsstring[]Meaningful public comments, or null.
aiLeadScorenumberAI lead score (0-100) when the add-on is enabled, else null.
aiLeadTemperaturestringAI lead temperature (hot/warm/cold) when enabled, else null.
aiProfileSummarystringAI profile summary when the add-on is enabled, else null.
urlstringDRE license detail page URL.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 (result event). A details event 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 error field and does not charge. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on 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.

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.