FindLaw Directory Scraper ⚖️ avatar
FindLaw Directory Scraper ⚖️

Pricing

Pay per usage

Go to Apify Store
FindLaw Directory Scraper ⚖️

FindLaw Directory Scraper ⚖️

Extract data on lawyers and law firms directly from the FindLaw directory. This actor is designed for flexibility. For the fastest data collection, simply disable the "Detail Page" option in your input settings to scrape listing summaries rapidly.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

FindLaw Lawyer Directory Scraper

Extract comprehensive lawyer and law firm data from FindLaw.com directory listings with lightning-fast JSON-LD extraction and intelligent HTML fallback.

What Does This Actor Do?

This actor scrapes lawyer and law firm information from FindLaw.com directory pages. Simply provide a practice area, state, and optional county/city, or paste a direct FindLaw directory URL. The scraper automatically handles pagination and extracts detailed information including contact details, ratings, reviews, and geographic coordinates.

Key Features:

  • Fast JSON-LD Extraction - Prioritizes structured data for maximum speed and reliability
  • 🔄 Smart HTML Fallback - Automatically switches to HTML parsing when needed
  • 📊 Rich Data Fields - Name, address, phone, website, ratings, reviews, coordinates, and more
  • 🎯 Precise Targeting - Filter by practice area, state, county, or city
  • 🔁 Automatic Pagination - Seamlessly crawls multiple pages until your target is reached
  • Built-in Deduplication - Ensures no duplicate listings in your results

Use Cases

Build comprehensive databases of attorneys by practice area and location for market research, competitive analysis, or legal referral services.

Lead Generation

Generate qualified leads for legal marketing agencies, CRM systems, or business development teams targeting specific legal niches.

Market Intelligence

Analyze lawyer distribution, rating trends, and service coverage across different regions and practice areas.

Directory Building

Create custom legal directories, comparison tools, or referral platforms with up-to-date lawyer information.

Input Configuration

FieldTypeRequiredDescriptionExample
startUrlStringNo*Direct FindLaw directory URL to scrapehttps://lawyers.findlaw.com/bankruptcy-law/california/alameda-county/
practiceAreaStringNo*Legal practice area slugbankruptcy-law, personal-injury-plaintiff, criminal-defense
stateStringNo*U.S. state slugcalifornia, new-york, texas
countyStringNoCounty slug for narrower searchesalameda-county, los-angeles
cityStringNoCity slug for highly specific searchessan-francisco, new-york
collectDetailsBooleanNoVisit detail pages to extract bio and team members (slower but richer data, default: false)true, false
results_wantedIntegerNoMaximum number of listings to extract (default: 100)50, 200, 1000
max_pagesIntegerNoSafety limit on pages to visit (default: 20)5, 10, 50
proxyConfigurationObjectNoProxy settings (residential recommended)See Apify proxy docs

*Note: Either provide startUrl OR the combination of practiceArea + state. If startUrl is provided, it overrides other location fields.

Input Example

{
"practiceArea": "bankruptcy-law",
"state": "california",
"county": "alameda-county",
"results_wanted": 100,
"max_pages": 10
}

Or with a direct URL:

{
"startUrl": "https://lawyers.findlaw.com/personal-injury-plaintiff/california/los-angeles/",
"results_wanted": 50
}

Output Format

Each lawyer/firm listing includes the following fields:

{
"name": "John Doe Law Firm",
"address": {
"street": "123 Main Street",
"city": "Oakland",
"state": "CA",
"zip": "94612"
},
"addressFormatted": "123 Main Street, Oakland, CA 94612",
"phone": "(510) 555-1234",
"website": "https://www.johndoelaw.com",
"rating": "5.0",
"reviews": 42,
"profileUrl": "https://lawyers.findlaw.com/profile/john-doe-law-firm",
"latitude": "37.8044",
"longitude": "-122.2712",
"image": "https://lawyers.findlaw.com/static/c/images/env_prod/type_profile/firmwld_123/pid_1/firm_name.jpg",
"practiceAreas": "Bankruptcy, Debt Relief",
"bio": "John Doe Law Firm has been serving the Oakland community for over 20 years...",
"people": "John Doe, Jane Smith, Robert Johnson"
}

