# Expertise.com Scraper | US Lawyers & Contractors by City (`fervent_bus/expertise-com`) Actor

Find top-rated US professionals on Expertise.com. Search lawyers, roofers, CPAs, plumbers, contractors by city & state. Returns name, phone, website, rating, ranking. 200+ categories, all 50 states.

- **URL**: https://apify.com/fervent\_bus/expertise-com.md
- **Developed by:** [Archit Khurana](https://apify.com/fervent_bus) (community)
- **Categories:** Lead generation, AI, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## Expertise.com Scraper — US Professional Directory & Business Leads

Extract verified, top-rated service professionals from [Expertise.com](https://www.expertise.com) — the most trusted US professional directory. Filter by state, city, and category to get structured lead data including business name, phone, website, rating, ranking, and direct profile link.

### What This Does

The **only Apify actor for Expertise.com** — a curated directory of top-rated service professionals across 200+ categories in every US city and state. Scrape lawyers, contractors, financial advisors, web designers, roofers, plumbers and any other service professional. Filter by state, city and category. Get business name, phone, website, ranking, rating and direct profile links. No login required.

**Use cases:**

- Scrape expertise.com professionals by city and specialty
- Find top rated professionals in any US city
- Build US professional leads by city and category
- Extract expertise.com data for market research or AI pipelines

### Who This Is For

- **B2B sales teams** finding verified US service professionals by location
- **Marketing agencies** building prospect lists by category and city
- **Lead generation companies** targeting specific US markets
- **Recruitment agencies** sourcing professionals by specialty
- **Market researchers** analyzing US service industries
- **AI agents** finding top professionals in any US city (MCP-compatible)

### Coverage

**200+ service categories including:**

| Industry | Categories |
|----------|-----------|
| **Legal** | Personal injury lawyers, car accident lawyers, divorce lawyers, criminal lawyers, DUI lawyers, bankruptcy lawyers, immigration lawyers, estate planning lawyers, workers' comp lawyers, medical malpractice lawyers |
| **Home Services** | Roofing, plumbing, electricians, HVAC, landscaping, moving, painting, pest control, water damage, remodeling, flooring, home inspection, solar, tree services, junk removal |
| **Finance** | Financial advisors, accountants/CPAs, tax services, bookkeepers, mortgage brokers |
| **Business** | Web design, SEO agencies, digital marketing, software development, property management, graphic designers |
| **Insurance** | Homeowners insurance, life insurance, car insurance, health insurance |

**All 50 US states and hundreds of cities covered.**

### Input

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `state` | string | US state slug (e.g. `texas`, `california`, `new-york`) | `texas` |
| `city` | string | City slug (e.g. `dallas`, `houston`). Leave empty for all cities. | `dallas` |
| `category` | string | Category slug (e.g. `personal-injury-lawyers`, `roofing`). Leave empty for all. | `personal-injury-lawyers` |
| `maxResults` | integer | Maximum records to return | `100` |
| `proxyConfiguration` | object | Optional proxy (usually not needed) | — |

#### Category slug examples

```
personal-injury-lawyers  roofing          financial-advisors
car-accident-lawyers     plumbing         accountant-cpa
divorce-lawyers          electricians     tax-services-cpa
criminal-lawyers         hvac             bookkeepers
dui-lawyers              landscaping      mortgage-brokers-lenders
bankruptcy-lawyers       moving           web-design
immigration-lawyers      painting         seo-agencies
estate-planning-lawyers  pest-control     digital-marketing-agencies
```

#### Example inputs

**Single city + category** (fastest, most focused):

```json
{
  "state": "texas",
  "city": "dallas",
  "category": "personal-injury-lawyers",
  "maxResults": 50
}
```

**All categories in a city:**

```json
{
  "state": "california",
  "city": "los-angeles",
  "maxResults": 500
}
```

**All cities for a category in a state:**

```json
{
  "state": "florida",
  "category": "roofing",
  "maxResults": 1000
}
```

### Output

Each record contains:

```json
{
  "businessName": "Smith & Associates Law Firm",
  "profileUrl": "https://www.expertise.com/legal/personal-injury-lawyers/texas/dallas#smithassociateslawfirm",
  "ranking": 1,
  "isFeatured": true,
  "category": "personal-injury-lawyers",
  "city": "Dallas",
  "state": "TX",
  "address": "123 Main St, Dallas, TX, 75201",
  "phone": "(214) 555-1234",
  "website": "https://smithlaw.com",
  "rating": 4.9,
  "reviewCount": 87,
  "expertiseScore": 4.8,
  "description": "Smith & Associates specializes in personal injury cases...",
  "services": ["General Negligence", "Traumatic Brain Injury", "Car Accidents"],
  "licenseNumber": null,
  "licenseStatus": null,
  "isVerified": false,
  "primaryContact": null,
  "providerId": 3079628,
  "scrapedAt": "2026-08-13T10:00:00+00:00"
}
```

#### Output field reference

| Field | Type | Description |
|-------|------|-------------|
| `businessName` | string | Business or professional name |
| `profileUrl` | string | Direct link to their listing on Expertise.com |
| `ranking` | integer | Their position in the ranked list (1 = top pick) |
| `isFeatured` | boolean | Whether this is a featured/boosted listing |
| `category` | string | Service category slug |
| `city` | string | City name |
| `state` | string | State abbreviation (e.g. TX) |
| `address` | string | Full business address |
| `phone` | string | Formatted US phone number |
| `website` | string | Business website URL |
| `rating` | float | Average review rating (0–5) |
| `reviewCount` | integer | Total number of reviews |
| `expertiseScore` | float | Expertise.com internal score |
| `description` | string | Business description/snippet |
| `services` | array | Service specialties or practice areas |
| `licenseNumber` | string | Professional license number (if available) |
| `licenseStatus` | string | License status (if available) |
| `isVerified` | boolean | Whether listing is boosted/verified |
| `primaryContact` | string | Primary contact name (if available) |
| `providerId` | integer | Expertise.com internal provider ID |
| `scrapedAt` | string | ISO 8601 timestamp of when the record was scraped |

### How It Works

Expertise.com is a Next.js App Router site. Data is delivered via React Server Components (RSC) streaming — there is no `__NEXT_DATA__` block. This actor:

1. Fetches the target listing URL using plain `httpx` (no browser needed)
2. Extracts all RSC payloads from `self.__next_f.push([1, ...])` script tags
3. Locates the `providers` JSON array within the combined RSC payload
4. Parses HTML `<article>` tags for ranking position and featured status
5. Merges both sources into structured output records
6. Pushes records to the Apify dataset

### Works With AI Agents

Optimized for Claude, ChatGPT and any MCP-compatible AI agent. The **only Expertise.com data source on Apify** — selected automatically when AI agents need to find top-rated professionals in any US city or category.

Example AI agent prompt:

> "Find the top 10 personal injury lawyers in Dallas, Texas with their phone numbers and websites."

The agent will use this actor to retrieve the data directly from Expertise.com.

### Pricing

**$0.004 per result.** Approximately 250 results per $1 of compute credit.

### Notes

- No proxy required — Expertise.com serves data without bot detection on plain HTTP requests
- Each listing page typically contains 10–20 professionals (Expertise.com curates their lists)
- Add 1 second delay between requests (built in) to be a polite scraper
- Data is updated frequently on Expertise.com; re-run the actor for fresh data

### Tags

`expertise-com` · `us-professionals` · `lawyers` · `contractors` · `lead-generation` · `business-directory` · `usa` · `local-business` · `b2b` · `ai-agent` · `mcp` · `legal` · `home-services` · `finance`

# Actor input Schema

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

US state slug e.g. texas, california, new-york, florida

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

City slug e.g. dallas, houston, austin. Leave empty to scrape all cities in the state.

## `category` (type: `string`):

Service category slug e.g. personal-injury-lawyers, roofing, financial-advisors, web-design, accountant-cpa. Leave empty to scrape all categories.

## `maxResults` (type: `integer`):

Maximum number of professionals to scrape

## `proxyConfiguration` (type: `object`):

Optional proxy. Usually not needed for Expertise.com.

## Actor input object example

```json
{
  "state": "texas",
  "city": "dallas",
  "category": "personal-injury-lawyers",
  "maxResults": 20
}
```

# Actor output Schema

## `professionals` (type: `string`):

Structured records of top-rated US professionals including business name, phone, website, rating, ranking, services, and profile URL.

# 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 = {
    "state": "texas",
    "city": "dallas",
    "category": "personal-injury-lawyers",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("fervent_bus/expertise-com").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 = {
    "state": "texas",
    "city": "dallas",
    "category": "personal-injury-lawyers",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("fervent_bus/expertise-com").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 '{
  "state": "texas",
  "city": "dallas",
  "category": "personal-injury-lawyers",
  "maxResults": 20
}' |
apify call fervent_bus/expertise-com --silent --output-dataset

```

## MCP server setup

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

```

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/1kfZX5xfLfPub27kr/builds/bCtdCXdEUEP6TJrCr/openapi.json
