{
  "openapi": "3.0.1",
  "info": {
    "title": "FindLaw Attorney Directory Scraper",
    "description": "Scrapes individual attorneys from FindLaw by state, city, and practice area, providing names, contact details, addresses, practice areas, reviews, ratings, badges, and profile URLs. Filters out firm listings and supports multi-city searc",
    "version": "0.0",
    "x-build-id": "hhXA2z4GptmPFp1N1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/moving_beacon-owner1~findlaw-attorney-directory-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-moving_beacon-owner1-findlaw-attorney-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/moving_beacon-owner1~findlaw-attorney-directory-scraper/runs": {
      "post": {
        "operationId": "runs-sync-moving_beacon-owner1-findlaw-attorney-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/moving_beacon-owner1~findlaw-attorney-directory-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-moving_beacon-owner1-findlaw-attorney-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": [
          "practiceArea"
        ],
        "properties": {
          "practiceArea": {
            "title": "Practice area",
            "enum": [
              "criminal-law",
              "personal-injury-plaintiff",
              "family-law",
              "divorce",
              "bankruptcy",
              "dui-dwi",
              "immigration",
              "estate-planning",
              "real-estate",
              "medical-malpractice",
              "workers-compensation"
            ],
            "type": "string",
            "description": "The FindLaw practice-area slug that appears in the directory URL, e.g. <code>criminal-law</code> in <code>lawyers.findlaw.com/criminal-law/florida/miami/</code>. Pick from the list, or use <b>Custom practice area</b> below for any other.",
            "default": "criminal-law"
          },
          "customPracticeArea": {
            "title": "Custom practice area (overrides the list)",
            "type": "string",
            "description": "Copy the slug straight from a lawyers.findlaw.com URL. Overrides <b>Practice area</b> when set."
          },
          "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 to scrape. Leave blank only if your <b>Cities</b> list uses <code>[state]</code> headers or full URLs.",
            "default": "florida"
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "City names, one per entry. <b>Leave empty to discover and scrape every city in the state.</b> A <code>[texas]</code> entry switches state for the entries after it, so one list can span states. Full URLs are used as-is.",
            "items": {
              "type": "string"
            }
          },
          "profileType": {
            "title": "Profile type",
            "enum": [
              "attorneys",
              "firms",
              "both"
            ],
            "type": "string",
            "description": "FindLaw mixes law-firm listings into attorney search results. <b>Attorneys</b> keeps individuals only and skips firm pages before fetching them.",
            "default": "attorneys"
          },
          "fetchContactPage": {
            "title": "Fetch contact page for email",
            "type": "boolean",
            "description": "Most emails are only on the profile's contact form page. Turning this off halves requests but finds far fewer emails.",
            "default": true
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many records. Leave blank for no limit. Useful for a quick test run."
          },
          "maxCities": {
            "title": "Max cities",
            "minimum": 1,
            "type": "integer",
            "description": "Only scrape the first N cities of the list (or of the discovered list).",
            "default": 1
          },
          "maxPagesPerCity": {
            "title": "Max pages per city",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Safety cap on result pages walked per city.",
            "default": 5
          },
          "stalePages": {
            "title": "Stale pages before moving on",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "After this many consecutive pages with no unseen profiles, move to the next city. Neighbouring cities list the same firms, so this saves a lot of requests. 0 walks every page to the end.",
            "default": 4
          },
          "requestsPerSecond": {
            "title": "Requests per second",
            "minimum": 0.2,
            "maximum": 3,
            "type": "number",
            "description": "Shared across all workers. Capped at 3. Higher values risk rate-limiting, which slows the whole run.",
            "default": 1.5
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Worker threads. Does not raise the request rate (that is governed above); it hides latency. Capped at 5.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Each worker gets one sticky proxy session for the whole run."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}