OrbTop

Multi-State Bar Association Scraper

LEAD GENERATIONBUSINESSOTHER

Multi-State Bar Association Scraper

Extract licensed attorney records from official state bar websites across 15 U.S. states in a single run. Data comes from the authoritative source — the state bar's own public directory — so bar status, disciplinary history, and contact details are as current as the bar site itself.

Supported states: AZ, CA, FL, GA, ID, IL, MA, ME, MN, NJ, NY, OH, PA, TN, TX


What You Get

Each attorney record contains up to 26 fields depending on what the state bar publishes:

Field Type Description
state_bar string State code (CA, TX, NY, etc.)
bar_number string Bar registration number, unique within a state
full_name string Full name as listed by the state bar
first_name string First name
middle_name string Middle name or initial
last_name string Last name
suffix string Name suffix (Jr., Sr., III, etc.)
bar_status string Active, Inactive, Suspended, Disbarred, Retired, or Deceased
license_type string Attorney, Foreign Legal Consultant, Registered In-House Counsel, etc.
admission_date string Date admitted to the bar in ISO format (YYYY-MM-DD)
eligible_to_practice boolean Whether the attorney is currently authorized to practice in this state
firm_name string Current firm or employer
address string Practice street address
city string Practice city
state string Practice state abbreviation
zip string Practice ZIP code
county string Practice county (when published by the state bar)
phone string Formatted as (XXX) XXX-XXXX
fax string Formatted as (XXX) XXX-XXXX (when available)
email string Publicly listed email (availability varies by state)
practice_areas array Self-reported or bar-certified specializations
law_school string Law school attended
sections array Bar association section memberships
has_disciplinary_history boolean Whether any disciplinary actions are on record
disciplinary_actions array Disciplinary actions with date, type, and description
judicial_district string Circuit or judicial district (when available)
profile_url string Direct link to the attorney profile on the state bar site

Dataset Views

Three pre-built views are available:

  • Attorney Overview — name, state bar, bar number, status, firm, city, state, phone
  • Detailed Attorney Record — all 26 fields
  • Compliance Check — name, bar number, state bar, status, eligible_to_practice, admission date, disciplinary history, profile_url

How to Use

Input Parameters

Parameter Type Default Description
states array ["CA"] One or more state codes. Supported: AZ, CA, FL, GA, ID, IL, MA, ME, MN, NJ, NY, OH, PA, TN, TX
searchName string Search by last name, or "Last, First". Leave blank to crawl by bar number range (CA, FL)
barNumber string Look up a single attorney by bar number. Overrides name search
city string Filter results by city
barStatus string Filter by status: active, inactive, suspended, disbarred, retired, deceased
maxItems integer 100 Cap on total records across all selected states. 0 = unlimited
barNumberStart integer 100000 Starting bar number for range-based crawling (CA, FL)
proxyConfiguration object US Apify proxy US proxies are required — several state bar sites block non-US traffic

Name Search Across Multiple States

{
  "states": ["CA", "TX", "NY"],
  "searchName": "Smith",
  "barStatus": "active",
  "maxItems": 500
}

Single Bar Number Lookup

{
  "states": ["CA"],
  "barNumber": "300000",
  "maxItems": 1
}

Range Crawl for Bulk Records (California)

{
  "states": ["CA"],
  "barNumberStart": 340000,
  "maxItems": 1000
}

Sample Output

{
  "state_bar": "CA",
  "bar_number": "300000",
  "full_name": "Hae-Ri You",
  "first_name": "Hae-Ri",
  "middle_name": null,
  "last_name": "You",
  "suffix": null,
  "bar_status": "Active",
  "license_type": "Attorney",
  "admission_date": "2014-12-02",
  "eligible_to_practice": true,
  "firm_name": null,
  "address": "2101 Lyon Avenue",
  "city": "Belmont",
  "state": "CA",
  "zip": "94002",
  "county": null,
  "phone": "(425) 505-7437",
  "fax": null,
  "email": null,
  "practice_areas": [],
  "law_school": "UC Berkeley SOL; Berkeley CA",
  "sections": [],
  "has_disciplinary_history": false,
  "disciplinary_actions": [],
  "judicial_district": null,
  "profile_url": "https://apps.calbar.ca.gov/attorney/Licensee/Detail/300000"
}

