· 12 min read
CA State Bar Attorney Search Scraper: 21 Data Fields per Record (2026)
A thousand attorney records cost $5.00 on the free tier, pulling verified public profiles directly from the California State Bar licensee directory. Each full extraction returns up to 21 output fields, including license status, standing descriptions, admission dates, contact addresses, self-reported practice areas, and complete disciplinary history logs. You can query practitioners by exact bar number, quick text searches, or advanced parameters like certified specialties and county jurisdictions. This tool is built for legal recruiters, compliance teams, and investigators verifying professional standing; it is not for anyone needing attorney email addresses, which the directory obfuscates and this scraper does not extract.
Try it: open CA State Bar Attorney Search Scraper on Apify, sign in on the free plan and run the prefilled example.
Can you try CA State Bar Attorney Search Scraper before paying?
Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of CA State Bar Attorney Search Scraper a month, before run-start charges and platform usage.
CA State Bar Attorney Search Scraper was last updated on 2026-07-04. It is one of 1,725 Actors CrawlerBros publishes on Apify, which together have 686,269 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.
What does it cost to run CA State Bar Attorney Search Scraper?
Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.
| Apify plan | Per result | Per 1,000 results |
|---|---|---|
| FREE | $0.005 | $5.00 |
| BRONZE | $0.00433 | $4.33 |
| SILVER | $0.00367 | $3.67 |
| GOLD | $0.003 | $3.00 |
| PLATINUM | $0.003 | $3.00 |
| DIAMOND | $0.003 | $3.00 |
Your overall bill is driven directly by dataset item counts, which are governed by the maxItems cap and the breadth of your query inputs. When evaluating wide searches or testing filtering logic, set fetchFullProfile to false or keep maxItems low to inspect summary records before committing to large data extractions.
How do you run CA State Bar Attorney Search Scraper from the API?
The schema marks 1 of its 24 controls as required: mode. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for CA State Bar Attorney Search Scraper, so the request works once your token is in place.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~ca-state-bar-attorney-search/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"search","barNumbers":["231838"]}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "search",
"barNumbers": [
"231838"
]
}
run = client.actor("crawlerbros~ca-state-bar-attorney-search").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"mode": "search",
"barNumbers": [
"231838"
]
}
const run = await client.actor('crawlerbros~ca-state-bar-attorney-search').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.
Which CA State Bar Attorney Search Scraper inputs matter, and which can you skip?
The mode selector determines which parameters take effect, switching operation between quick searches, direct license lookups via barNumbers, and structured filtering via advanced parameters. Most users running initial exploratory searches should configure mode and freeText while leaving granular match-type selectors at their default settings.
mode(string): What to search. Default:"search".barNumbers(array): (mode=byBarNumber) One or more California State Bar license numbers to look up directly. Default:[].freeText(string): (mode=search) Free-text query - last name, first name, firm name, or an exact bar number, same as the Quick Search box on the State Bar site. Default:"smith".soundsLike(boolean): (mode=search) Enable phonetic sounds-like matching on the name instead of exact substring matching. Default:false.lastName(string): (mode=advanced) Attorney last name.lastNameMatchType(string): (mode=advanced) How to match lastName. Default:"b".firstName(string): (mode=advanced) Attorney first name.firstNameMatchType(string): (mode=advanced) How to match firstName. Default:"b".middleName(string): (mode=advanced) Attorney middle name.middleNameMatchType(string): (mode=advanced) How to match middleName. Default:"b".firmName(string): (mode=advanced) Law firm name.firmNameMatchType(string): (mode=advanced) How to match firmName. Default:"b".
The other 12 controls, with their defaults, are listed in the input schema on CA State Bar Attorney Search Scraper on Apify.
Fixed-choice controls: mode accepts search (Search by attorney/firm name (Quick Search)), byBarNumber (Lookup by bar number), advanced (Advanced search (name + location + specialty + language + practice area)); lastNameMatchType accepts b (Begins with), c (Contains), e (Is exactly), s (Sounds like); firstNameMatchType accepts b (Begins with), c (Contains), e (Is exactly), s (Sounds like); middleNameMatchType accepts b (Begins with), c (Contains), e (Is exactly), s (Sounds like); firmNameMatchType accepts b (Begins with), c (Contains), e (Is exactly).
What does CA State Bar Attorney Search Scraper return?
The resulting dataset delivers authoritative public licensee information, covering current standing, certified legal specialties, law school affiliations, and historical disciplinary actions. The output intentionally omits direct attorney email addresses due to upstream website obfuscation.
barNumber- California State Bar license numberfullNamelicenseStatus- one ofActive,Inactive,Not Eligible,Disbarred,Resigned,standingDescription- the State Bar's own definition of the current license statusaddress,city,state,zipCodephone,fax,websiteclaSections[]- California Lawyers Association sectionsselfReportedPracticeAreas[]languagesSpokenByAttorney[],languagesSpokenByStaff[]lawSchooladmissionDate- ISO date (or year-month when only a month/year is published)disciplineHistory[]-{ date, licenseStatus, discipline, adminAction }per datedprofileUrl- canonical Licensee Detail pagerecordType: "attorney",scrapedAt
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open CA State Bar Attorney Search Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Select your search strategy by configuring the mode control to search, byBarNumber, or advanced.
- If using mode set to search, provide a target term in freeText and decide whether to enable phonetic matching with soundsLike.
- If using mode set to byBarNumber, supply the target identifier strings inside the barNumbers array.
- If using mode set to advanced, populate specific demographic and credential filters such as county, legalSpecialty, or practiceArea.
- Toggle fetchFullProfile to true if you need complete fields like lawSchool, selfReportedPracticeAreas, and disciplineHistory, or set it to false to extract only summary row data.
- Apply an optional client-side statusFilter such as Active or Disbarred to restrict output records to matching statuses.
- Set maxItems between 1 and 500 to cap total emitted records for the run.
- Run the Actor and inspect the dataset to verify that profileUrl and barNumber fields are present for each emitted attorney.
How do you apply it? Three worked playbooks
These are CA State Bar Attorney Search Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Legal due diligence
Outcome: Verify an attorney's license status and discipline history
Configure: Set mode to "byBarNumber", provide the attorney license numbers in barNumbers (e.g., ["231838"]), and set fetchFullProfile to true.
Working method: Execute a single run for the target barNumbers, inspect the returned record for licenseStatus and standingDescription, and review the nested disciplineHistory array for past administrative or disciplinary actions.
Deliverable: A structured JSON or CSV profile containing verified admissionDate, standingDescription, and the full disciplineHistory array.
Stop condition: The returned licenseStatus indicates Not Eligible or Disbarred, or disciplineHistory contains unverified disciplinary actions.
Use case 2: Legal recruiting
Outcome: Build candidate lists filtered by practice area, language, or
Configure: Set mode to "advanced", county to "LA", practiceArea to "34", statusFilter to "Active", fetchFullProfile to true, and maxItems to 100.
Working method: Execute the query across targeted geographic and practice filters, evaluate the resulting candidate profiles for languagesSpokenByAttorney and lawSchool, and paginate through additional regional codes if required.
Deliverable: A candidate roster of active attorneys including firmName, phone, address, and selfReportedPracticeAreas.
Stop condition: The upstream query hits the 500-result cap or returns empty records due to incompatible simultaneous filter combinations.
Use case 3: Journalism & research
Outcome: Bulk-export discipline history for accountability reporting
Configure: Set mode to "search", freeText to a broad surname query, statusFilter to "Disbarred", fetchFullProfile to true, and maxItems to 500.
Working method: Collect summary batches across selected naming ranges, filter records exhibiting active or historical sanctions, and aggregate the nested disciplineHistory entries into a centralized analysis database.
Deliverable: A tabulated dataset mapping attorney names and bar numbers to dated disciplinary actions and sanction descriptions.
Stop condition: Output records consistently lack full profile details because fetchFullProfile was inadvertently disabled.
What breaks, and how do you design around it?
The California State Bar directory limits search responses to a maximum of 500 records per query. When retrieving comprehensive datasets across broad practice areas, partition your collection runs across smaller geographic units by setting specific county or district filters.
When should you not use CA State Bar Attorney Search Scraper?
Do not use this tool if you need nationwide attorney directory coverage or verified email contact data for outreach campaigns. The California State Bar directory explicitly obfuscates email addresses and restricts its records strictly to state-licensed practitioners. If your project requires multi-state profiles, board certification details across jurisdictions, or broader commercial directory information, consider running Lawyer Legion Scraper instead. Furthermore, if you are conducting compliance checks on real estate professionals rather than legal counsel, use CA DRE Real Estate License Lookup Scraper to query the Department of Real Estate directory directly.
What should you check before trusting the output?
- Verify that barNumber is populated and correctly formatted as a numeric string for every emitted record.
- Confirm that licenseStatus contains a valid classification such as Active, Inactive, or Disbarred rather than being null.
- Check that admissionDate adheres to an ISO date format or year-month structure when present.
- Ensure disciplineHistory is an array containing structured objects with date, licenseStatus, discipline, and adminAction when disciplinary events exist.
- Abort downstream ingestion if the dataset returns zero items when querying known, valid barNumbers.
None of this proves a record is correct. It gives a scheduled CA State Bar Attorney Search Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
What is the pricing model for running this scraper?
Results cost $0.005 per result, which equals $5.00 per 1,000 results on the free tier. Paid Apify plans pay less per result. A run-start fee is charged whenever an execution begins regardless of yield, and standard Apify platform usage is billed on top of result costs.
Why are attorney email addresses missing from the output records?
The California State Bar website uses decoy links and obfuscation techniques on profile pages to deter scraping. To avoid capturing invalid information, this Actor does not attempt to extract email fields.
How does disabling the full profile fetch affect run performance?
Setting fetchFullProfile to false restricts extraction to summary rows containing bar numbers, names, cities, admission dates, and license statuses. This bypasses secondary detail-page requests, resulting in significantly faster run speeds.
Why does a query return fewer results than expected in advanced mode?
The upstream State Bar search backend occasionally yields zero matches when combining multiple narrow filters, such as specific county codes alongside particular practice areas. Broaden your search by removing one of the overlapping criteria.
What is the maximum number of records returned per run?
The upstream directory enforces a hard limit of 500 results per query. You can set maxItems up to 500 per run; queries matching larger sets must be narrowed using geographic or specialty filters.
Where to go next
When you are ready to run it, open CA State Bar Attorney Search Scraper on Apify; the free plan covers up to 1,000 results a month.
Start with the CA State Bar Attorney Search Scraper Actor page for the current input schema, pricing tier, and run history.
Other Actors we maintain for related data:
- Lawyer Legion Scraper: Scrape Lawyer Legion, a US attorney directory with state-bar certified specialists.
- CA DRE Real Estate License Lookup Scraper: Look up California real estate salesperson, broker, and corporation licenses from the CA Department of Real Estate.
- UK Barrister Register Scraper: Scrape the Bar Standards Board's official Barristers' Register for England & Wales.
- Washington SOS Business Search Scraper: Search Washington State's Corporations & Charities Filing System by business name, UBI number, or advanced filters.
Related guides:
- Michigan LARA License Lookup Scraper: 3 Practical Use Cases
- Wisconsin DFI Business Entity Search Scraper: $5.00 per 1,000 Results
- Massachusetts Secretary of State Business Search Scraper: Setup, Cost
- Florida DBPR Professional & Contractor License Search Scraper Guide
- Mississippi SOS Business Search Scraper: 17 Data Fields per Record
- Iowa SOS Business Entity Search Scraper: $5.00 per 1,000 results
- Psychology Today Scraper: Therapist & Psychiatrist Leads Playbook
- Zefix Switzerland Company Search Scraper: 3 Practical Use Cases
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-28.
Actor last updated by its maintainers on 2026-07-04.
Run outcome figures cover the 30 day public window ending 2026-09-28.
Featured actors
CA State Bar Attorney Search Scraper
Search the California State Bar's public attorney licensee directory by name, bar number, or advanced filters. Get license status, admission date, discipline history, standing, address, and self-reported practice areas.
Run on Apify ↗