California DCA License Search — Bulk License Lookup avatar

California DCA License Search — Bulk License Lookup

Pricing

from $1.60 / 1,000 dca license record returneds

Go to Apify Store
California DCA License Search — Bulk License Lookup

California DCA License Search — Bulk License Lookup

Search California DCA license files by board, name, number, city, county or status and export license records with dates. USD 2 per 1,000 records.

Pricing

from $1.60 / 1,000 dca license record returneds

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

California DCA License Search returns professional license records from the official monthly public licensee files of the California Department of Consumer Affairs (DCA): license number, type, status, issue and expiration dates, licensee or business name, address of record, and the source file. It is built for compliance teams, credentialing staff, recruiters and researchers who need many California license records at once, and it costs about USD 2 per 1,000 records on the FREE tier (USD 0.002001 per record).

Pick one DCA board or bureau, add filters such as license number, name, city, county or status, and the Actor downloads that agency's current public file, filters it, and writes matching records to an Apify dataset you can export as CSV, JSON or Excel.

What does the California DCA license search return?

Each dataset item is one row of the selected agency's public licensee file.

FieldWhat it contains
agencyName, licenseType, specialtyCodeIssuing board or bureau, license type and specialty code when published
licenseNumberPublic license number
licenseStatusStatus text such as Active, Current, Expired or Cancelled
originalIssueDate, expirationDateDates in the file's MM-DD-YYYY format
entityTypeIndividual-or-organization flag from the file, for example I
organizationOrLastName, firstName, middleName, suffixBusiness name or the licensee's last name, and the other name parts
addressLine1, addressLine2, city, county, state, zip, countryAddress of record as published by DCA
school, yearGraduated, degreeEducation fields, where the agency publishes them
sourceAgency, sourceFile, sourceUrl, scrapedAtWhich public file the row came from and when it was read

Empty cells are null. Each run also writes a SUMMARY record with the outcome (DATA, EMPTY or FAILED), the agency, the source file name and its last-modified date, records scanned, records returned and warnings.

Which California DCA boards and bureaus are covered?

The agency field offers 32 DCA licensee files: Accountancy, Acupuncture, Architects, Automotive Repair, Barbering and Cosmetology, Behavioral Sciences, Cemetery, Chiropractic, Dental, Dental Hygiene, Electronic and Appliance Repair, Funeral, Hearing Aid Dispensers, Landscape Architects, Medical Board, Naturopathic Medicine, Occupational Therapy, Optometry, Osteopathic, Pharmacy, Physical Therapy, Physician Assistant, Podiatric Medicine, Professional Engineers (with land surveyors and geologists), Professional Fiduciaries, Psychology, Registered Nursing, Respiratory Care, Security and Investigative Services, Structural Pest Control, Veterinary Medicine, and Vocational Nursing. One agency is read per run; to cover several, run once per agency. Speech-Language Pathology and Audiology is not offered: DCA's public folder for it held no data file on 2026-10-27, and the Hearing Aid Dispensers file from the same board lists only hearing aid dispenser licenses.

Contractor licenses (CSLB) and cannabis licenses (DCC) are not offered by this Actor; see the sibling Actors under "When should I use it".

How do I look up California licenses by name, number or county?

Choose the agency, then add any filters. All text filters are case-insensitive partial matches except licenseNumber, which must match exactly.

InputDefaultNotes
agencyprofessionalFiduciariesAgency key, for example registeredNursing or pharmacy
licenseNumbernoneExact license number within that agency
firstName, lastNamenoneIndividual name parts; lastName also matches organization names
businessNamenoneOrganization name
city, countynoneAddress-of-record city or county
licenseStatusnoneStatus text, for example Active or Expired
includeInactivefalseBy default only Active or Current records are returned
maxResults100Records written per run, 1–1,000

Active registered nurses in Los Angeles County:

{
"agency": "registeredNursing",
"county": "Los Angeles",
"licenseStatus": "Active",
"maxResults": 100
}

One psychologist by name, including expired or cancelled records:

{
"agency": "psychology",
"firstName": "Jane",
"lastName": "Doe",
"includeInactive": true,
"maxResults": 25
}

How fresh is the DCA license data?

As fresh as DCA's latest monthly file. DCA says it refreshes the public licensee files at the start of each month, and the Actor finds the agency's current data file at run time. In the 2026-10-26 runs the Professional Fiduciaries file was dated 2026-10-01 (shown in SUMMARY as sourceFileModifiedAt). Status changes made after that date appear only after DCA's next refresh, so use DCA's own live search to confirm a single license before a high-stakes decision.

Can I call it as a DCA license API?

Yes. Call the Actor from apify-client, the Apify REST API, a schedule or an AI agent; no DCA account, cookies or credentials are needed.

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/california-dca-professional-license-scraper').call({
agency: 'pharmacy',
city: 'San Diego',
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const r of items) console.log(r.licenseNumber, r.organizationOrLastName, r.licenseStatus, r.expirationDate);