Field Descriptions

  • name - Lawyer or law firm name
  • address - Structured address object with street, city, state, and ZIP
  • addressFormatted - Human-readable address string
  • phone - Contact phone number
  • website - Official website URL
  • rating - Average rating (typically 0-5 scale)
  • reviews - Total number of reviews
  • profileUrl - FindLaw profile page URL
  • latitude/longitude - Geographic coordinates (from JSON-LD when available)
  • image - Profile image URL with proper extension (.jpg)
  • practiceAreas - Practice areas as comma-separated string
  • bio - Lawyer/firm biography and overview (only if collectDetails is enabled)
  • people - Team members and attorneys (only if collectDetails is enabled)

How It Works

Step 1: URL Construction

The actor builds the appropriate FindLaw directory URL based on your input parameters or uses your provided startUrl.

Step 2: Page Fetching

Using fast HTTP requests, the actor retrieves directory listing pages without the overhead of a browser.

Step 3: Data Extraction

  • Primary Method: Parses JSON-LD structured data embedded in the page for maximum speed and accuracy
  • Fallback Method: If JSON-LD is unavailable, intelligently extracts data from HTML elements

Step 4: Deduplication

Each listing is checked against previously seen entries to ensure no duplicates in your dataset.

Step 5: Pagination

The actor automatically detects and follows "Next" page links until reaching your results_wanted limit or max_pages cap.

Step 6: Data Storage

All extracted listings are saved to the Apify dataset in a clean, structured format ready for export.

Performance & Limits

Speed

  • Average: 100-200 listings per minute
  • Factors: Network speed, proxy quality, page complexity

Resource Usage

  • Compute Units: Approximately 0.01-0.02 CU per 100 listings
  • Memory: Minimal (< 512 MB)

Rate Limiting

The actor uses residential proxies by default to avoid rate limiting. For large-scale scraping (1000+ listings), consider:

  • Increasing max_pages gradually
  • Using high-quality residential proxies
  • Running multiple smaller jobs instead of one large job

Troubleshooting

No Results Returned

Possible Causes:

  • Invalid practice area, state, or county slug
  • No lawyers listed for the specified criteria
  • Incorrect startUrl format

Solution: Verify your input parameters match FindLaw's URL structure. Visit FindLaw.com manually to confirm listings exist for your criteria.

Incomplete Data Fields

Possible Causes:

  • Some lawyers don't provide all information
  • FindLaw page structure varies by listing type

Solution: This is normal. Not all lawyers have ratings, reviews, or complete contact information. The actor extracts all available data.

Scraper Stops Early

Possible Causes:

  • Reached max_pages limit before results_wanted
  • No more pages available for the search criteria

Solution: Increase max_pages or verify that enough listings exist for your search criteria.

Proxy Errors

Possible Causes:

  • Proxy configuration issues
  • Residential proxy pool exhausted

Solution: Ensure proxyConfiguration is properly set. Use Apify's residential proxies for best results.

Example Usage

Via Apify Console

  1. Open the actor in Apify Console
  2. Fill in the input fields (practice area, state, etc.)
  3. Click "Start"
  4. Download results from the Dataset tab

Via Apify API

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({
token: 'YOUR_APIFY_TOKEN',
});
const input = {
practiceArea: 'bankruptcy-law',
state: 'california',
county: 'alameda-county',
results_wanted: 100,
};
const run = await client.actor('YOUR_USERNAME/findlaw-directory-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Via Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run_input = {
"practiceArea": "personal-injury-plaintiff",
"state": "new-york",
"results_wanted": 50,
}
run = client.actor('YOUR_USERNAME/findlaw-directory-scraper').call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Data Export Formats

Export your scraped data in multiple formats:

  • JSON - Structured data with full field preservation
  • CSV - Spreadsheet-compatible format
  • Excel - Ready for analysis in Microsoft Excel
  • HTML - Human-readable table format
  • XML - For integration with legacy systems

This actor extracts publicly available information from FindLaw.com directory listings. Users are responsible for:

  • Complying with FindLaw's Terms of Service
  • Respecting data privacy regulations (GDPR, CCPA, etc.)
  • Using scraped data ethically and legally
  • Not overwhelming FindLaw's servers with excessive requests

Always review and comply with applicable laws and website terms before scraping.

Support

Need help? Have questions?

Version History

v1.0.0 - Initial release

  • JSON-LD extraction with HTML fallback
  • Automatic pagination support
  • Built-in deduplication
  • Comprehensive data fields
  • Production-ready performance