{
  "openapi": "3.0.1",
  "info": {
    "title": "Lawyer & Attorney Lead Scraper — Law Firm Contacts",
    "description": "Find law firms by practice area and city. Collect public business emails, phones, websites and source links. Search multiple cities, exclude known listings, and use the n8n Google Sheets template. Export CSV or CRM layouts with email-verification evidence.",
    "version": "1.3",
    "x-build-id": "YyrqkbCeDpADFlj1v"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/samstorm~lawyer-lead-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-samstorm-lawyer-lead-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/samstorm~lawyer-lead-scraper/runs": {
      "post": {
        "operationId": "runs-sync-samstorm-lawyer-lead-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/samstorm~lawyer-lead-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-samstorm-lawyer-lead-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": [
          "businessType",
          "location"
        ],
        "properties": {
          "businessType": {
            "title": "Business Type",
            "enum": [
              "Personal Injury Lawyer",
              "Criminal Defense Attorney",
              "Family Lawyer",
              "Immigration Lawyer",
              "Bankruptcy Attorney",
              "Estate Planning Attorney",
              "Corporate Lawyer",
              "Custom"
            ],
            "type": "string",
            "description": "Select the type of legal professional to find on Google Maps. The actor automatically constructs the search query — for example, selecting 'Personal Injury Lawyer' with location 'Los Angeles, CA' finds personal injury attorneys in that city. Select 'Criminal Defense Attorney' to build a DUI or felony defense law firm list. Choose 'Custom' to write your own search query instead.",
            "default": "Personal Injury Lawyer"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "The city, state, or region to search for law firms in. Use 'City, ST' format for US locations — for example, 'Los Angeles, CA' for personal injury attorneys or 'Houston, TX' for immigration lawyers. You can also use ZIP codes, neighborhoods, or broader regions like 'Downtown Manhattan'. The more specific your location, the more targeted your attorney lead list."
          },
          "searchQuery": {
            "title": "Custom Search Query",
            "type": "string",
            "description": "A raw Google Maps search query, used only when Business Type is set to 'Custom'. For all other types, the search is built automatically from Business Type + Location. Write queries the same way you would type them into Google Maps — for example: 'workers compensation lawyers in Phoenix AZ', 'employment attorney Manhattan', or 'real estate attorney 90210'."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum business records returned across all locations combined (1–500). Start with 3–10 records to validate coverage and data quality. Maps may return fewer matching businesses.",
            "default": 50
          },
          "enrichEmails": {
            "title": "Find Email Addresses",
            "type": "boolean",
            "description": "When enabled, the actor visits each law firm website and scans contact pages, footers, and about pages to extract email addresses. Disable this option if you only need phone numbers and addresses, or want faster results without website crawling.",
            "default": true
          },
          "verifyEmails": {
            "title": "Check email verification status",
            "type": "boolean",
            "description": "Optional DNS and SMTP checks. Off in the quick-start prefill to reduce waiting; enable when you need verification evidence. True emailVerified requires recipient acceptance plus rejection of a random recipient. MX records, catch-all servers and inconclusive checks do not confirm a mailbox. Delivery is not guaranteed.",
            "default": true
          },
          "enrichSocials": {
            "title": "Find Social Media Links",
            "type": "boolean",
            "description": "Optional collection of public social profile links from business websites. Off in the quick-start prefill; enable when social links are useful for your research.",
            "default": true
          },
          "outputFormat": {
            "title": "Output Format",
            "enum": [
              "full",
              "hubspot",
              "salesforce"
            ],
            "type": "string",
            "description": "Full preserves source URLs, email verification status and domain evidence. HubSpot and Salesforce provide column mappings; review destination fields and custom properties before import. CSV, JSON and Excel exports are available from the dataset.",
            "default": "full"
          },
          "proxyUrl": {
            "title": "Custom Proxy URL (optional)",
            "type": "string",
            "description": "Optional HTTP proxy URL for using third-party residential proxies instead of Apify's built-in proxies. Format: http://username:password@host:port. Compatible with IPRoyal, Smartproxy, Bright Data, and other rotating proxy services. Leave empty to use Apify's default residential proxies."
          },
          "locations": {
            "title": "Multiple locations (optional)",
            "type": "array",
            "description": "Up to 20 cities or regions. Overrides Location when supplied. Max Results is a total cap across all locations. For a Custom query, include {location} in the query.",
            "items": {
              "type": "string"
            }
          },
          "excludeMapsUrls": {
            "title": "Previously collected Maps URLs (optional)",
            "type": "array",
            "description": "Exclude previously collected businesses by their Maps URL. Supply up to 5000 URLs from an earlier export to collect new records without automatically sharing data across runs.",
            "items": {
              "type": "string"
            }
          },
          "maxRuntimeSeconds": {
            "title": "Processing time budget (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Stop starting new work after this time budget. An in-progress scrape or enrichment batch may take additional time. Use Apify run timeout and spending controls for hard limits.",
            "default": 600
          },
          "maxCandidatesPerLocation": {
            "title": "Candidate scan limit per location (optional)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Optional: inspect more candidate listings before exclusions and quality checks. For example, scan 50 to return at most 10 new records. Leave empty to use the remaining result count. Larger scans can increase platform usage and run time; maxResults still caps returned records. Availability and source/time limits can produce fewer matches."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}