Python:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/california-dca-professional-license-scraper").call(run_input={
"agency": "professionalFiduciaries",
"licenseNumber": "3",
"maxResults": 10,
})
for record in client.dataset(run.default_dataset_id).iterate_items():
print(record["licenseNumber"], record["firstName"], record["organizationOrLastName"], record["licenseStatus"])

Use it from an AI assistant

California DCA License Search works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/california-dca-professional-license-scraper to your client and ask, for example: "List active California-licensed physical therapists in Sacramento County with their license numbers and expiration dates." Each record is charged at the prices below, so ask for a record limit.

What does the output look like?

Two records from a 2026-10-26 cloud run of the default input (100 records in about 12 seconds, 1,109 rows scanned):

[
{
"agencyName": "Professional Fiduciaries Licensing Bureau",
"licenseType": "Professional Fiduciary",
"specialtyCode": null,
"licenseNumber": "3",
"entityType": "I",
"organizationOrLastName": "Nord",
"firstName": "Carey",
"middleName": "James",
"addressLine1": "Po Box 690",
"city": "Napa",
"county": "Napa",
"state": "CA",
"zip": "94559",
"originalIssueDate": "07-01-2008",
"expirationDate": "12-31-2026",
"licenseStatus": "Active",
"sourceAgency": "Fiduciaries_3108",
"sourceFile": "Fiduciaries_Data00.xls",
"scrapedAt": "2026-10-26T08:09:20.106Z"
},
{
"agencyName": "Professional Fiduciaries Licensing Bureau",
"licenseType": "Professional Fiduciary",
"licenseNumber": "5",
"entityType": "I",
"organizationOrLastName": "Smith",
"firstName": "Anne",
"city": "San Geronimo",
"county": "Marin",
"expirationDate": "12-31-2026",
"licenseStatus": "Active",
"sourceFile": "Fiduciaries_Data00.xls",
"scrapedAt": "2026-10-26T08:09:20.106Z"
}
]

Pricing: how much do California license records cost?

The Actor uses pay-per-event pricing with platform usage included. You pay for each record saved to the dataset, plus one start event per run at the default 512 MB memory.

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
DCA license record returnedUSD 0.002001USD 0.00195USD 0.0019USD 0.0016USD 0.0016USD 0.0016
Actor start (per started GB of allocated memory)USD 0.006251USD 0.006094USD 0.005938USD 0.005USD 0.005USD 0.005

Worked totals on the FREE tier:

  • Default input, 100 records: 100 × USD 0.002001 + USD 0.006251 = USD 0.206351
  • 1,000 records: 1,000 × USD 0.002001 + USD 0.006251 = USD 2.007251

A search that matches nothing, or a run whose download fails, charges only the start event. If you set a maximum charge for the run, the Actor stops after the last record that fits.

Limits and reliability

  • One agency, one file. Some agencies publish more than one data file; the Actor reads the current _Data00 file in the agency's folder.
  • Large files. Registered Nursing, Security and Investigative Services and Barbering and Cosmetology files are much larger than the Professional Fiduciaries file used in testing. They take longer to download and were not timed on 2026-10-26.
  • Failed downloads. On 2026-10-26 one of three default runs stopped with "fetch failed" while connecting to DCA's public-file host. The Actor now allows a slower connection and retries each request up to four times with backoff. A run that still cannot read the file ends with a red Failed status, writes outcome: FAILED to SUMMARY, and charges only the start event.

When should I use it, and when not?

Use it when you need California license data in bulk: verifying a list of licensees, building a roster for one profession and county, checking expiration dates across a team, or monitoring a board's licensees month to month.

Use something else when:

FAQ

Is this the same data as the DCA License Search website?

It comes from the same department, but from the monthly public licensee files rather than the real-time search, so it can lag by up to a month.

Can I search every DCA agency at once?

No. Each run reads one agency file. Run it once per agency and combine the datasets.

Why are expired licenses missing?

includeInactive is false by default, so only Active and Current records are returned. Set it to true to include expired, cancelled, surrendered and other statuses.

Does it include disciplinary actions?

No. The public licensee files carry license, status, date, name, address and education fields, not enforcement history.

Do I need a DCA account or API key?

No. The files are public and the Actor needs no credentials. It does not use or bypass the human-verification check on DCA's real-time search page.

Can I export the records to Excel or CSV?

Yes. Apify exports any dataset to CSV, JSON, Excel or XML, and integrations can send it to Google Sheets or a CRM.

The records are public government license data that DCA publishes for download. They include individuals' names and addresses of record, so use them for lawful verification, compliance and research, respect California privacy law and anti-spam rules, and do not use them for harassment or unlawful discrimination. The Actor is not affiliated with the California Department of Consumer Affairs, and this is not legal advice.

Last verified: 2026-10-27