FindLaw Attorney Directory Scraper avatar

FindLaw Attorney Directory Scraper

Pricing

from $9.99 / 1,000 results

Go to Apify Store
FindLaw Attorney Directory Scraper

FindLaw Attorney Directory Scraper

Scrapes individual attorneys from FindLaw by state, city, and practice area, providing names, contact details, addresses, practice areas, reviews, ratings, badges, and profile URLs. Filters out firm listings and supports multi-city searc

Pricing

from $9.99 / 1,000 results

Rating

0.0

(0)

Developer

Jamshaid Arif

Jamshaid Arif

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Extract individual attorney profiles from FindLaw's lawyer directory by state, city and practice area. Returns name, email, phone, office address, practice areas, review counts and badges, one row per attorney.

FindLaw mixes law-firm listings into its attorney search results. This actor identifies firm pages from the search card before fetching them, so you get individual attorneys without paying for requests to firm profiles you don't want.

What you get

Each record in the dataset:

FieldNotes
nameAs shown on the profile
profile_typeattorney, firm, or unknown (see below)
emailPublisher-declared where possible; see email_source
email_sourcemailto, jsonld, form_field, base64, page_text, or contact:… if it came from the contact page. The first two are strongest.
email_is_generictrue for shared inboxes like info@, intake@, leads@ — deliverable, but not a person
phoneNormalised to (305) 555-0100
street, city, state, zipOffice address
websiteFirm site, when listed
practice_areasCleaned list
practice_area_shares{ "Divorce": 60, ... } when the profile gives percentages
review_count, ratingFrom the search card or profile schema
is_super_lawyers, has_free_consultation, badgesSearch-card badges
attorneys_at_firmRoster, when the page is a firm
found_in_cityWhich city listing surfaced this profile
profile_url, profile_idStable FindLaw identifiers

Input

FieldDefaultNotes
Practice areacriminal-lawThe slug from the FindLaw URL. Use Custom practice area for anything not in the list — copy it from lawyers.findlaw.com/<slug>/...
Stateflorida
Cities(empty)Empty scrapes every city in the state. Otherwise one name per entry. A [texas] entry switches state for the entries after it, so one list can span the country.
Profile typeattorneysfirms or both also available
Fetch contact pageonMost emails live only on the contact form page. Off halves requests, finds far fewer emails.
Max resultsStop after N records. Good for a test run.
Max citiesScrape the first N of the list
Max pages per city50Safety cap
Stale pages4Move to the next city after this many consecutive pages with no unseen profiles. Neighbouring cities list the same firms, so this saves a lot of requests. 0 walks to the end.
Requests per second1.5Shared across workers, capped at 3
Concurrency3Hides latency; does not raise the request rate. Capped at 5.
ProxyoffOne sticky session per worker

Example

{
"practiceArea": "personal-injury-plaintiff",
"state": "texas",
"cities": ["Houston", "Dallas", "Austin", "[florida]", "Miami", "Tampa"],
"profileType": "attorneys",
"maxResults": 500
}

How firm filtering works

Two layers. The search card title is checked first — a corporate form (PLLC, LLP, Law Offices of, a bare trailing Law or Firm) drops the card before any request is spent. Anything that reaches the profile page is classified again from its structured data, name shape, and whether it lists a roster of attorneys.

Profiles the classifier cannot call confidently are kept and labelled unknown, never dropped silently. Filter on profile_type if you want only the confident ones.

Behaviour worth knowing

Duplicates are by profile ID. FindLaw sometimes carries two profiles for the same person (a personal one and a firm-attached one). Both are returned; dedupe on name + phone if that matters to you.

Some phone numbers are FindLaw call-tracking lines, not the firm's published number. They forward correctly, but they're rented numbers assigned per listing. Spot-check against the firm's own site if you need the real line.

Migrations resume cleanly. City progress and seen-profile IDs are kept in actor state, so a run moved between servers picks up at the interrupted city without re-scraping or duplicating.

Aborts are clean. An aborted run finishes its current page, pushes what it has, and exits. The interrupted city is left unmarked so a rerun with the same state resumes there.

Rate limiting is deliberate. The request rate is a shared token bucket across all workers and is capped at 3 requests/second. Raising concurrency does not raise the rate. This keeps runs predictable and avoids the 429 back-offs that make a fast run slower than a steady one.

Pay-per-event

When run under pay-per-event pricing, the actor charges one attorney-scraped event per record pushed and stops when your spend limit is reached. Records are pushed in batches of 100, so the overshoot is at most one batch.

Compliance — read before running

This actor collects publicly listed professional contact information from a directory where attorneys publish it in order to be contacted. It does not log in, bypass paywalls, or access anything not visible to an anonymous visitor.

That said, the following are your responsibility as the user, not the actor's:

  • FindLaw's Terms of Use. FindLaw (Thomson Reuters) restricts automated access in its terms. Review them before running at scale and decide for yourself whether your use is acceptable.
  • How you use the contact data. Attorney emails and phones are subject to anti-spam and privacy law where the recipient is located and where you are — CAN-SPAM in the US, GDPR/UK GDPR if any subject is in Europe, CCPA for California residents, and state bar rules on solicitation if you are yourself a lawyer. Unsolicited bulk email to addresses gathered this way is regulated in most jurisdictions.
  • Apify's Terms of Service, which govern what may be run on the platform.

The defaults (1.5 requests/second, 3 workers) are conservative on purpose. The actor is not built to evade blocking beyond ordinary browser-like request headers; if FindLaw rate-limits or blocks a run, it backs off and retries a few times, then stops.

Known gaps

  • Practice-area slugs other than criminal-law and personal-injury-plaintiff in the dropdown have not all been verified against live FindLaw URLs. A wrong slug returns no cities. Use Custom practice area with a slug copied from a real URL to be sure.
  • City name → URL conversion follows FindLaw's convention (St Petersburgst-petersburg, Castleton-on-Hudsoncastleton-on-hudson). A city with no directory page returns 404, is logged, and the run continues.
  • Review and rating fields depend on what the search card and profile schema expose; many profiles have neither.