# FindLaw Attorney Scraper (`parseforge/findlaw-scraper`) Actor

Scrapes attorney profiles from FindLaw by practice area, state, city, or direct URL. Returns each attorney as a flat row with name, firm, contact details, rating, and practice areas.

- **URL**: https://apify.com/parseforge/findlaw-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 18 total users, 1 monthly users, 90.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### FindLaw Attorney Scraper

**Scrape attorney profiles from FindLaw by practice area, state, or city, up to a million per run.** Every lawyer comes with their name, firm, contact details, ratings, and practice areas. No login or API key. Export to CSV, JSON, Excel, or XML.

FindLaw's directory is the largest legal directory online, but manually copying attorney data is slow and error-prone. This Actor reads the public attorney profiles directly, filtered by practice area, state, or city, and returns each match in one fixed schema. It works without an API key or registration.

| Who uses it | What they scrape FindLaw for |
|---|---|
| Legal marketers | Build a list of attorneys in a niche to pitch their services |
| Law firm recruiters | Find attorneys by practice area and location for outreach |
| Legal tech startups | Populate a directory or matching tool with attorney data |
| Researchers | Analyze the distribution of attorneys across states and practice areas |

### What it does

This Actor collects attorney profiles from FindLaw by practice area, state, city, or direct URL, and returns each one as a flat row.

- ⚖️ **Practice area filter:** Choose from 15 areas like personal injury, criminal law, or immigration.
- 📍 **Location targeting:** Narrow by state or city, or leave city empty for a state-wide search.
- 🔗 **Direct URL mode:** Paste any FindLaw search URL to scrape exactly those results.
- 📊 **Flat row output:** Each attorney is one row with name, firm, contact, rating, and practice areas.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with FindLaw data

**📈 Build a lead list for legal services.**

A legal marketing agency runs the Actor for personal injury attorneys in New York and exports the CSV to their CRM for outreach.

**🔍 Recruit attorneys by niche.**

A recruiter searches for immigration lawyers in Texas and filters by city to find candidates for a firm.

**🗺️ Map the legal market.**

A researcher scrapes all bankruptcy attorneys in California to analyze geographic distribution and firm sizes.

**🧩 Power a legal directory.**

A startup uses the Actor to seed their app with attorney profiles across multiple practice areas and states.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | Scrape public FindLaw pages without registration or OAuth. |
| **Flexible targeting** | Combine practice area, state, and city, or use a direct URL. |
| **Scalable** | Free preview up to 10 attorneys, paid runs up to 1,000,000. |
| **Structured data** | Every attorney is a flat row ready for CSV, JSON, Excel, or XML. |

### How it compares

This Actor and the competitor below both scrape FindLaw attorney profiles, but this Actor offers flexible filtering by practice area, state, and city, plus a direct URL mode.

| Feature | ParseForge | FindLaw Law Firm Scraper - Attorney & Law Firm Data Extraction |
|---|---|---|
| Filter by practice area | Yes | Not listed |
| Filter by state | Yes | Not listed |
| Filter by city | Yes | Not listed |
| Direct URL input | Yes | Not listed |
| Client reviews | Yes | Yes |
| Contact details | Yes | Yes |

### Configure the run

Drive the Actor from practice area, state, city, or a direct FindLaw URL, and filters run as each profile is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "practiceArea": "personal-injury",
  "state": "new-york",
  "maxItems": 10
}
```

A larger pull:

```json
{
  "practiceArea": "personal-injury",
  "state": "new-york",
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.009 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.90 |
| 1,000 results | $9.00 |
| 10,000 results | $90.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [FindLaw Attorney Scraper](https://apify.com/parseforge/findlaw-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to FindLaw through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/findlaw-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Verify your practice area and state/city values match FindLaw's URL slugs. Try a broader search, like state-only without a city, or use a direct FindLaw URL.

**The Actor stops before reaching maxItems.**

FindLaw may not have more attorneys for your filters. Check the run log for the last page scraped, or broaden your filters.

**Some fields are empty in the output.**

Not all FindLaw profiles have every field. Empty values mean the data was not present on the page.

**I get an error when using a direct URL.**

Make sure the URL is a valid FindLaw search URL, not a single attorney profile. The Actor expects a search results page.

**The run is slow.**

Reduce maxItems or narrow your filters to a specific city. FindLaw pages can be heavy, so smaller runs are faster.

### FAQ

| Question | Answer |
|---|---|
| What data does this Actor return for each attorney? | Each row includes the attorney's name, firm name, address, phone, website, rating, review count, and practice areas, plus the source URL. |
| Can I scrape all attorneys in a state? | Yes. Leave the city field empty and set a practice area to scrape every attorney in that state for that area, up to your maxItems limit. |
| How do I use a direct FindLaw URL? | Paste the full search URL into the startUrl field. It overrides the practice area, state, and city filters. |
| Is there a free tier? | Free Apify users can scrape up to 10 attorneys as a preview. Paid users can set maxItems up to 1,000,000. |
| What practice areas are supported? | The Actor includes 15 areas: personal injury, criminal law, family law, business law, immigration, bankruptcy, real estate, tax law, employment law, estate planning, intellectual property, DUI/DWI, medical malpractice, workers compensation, and consumer protection. |
| Does this Actor handle pagination? | Yes, it automatically follows pagination on FindLaw search results until it reaches maxItems or no more results. |
| Can I export the data? | Yes, the dataset can be exported to CSV, JSON, Excel, or XML from the Apify platform. |
| Do I need to log in to FindLaw? | No, the Actor scrapes public profile pages without any login or API key. |
| Can I filter by city? | Yes, enter a city name like 'los-angeles' or 'manhattan' to narrow results. Leave it empty for a state-wide search. |
| What if I get no results? | Check that your practice area and location are spelled correctly and that FindLaw has attorneys in that combination. Try a broader search or a direct URL. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by FindLaw, a Thomson Reuters business. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `practiceArea` (type: `string`):

Legal practice area to search for.

## `state` (type: `string`):

US state to search in (e.g. new-york, california, texas).

## `city` (type: `string`):

City to narrow results (e.g. los-angeles, manhattan). Leave empty for state-wide search.

## `startUrl` (type: `string`):

Direct FindLaw search URL. Overrides practice area, state, and city filters.

## `maxItems` (type: `integer`):

Free users: Limited to 10 attorneys (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "practiceArea": "personal-injury",
  "state": "new-york",
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "practiceArea": "personal-injury",
    "state": "new-york",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/findlaw-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "practiceArea": "personal-injury",
    "state": "new-york",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/findlaw-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "practiceArea": "personal-injury",
  "state": "new-york",
  "maxItems": 10
}' |
apify call parseforge/findlaw-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/findlaw-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NbMHldW4hghOosb03/builds/TzIQwDZ78yDfkuG2E/openapi.json