Use Cases

  • Compliance verification — confirm an attorney holds an active license and has no disciplinary history before engagement, using the eligible_to_practice and has_disciplinary_history fields
  • Attorney lead generation — build outreach lists filtered by state, city, and practice area; use admission_date to estimate seniority without resume screening
  • Expert witness vetting — verify credentials against official bar records, including law school and admission date
  • Background check enrichment — access disciplinary history from state disciplinary boards, which commercial directories do not carry
  • LegalOps data enrichment — append current bar status and verified contact information to existing attorney databases for conflict checks and panel management

State Coverage

State Bar Site Crawl Method
Arizona (AZ) azbar.org Name search (JSON API, two-phase)
California (CA) calbar.ca.gov Bar number range or single lookup
Florida (FL) floridabar.org Bar number range or name search
Georgia (GA) gabar.org Name search (JSON API)
Idaho (ID) isb.idaho.gov Sequential ID iteration
Illinois (IL) iardc.org Name search (two-phase HTML)
Maine (ME) mebaroverseers.org Sequential bar number iteration
Massachusetts (MA) massbbo.org Name search
Minnesota (MN) mars.courts.state.mn.us Sequential attyID iteration (recent admissions)
New Jersey (NJ) njcourts.gov Name search
New York (NY) iapps.courts.state.ny.us Name search
Ohio (OH) supremecourt.ohio.gov Name search
Pennsylvania (PA) padisciplinaryboard.org Name search
Tennessee (TN) tbpr.org Sequential BPR number iteration
Texas (TX) texasbar.com Name search

Why Official Bar Data vs. Attorney Directories

FindLaw, Avvo, and Martindale aggregate self-reported attorney profiles. They do not have access to a state bar's internal disciplinary system.

Official state bar websites are the authoritative source for:

  • Bar status — active, suspended, disbarred, or inactive as determined by the state bar
  • Disciplinary history — formal reprimands, probations, and disbarment records
  • Admission date — the exact date an attorney was admitted in that jurisdiction
  • Eligible to practice — a definitive boolean that directory scrapers cannot provide

For compliance, verification, or background screening workflows, official state bar data is not interchangeable with directory data.


Pricing

Pay-Per-Event (PPE) pricing. You pay per attorney record saved to the dataset — not per page fetched. Pages that return no record (gaps in bar number sequences, empty search results) are not charged.

Records Estimated cost
1,000 ~$4
10,000 ~$40
100,000 ~$400

Apify platform compute costs are billed separately and are typically small relative to data volume.


Limitations

  • 15 states currently supported. Requesting an unsupported state code returns an error listing available codes. Additional states are tracked in the project enhancement queue.
  • MN coverage is biased toward recent admissions (~2009 onward). Older Minnesota attorneys live in scattered earlier attyID bands; full historical coverage requires name-based search, which this actor does not implement for MN.
  • Email availability is inconsistent. Most state bars do not publish attorney emails. California obfuscates email addresses with JavaScript — CA records will have null for email.
  • Field coverage varies by state. County, judicial district, law school, and section memberships are not published by every state bar. Unavailable fields return null.
  • barStatus filter is applied post-extraction. It does not change what a state bar's search form returns. Some bars only expose active attorneys through their public search interface.
  • CA and FL use bar number range crawling. These states do not have a functional public name-search API. Set barNumberStart and maxItems to control run scope.
  • Rate limits. The crawler runs at 2–5 concurrent requests with automatic retries. Full-state crawls of 100k+ records take several hours. NY and NJ are more restrictive — residential proxies reduce failure rates on those states.

Related Actors