{
  "openapi": "3.0.1",
  "info": {
    "title": "Super Lawyers Scraper - Attorney & Law Firm Leads",
    "description": "Scrape the Super Lawyers attorney directory by practice area & city: top-rated attorneys & law firms with phone, website, address, practice areas, languages, law school, award selection history & lead score. Monitoring mode. No login or API key.",
    "version": "0.1",
    "x-build-id": "jpwCTPgoYLMAsToEK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~superlawyers-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-superlawyers-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/scrapesage~superlawyers-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-superlawyers-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/scrapesage~superlawyers-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-superlawyers-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"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "search",
              "startUrls"
            ],
            "type": "string",
            "description": "Search builds an attorney list from practice areas × locations. Start URLs scrapes specific Super Lawyers profile or listing URLs you paste in.",
            "default": "search"
          },
          "practiceAreas": {
            "title": "Practice areas",
            "type": "array",
            "description": "Practice-area slugs as used in Super Lawyers URLs, e.g. personal-injury-plaintiff, criminal-defense, dui-dwi, family-law, estate-planning-and-probate, business-and-corporate, employment-and-labor, immigration, real-estate, bankruptcy, medical-malpractice, intellectual-property. Common shorthand (personal-injury, divorce, dui, criminal) is auto-mapped. One per row. (Search mode.)",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities/states to search, as \"City, State\" — e.g. \"New York, NY\", \"Houston, Texas\", \"Miami, FL\". A bare state (\"California\") scrapes cities listed on its Super Lawyers state page, capped by Max cities per state. One per row. (Search mode.)",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (Super Lawyers profile or listing URLs)",
            "type": "array",
            "description": "Super Lawyers URLs to scrape directly: attorney/firm profile URLs (profiles.superlawyers.com/…/lawyer/…-UUID.html or …/lawfirm/…-UUID.html) or listing URLs (attorneys.superlawyers.com/<practice-area>/<state>/<city>/). Auto-detected and routed. One per row. (Start URLs mode.)",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max results (attorneys)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap on attorney records across the whole run. Listings are paginated automatically until this cap or the result set is exhausted. (Firm records are emitted as a bonus and do not count against this cap.)",
            "default": 100
          },
          "maxCitiesPerState": {
            "title": "Max cities per state (for bare-state locations)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "When a location is a bare state (no city), how many cities from that state's Super Lawyers page to scrape. Set 0 to skip bare-state locations. Ignored when a city is given.",
            "default": 10
          },
          "includeProfileDetails": {
            "title": "Include full attorney profiles (bio, practice areas, awards)",
            "type": "boolean",
            "description": "Open each attorney's profile page for the full record: bio, all practice areas, languages, the selection history (award type, years selected, selection period), law school, the firm with geo, and the attorney's own website (the lead wedge). One extra request per attorney. Turn off for a faster, listing-only run.",
            "default": true
          },
          "includeFirms": {
            "title": "Also output law firm records",
            "type": "boolean",
            "description": "Output one deduplicated law firm record (type `firm`) per unique firm seen — name, legal name, phone, price range, full address, geo and profile URL — alongside the attorney records.",
            "default": false
          },
          "awardFilter": {
            "title": "Award filter",
            "enum": [
              "any",
              "super-lawyers",
              "rising-stars"
            ],
            "type": "string",
            "description": "Keep only attorneys with a given Super Lawyers selection. \"Super Lawyers\" = the top 5% peer-rated; \"Rising Stars\" = top 2.5% under 40 / practicing ≤10 years.",
            "default": "any"
          },
          "withWebsiteOnly": {
            "title": "Only attorneys with a website",
            "type": "boolean",
            "description": "Output only attorneys that have an own website (or, with enrichment on, a contact email). Useful for building a directly-contactable lead list.",
            "default": false
          },
          "deduplicateAttorneys": {
            "title": "Deduplicate attorneys across searches",
            "type": "boolean",
            "description": "Skip an attorney already emitted earlier in the same run (common when one lawyer appears under several practice areas or cities).",
            "default": true
          },
          "enrichContactEmails": {
            "title": "Enrich contacts from the attorney's website",
            "type": "boolean",
            "description": "Opt-in extra lead enrichment: crawl each attorney's/firm's own website (home + contact/about, max 3 pages) for emails, phone numbers and social links. Only runs for records that list a website. Super Lawyers does not publish emails — this is the way to get them.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitoring mode — only new records",
            "type": "boolean",
            "description": "Remember what was already returned and emit ONLY records not seen in previous runs (new attorneys, and new firms). Pairs with Apify Schedules to track new attorney selections over time.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store that holds the 'already seen' ids for monitoring mode. Use a different name per tracked target/search to keep their histories separate.",
            "default": "superlawyers-scraper-monitor"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum parallel requests. Lower it for very large runs if you see transient blocks; raise it for speed.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Super Lawyers serves clean pages over US residential IPs but Cloudflare-challenges datacenter IPs, so US Residential is the default and recommended setting. Blocked requests retry automatically on a fresh IP.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "countryCode": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}