# Expertise.com Local Pro Directory Scraper (`crawlerbros/expertise-com-local-pro-directory-scraper`) Actor

Scrape Expertise.com's curated "best of" directories of local professionals - lawyers, contractors, financial advisors, insurance agents and more - across 200+ service categories and every US city. Get business name, rating, review count, phone, website, address, and profile URL.

- **URL**: https://apify.com/crawlerbros/expertise-com-local-pro-directory-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Lead generation, Automation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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

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

## Expertise.com Local Pro Directory Scraper

Scrape [Expertise.com](https://www.expertise.com)'s curated "best of" directories of local professionals — lawyers, contractors, financial advisors, insurance agents, marketing agencies, photographers and more — across 200+ service categories and every US city. HTTP-only, no login, no proxy, no API key.

### What this actor does

- **Two modes:** `byCategoryCity` (a specific category's curated top list for one city) and `byCity` (discover and scrape every category available in a city)
- **200+ categories** across 6 verticals: Business, Finance, Home Improvement, Insurance, Legal, Lifestyle
- **All 50 US states + DC**
- **Filters:** minimum aggregate rating, minimum review count, category (in `byCity` mode)
- **Empty fields are omitted**

### Output per business

- `rank` — position in Expertise.com's curated ranking for that page
- `businessName`, `description`
- `category`, `subcategory`, `categoryLabel`
- `city`, `state`, `streetAddress`, `postalCode`, `country`, `fullAddress`
- `rating`, `reviewCount` — aggregate rating (0-5) and review count
- `reviewSources[]` — per-platform ratings (Google, Yelp, Facebook, Avvo, etc.), each `{source, rating}`
- `phone`, `website`, `logoUrl`
- `profileUrl` — direct link to the business's card on Expertise.com
- `recordType: "business"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `byCategoryCity` | `byCategoryCity` / `byCity` |
| `category` | select | `legal` | Top-level vertical: `business`, `finance`, `home-improvement`, `insurance`, `legal`, `lifestyle`. Auto-derived/corrected from `subcategory` when they don't match. |
| `subcategory` | select | `personal-injury-lawyers` | One of all 147 subcategories Expertise.com currently lists (mode=byCategoryCity, required) — full dropdown, see below |
| `state` | string | `california` | US state slug |
| `city` | string | `los-angeles` | City slug |
| `minRating` | number | – | Drop businesses below this rating (0-5) |
| `minReviewCount` | int | – | Drop businesses with fewer reviews |
| `maxItems` | int | `20` | Hard cap (1-500) |

#### Example: best divorce lawyers in Chicago

```json
{
  "mode": "byCategoryCity",
  "category": "legal",
  "subcategory": "divorce-lawyers",
  "state": "illinois",
  "city": "chicago"
}
````

#### Example: every category available in Austin, TX (highly rated only)

```json
{
  "mode": "byCity",
  "state": "texas",
  "city": "austin",
  "minRating": 4.5,
  "maxItems": 100
}
```

#### Example: only home-improvement pros in a city

```json
{
  "mode": "byCity",
  "category": "home-improvement",
  "state": "florida",
  "city": "miami",
  "maxItems": 60
}
```

### All 147 subcategories by vertical

`subcategory` is a full dropdown in the actor input — every value below is a verified, live Expertise.com subcategory slug (confirmed against the site, not guessed). Picking any of them auto-sets the matching `category` for you.

- **Legal (35)** — `arbitration-mediation`, `bail-bonds`, `bankruptcy-lawyers`, `bicycle-accident-lawyers`, `birth-injury-lawyers`, `boat-accident-lawyers`, `brain-injury-lawyers`, `business-lawyers`, `car-accident-lawyers`, `child-support-lawyers`, `construction-accident-lawyers`, `criminal-lawyers`, `defamation-lawyers`, `disability-lawyers`, `divorce-lawyers`, `dog-bite-lawyers`, `dui-lawyers`, `employment-lawyers`, `estate-planning-lawyers`, `family-lawyers`, `immigration-lawyers`, `litigation-lawyers`, `long-term-disability-lawyers`, `medical-malpractice-lawyers`, `motorcycle-accident-lawyers`, `nursing-home-abuse-lawyers`, `personal-injury-lawyers`, `probate-lawyers`, `real-estate-lawyers`, `slip-and-fall-lawyers`, `tax-lawyers`, `truck-accident-lawyers`, `va-disability-lawyers`, `workers-comp-lawyers`, `wrongful-death-lawyers`
- **Finance (8)** — `accountant-cpa`, `bookkeepers`, `collection-agency`, `credit-repair`, `financial-advisors`, `mortgage-refinance`, `private-wealth-advisor`, `tax-services-cpa`
- **Home Improvement (59)** — `ac-repair`, `architects`, `asbestos-removal-abatement`, `blinds-drapes-window-treatments`, `carpet-cleaners`, `chimney-sweeps`, `concrete-contractors`, `countertops-granite-quartz`, `deck-contractors`, `demolition-contractors`, `drywall-contractors`, `electricians`, `emergency-plumber`, `fence-companies`, `fire-damage-restoration`, `flooring`, `garage-doors`, `glass-mirrors`, `gutter-cleaner`, `handyman`, `hardwood-floor-refinishing`, `heat-pumps`, `home-appliance-repair`, `home-inspection`, `home-organizers`, `home-security-systems`, `home-staging`, `home-theater-install`, `house-cleaning`, `hvac`, `insulation`, `interior-design`, `junk-removal`, `landscape-lighting`, `landscaping`, `lawn-service`, `locksmiths`, `long-distance-movers`, `mold-remediation`, `mortgage-brokers-lenders`, `moving`, `painting`, `pest-control`, `plumbing`, `pool-cleaning-maintenance`, `real-estate-agents`, `remodeling`, `roofing`, `siding-contractors`, `snow-removal`, `solar-company`, `sprinklers`, `storage-units`, `swimming-pools`, `tree-services`, `upholstery`, `water-damage`, `window-replacement-and-installation`, `window-washing`
- **Insurance (6)** — `car-insurance`, `health-insurance`, `homeowners-insurance`, `life-insurance`, `pet-insurance`, `renters-insurance`
- **Business (33)** — `advertising-agencies`, `branding-agencies`, `business-consultants`, `computer-repair`, `content-marketing-agencies`, `courier-services`, `database-services`, `digital-marketing-agencies`, `employment-staffing-agencies`, `graphic-designers`, `healthcare-app-development-company`, `internet-providers`, `law-firm-marketing`, `managed-service-providers`, `marketing-consultants`, `mobile-app-development`, `non-profit-and-government-marketing-agency`, `office-cleaning`, `ppc-agencies`, `print-shops`, `private-investigators`, `property-management`, `public-relations-firms`, `screen-printing-tshirts`, `seo-agencies`, `social-media-marketing`, `software-development`, `structural-engineers`, `trade-schools`, `user-experience`, `voice-actors`, `web-design`, `web-developers`
- **Lifestyle (6)** — `maternity-photographers`, `newborn-photography`, `portrait-photographers`, `real-estate-photographers`, `tattoos`, `wedding-photography`

Not every subcategory has coverage in every city — Expertise.com only publishes a curated list where it has vetted enough local pros. If a specific subcategory/city combination returns 0 results, use `mode=byCity` first to see exactly which subcategories are covered for that city.

### Use cases

- **Lead generation** — build prospect lists of top-rated local service providers
- **Competitive intelligence** — benchmark your business against ranked local competitors
- **Market research** — measure service-provider density and average ratings by city
- **Directory aggregation** — feed curated local business data into your own directory or CRM
- **Local SEO** — audit which firms rank in Expertise.com's curated lists for your market

### FAQ

**What's Expertise.com?** An independent research company that publishes curated "best of" rankings of local service professionals (typically 5-20 per city/category), based on reputation, credentials, experience, availability, and professionalism.

**Is there a rate limit?** No documented hard cap. The actor uses small delays between requests in `byCity` mode to be polite.

**Why do some businesses list an address in a different city than the one I searched?** Expertise.com includes firms that serve the searched city even if their office is in a nearby suburb (e.g. a "Los Angeles" list may include a Beverly Hills or Studio City address).

**What are `reviewSources`?** Expertise.com aggregates ratings from third-party review platforms (Google, Yelp, Facebook, Avvo, FindLaw, Justia, etc.) per business; each source may use its own rating scale.

**How many businesses are on each list?** Typically 5-20 per category/city — these are curated "best of" lists, not exhaustive directories.

**Do I need to set `category` myself?** No — pick a `subcategory` from the dropdown and the matching `category` vertical is filled in automatically, even if you leave `category` on its default. This also means a mismatched pair (e.g. `category: "legal"` with `subcategory: "electricians"`) can't accidentally point at a nonexistent URL and silently return 0 results.

**How fresh is the data?** Expertise.com periodically re-reviews and re-ranks its lists; ratings and review counts reflect the live page at scrape time.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

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

Top-level service vertical. mode=byCategoryCity: auto-derived/corrected from `subcategory` if they don't match, so this mainly matters when `subcategory` is a custom value outside the dropdown. mode=byCity: optional filter to restrict results to one vertical — leave on "(none)" to browse ALL verticals for the city.

## `subcategory` (type: `string`):

Expertise.com subcategory (mode=byCategoryCity, required). The matching top-level `category` vertical is auto-derived from this value, so you can leave `category` on its default. All 147 subcategories currently listed on expertise.com across all 6 verticals, verified live.

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

US state (or Washington DC).

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

City slug as used in the Expertise.com URL, e.g. `los-angeles`, `new-york`, `chicago`. Lowercase, spaces become hyphens.

## `minRating` (type: `number`):

Drop businesses with an aggregate rating below this value (0-5).

## `minReviewCount` (type: `integer`):

Drop businesses with fewer than this many aggregate reviews.

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

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "byCategoryCity",
  "category": "legal",
  "subcategory": "personal-injury-lawyers",
  "state": "california",
  "city": "los-angeles",
  "maxItems": 20
}
```

# Actor output Schema

## `businesses` (type: `string`):

Dataset containing all scraped Expertise.com local business listings.

# 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 = {
    "mode": "byCategoryCity",
    "category": "legal",
    "subcategory": "personal-injury-lawyers",
    "state": "california",
    "city": "los-angeles",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/expertise-com-local-pro-directory-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 = {
    "mode": "byCategoryCity",
    "category": "legal",
    "subcategory": "personal-injury-lawyers",
    "state": "california",
    "city": "los-angeles",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/expertise-com-local-pro-directory-scraper").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 '{
  "mode": "byCategoryCity",
  "category": "legal",
  "subcategory": "personal-injury-lawyers",
  "state": "california",
  "city": "los-angeles",
  "maxItems": 20
}' |
apify call crawlerbros/expertise-com-local-pro-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/expertise-com-local-pro-directory-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Expertise.com Local Pro Directory Scraper",
        "description": "Scrape Expertise.com's curated \"best of\" directories of local professionals - lawyers, contractors, financial advisors, insurance agents and more - across 200+ service categories and every US city. Get business name, rating, review count, phone, website, address, and profile URL.",
        "version": "1.0",
        "x-build-id": "NeUMmetYU5ZjaSNgn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~expertise-com-local-pro-directory-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-expertise-com-local-pro-directory-scraper",
                "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/crawlerbros~expertise-com-local-pro-directory-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-expertise-com-local-pro-directory-scraper",
                "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/crawlerbros~expertise-com-local-pro-directory-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-expertise-com-local-pro-directory-scraper",
                "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",
                "required": [
                    "mode",
                    "state",
                    "city"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "byCategoryCity",
                            "byCity"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "byCategoryCity"
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "",
                            "business",
                            "finance",
                            "home-improvement",
                            "insurance",
                            "legal",
                            "lifestyle"
                        ],
                        "type": "string",
                        "description": "Top-level service vertical. mode=byCategoryCity: auto-derived/corrected from `subcategory` if they don't match, so this mainly matters when `subcategory` is a custom value outside the dropdown. mode=byCity: optional filter to restrict results to one vertical — leave on \"(none)\" to browse ALL verticals for the city.",
                        "default": ""
                    },
                    "subcategory": {
                        "title": "Subcategory slug",
                        "enum": [
                            "advertising-agencies",
                            "branding-agencies",
                            "business-consultants",
                            "computer-repair",
                            "content-marketing-agencies",
                            "courier-services",
                            "database-services",
                            "digital-marketing-agencies",
                            "employment-staffing-agencies",
                            "graphic-designers",
                            "healthcare-app-development-company",
                            "internet-providers",
                            "law-firm-marketing",
                            "managed-service-providers",
                            "marketing-consultants",
                            "mobile-app-development",
                            "non-profit-and-government-marketing-agency",
                            "office-cleaning",
                            "ppc-agencies",
                            "print-shops",
                            "private-investigators",
                            "property-management",
                            "public-relations-firms",
                            "screen-printing-tshirts",
                            "seo-agencies",
                            "social-media-marketing",
                            "software-development",
                            "structural-engineers",
                            "trade-schools",
                            "user-experience",
                            "voice-actors",
                            "web-design",
                            "web-developers",
                            "accountant-cpa",
                            "bookkeepers",
                            "collection-agency",
                            "credit-repair",
                            "financial-advisors",
                            "mortgage-refinance",
                            "private-wealth-advisor",
                            "tax-services-cpa",
                            "ac-repair",
                            "architects",
                            "asbestos-removal-abatement",
                            "blinds-drapes-window-treatments",
                            "carpet-cleaners",
                            "chimney-sweeps",
                            "concrete-contractors",
                            "countertops-granite-quartz",
                            "deck-contractors",
                            "demolition-contractors",
                            "drywall-contractors",
                            "electricians",
                            "emergency-plumber",
                            "fence-companies",
                            "fire-damage-restoration",
                            "flooring",
                            "garage-doors",
                            "glass-mirrors",
                            "gutter-cleaner",
                            "handyman",
                            "hardwood-floor-refinishing",
                            "heat-pumps",
                            "home-appliance-repair",
                            "home-inspection",
                            "home-organizers",
                            "home-security-systems",
                            "home-staging",
                            "home-theater-install",
                            "house-cleaning",
                            "hvac",
                            "insulation",
                            "interior-design",
                            "junk-removal",
                            "landscape-lighting",
                            "landscaping",
                            "lawn-service",
                            "locksmiths",
                            "long-distance-movers",
                            "mold-remediation",
                            "mortgage-brokers-lenders",
                            "moving",
                            "painting",
                            "pest-control",
                            "plumbing",
                            "pool-cleaning-maintenance",
                            "real-estate-agents",
                            "remodeling",
                            "roofing",
                            "siding-contractors",
                            "snow-removal",
                            "solar-company",
                            "sprinklers",
                            "storage-units",
                            "swimming-pools",
                            "tree-services",
                            "upholstery",
                            "water-damage",
                            "window-replacement-and-installation",
                            "window-washing",
                            "car-insurance",
                            "health-insurance",
                            "homeowners-insurance",
                            "life-insurance",
                            "pet-insurance",
                            "renters-insurance",
                            "arbitration-mediation",
                            "bail-bonds",
                            "bankruptcy-lawyers",
                            "bicycle-accident-lawyers",
                            "birth-injury-lawyers",
                            "boat-accident-lawyers",
                            "brain-injury-lawyers",
                            "business-lawyers",
                            "car-accident-lawyers",
                            "child-support-lawyers",
                            "construction-accident-lawyers",
                            "criminal-lawyers",
                            "defamation-lawyers",
                            "disability-lawyers",
                            "divorce-lawyers",
                            "dog-bite-lawyers",
                            "dui-lawyers",
                            "employment-lawyers",
                            "estate-planning-lawyers",
                            "family-lawyers",
                            "immigration-lawyers",
                            "litigation-lawyers",
                            "long-term-disability-lawyers",
                            "medical-malpractice-lawyers",
                            "motorcycle-accident-lawyers",
                            "nursing-home-abuse-lawyers",
                            "personal-injury-lawyers",
                            "probate-lawyers",
                            "real-estate-lawyers",
                            "slip-and-fall-lawyers",
                            "tax-lawyers",
                            "truck-accident-lawyers",
                            "va-disability-lawyers",
                            "workers-comp-lawyers",
                            "wrongful-death-lawyers",
                            "maternity-photographers",
                            "newborn-photography",
                            "portrait-photographers",
                            "real-estate-photographers",
                            "tattoos",
                            "wedding-photography"
                        ],
                        "type": "string",
                        "description": "Expertise.com subcategory (mode=byCategoryCity, required). The matching top-level `category` vertical is auto-derived from this value, so you can leave `category` on its default. All 147 subcategories currently listed on expertise.com across all 6 verticals, verified live.",
                        "default": "personal-injury-lawyers"
                    },
                    "state": {
                        "title": "State",
                        "enum": [
                            "alabama",
                            "alaska",
                            "arizona",
                            "arkansas",
                            "california",
                            "colorado",
                            "connecticut",
                            "delaware",
                            "district-of-columbia",
                            "florida",
                            "georgia",
                            "hawaii",
                            "idaho",
                            "illinois",
                            "indiana",
                            "iowa",
                            "kansas",
                            "kentucky",
                            "louisiana",
                            "maine",
                            "maryland",
                            "massachusetts",
                            "michigan",
                            "minnesota",
                            "mississippi",
                            "missouri",
                            "montana",
                            "nebraska",
                            "nevada",
                            "new-hampshire",
                            "new-jersey",
                            "new-mexico",
                            "new-york",
                            "north-carolina",
                            "north-dakota",
                            "ohio",
                            "oklahoma",
                            "oregon",
                            "pennsylvania",
                            "rhode-island",
                            "south-carolina",
                            "south-dakota",
                            "tennessee",
                            "texas",
                            "utah",
                            "vermont",
                            "virginia",
                            "washington",
                            "west-virginia",
                            "wisconsin",
                            "wyoming"
                        ],
                        "type": "string",
                        "description": "US state (or Washington DC).",
                        "default": "california"
                    },
                    "city": {
                        "title": "City slug",
                        "type": "string",
                        "description": "City slug as used in the Expertise.com URL, e.g. `los-angeles`, `new-york`, `chicago`. Lowercase, spaces become hyphens.",
                        "default": "los-angeles"
                    },
                    "minRating": {
                        "title": "Min rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Drop businesses with an aggregate rating below this value (0-5)."
                    },
                    "minReviewCount": {
                        "title": "Min review count",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Drop businesses with fewer than this many aggregate reviews."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
