# Law Firm Leads, Verified Attorney Contacts (`thoob/law-firm-leads`) Actor

Active law firms from official state Secretary of State registries. Free verified directory; switch on contacts for a found-on-page phone or verified email, and pay only for records that carry one.

- **URL**: https://apify.com/thoob/law-firm-leads.md
- **Developed by:** [Pono Data](https://apify.com/thoob) (community)
- **Categories:** Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$25.00 / 1,000 verified contact (phone or email)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Law Firm Leads, Verified Attorney Contacts

Active law firms from official state Secretary of State business registries. Run it
free for the verified firm directory; switch on contacts to attach a found-on-page
phone or a deliverability-checked email, and pay only for the records that carry one.

### Two ways to run it

Free directory (default): every active law firm in the state, at no charge, with
business name, address, entity type, formation date, and a link to its Secretary of
State record.

Verified contacts (paid): with "Find verified contacts" on, the actor resolves each
firm's own website and attaches a phone or a verified email found on the page. You
pay only for a delivered record that carries a verified contact. A record with no
findable contact, and any rejected row, is free.

### How the contact match works

The registry carries no website, so the actor does not assume one. It forms and
searches candidate domains, fetches the live site, and accepts it only when the page
shows the firm name AND an unmistakable in-state signal (a state area-code phone, an
in-state ZIP, or the state name). A same-named firm in another state does not match,
and a domain-for-sale page is rejected. Precision first: a wrong contact is worse
than none.

### Sample output (with contacts)

| Firm | State | Phone | Verified email | Source |
|---|---|---|---|---|
| Henderson Law Office LLC | CO | (303) ... | contact@hendersonlaw.com | SoS record link |
| M. Colin Bresee Law Firm Inc | CO | (970) 614-0913 | - | SoS record link |

### Input

- state: two-letter code (Colorado and Oregon supported in this version)
- withContacts: resolve websites and attach verified phone/email (the paid tier)
- requireContact: with contacts on, deliver only records that have one
- maxRecords, minFormationYear: scope the run

### Scope and sourcing

Public records only: the state Secretary of State business roster, plus contact
details a firm publishes on its own website. No logins, no paywalls, no access
bypass. The crawler identifies itself, respects robots.txt, and stops at any site
that refuses it. United States only. Every row carries its Secretary of State source
URL and retrieval time.

# Actor input Schema

## `trades` (type: `array`):

Home-services trades to include (by category). Empty = all home-services trades.
## `state` (type: `string`):

US state postal code of the business principal address. Colorado only in this version.
## `withContacts` (type: `boolean`):

Off (default) returns the free verified business directory: name, address, type, and the Secretary of State source link, at no charge. On resolves each company's website and attaches a found-on-page phone or a deliverability-checked email. You are charged only for a delivered record that carries a verified contact; records without one, and rejects, are free.
## `requireContact` (type: `boolean`):

With 'Find verified contacts' on, drop records where no phone or verified email was found, so every delivered row is a reachable lead. Has no effect on the free directory.
## `maxRecords` (type: `integer`):

Stop after delivering this many records. 0 = no cap (bounded by your spend limit).
## `minFormationYear` (type: `integer`):

Only businesses formed in or after this year. 0 = no floor.

## Actor input object example

```json
{
  "trades": [],
  "state": "CO",
  "withContacts": false,
  "requireContact": false,
  "maxRecords": 100,
  "minFormationYear": 0
}
````

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("thoob/law-firm-leads").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("thoob/law-firm-leads").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call thoob/law-firm-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=thoob/law-firm-leads",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Law Firm Leads, Verified Attorney Contacts",
        "description": "Active law firms from official state Secretary of State registries. Free verified directory; switch on contacts for a found-on-page phone or verified email, and pay only for records that carry one.",
        "version": "0.0",
        "x-build-id": "hMO8e8G908ApqGbmr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/thoob~law-firm-leads/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-thoob-law-firm-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/thoob~law-firm-leads/runs": {
            "post": {
                "operationId": "runs-sync-thoob-law-firm-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/thoob~law-firm-leads/run-sync": {
            "post": {
                "operationId": "run-sync-thoob-law-firm-leads",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "trades": {
                        "title": "Trades",
                        "type": "array",
                        "description": "Home-services trades to include (by category). Empty = all home-services trades.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "electrical",
                                "plumbing",
                                "hvac",
                                "heating",
                                "roofing",
                                "construction",
                                "general-contractor",
                                "remodeling",
                                "mechanical",
                                "landscaping",
                                "painting",
                                "concrete",
                                "flooring"
                            ]
                        },
                        "default": []
                    },
                    "state": {
                        "title": "State",
                        "type": "string",
                        "description": "US state postal code of the business principal address. Colorado only in this version.",
                        "default": "CO"
                    },
                    "withContacts": {
                        "title": "Find verified contacts (phone + email)",
                        "type": "boolean",
                        "description": "Off (default) returns the free verified business directory: name, address, type, and the Secretary of State source link, at no charge. On resolves each company's website and attaches a found-on-page phone or a deliverability-checked email. You are charged only for a delivered record that carries a verified contact; records without one, and rejects, are free.",
                        "default": false
                    },
                    "requireContact": {
                        "title": "Only deliver records that have a verified contact",
                        "type": "boolean",
                        "description": "With 'Find verified contacts' on, drop records where no phone or verified email was found, so every delivered row is a reachable lead. Has no effect on the free directory.",
                        "default": false
                    },
                    "maxRecords": {
                        "title": "Max records to deliver",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after delivering this many records. 0 = no cap (bounded by your spend limit).",
                        "default": 100
                    },
                    "minFormationYear": {
                        "title": "Minimum formation year",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only businesses formed in or after this year. 0 = no floor.",
                        "default": 0
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
