{
  "openapi": "3.0.1",
  "info": {
    "title": "Avvo.com [Only $1💰] Lawyer Directory Scraper",
    "description": "💰$1 per 1,000 results – No limits. Turn Avvo.com into a structured US-attorney dataset. Pull name, firm, phone, full address with real coordinates, practice areas, languages, credentials, awards, hourly rate, and star ratings from any listing or attorney URL. JSON or CSV out, billed per result.",
    "version": "0.0",
    "x-build-id": "Sd4bBJcjYGYJykduZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~avvo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-avvo-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/memo23~avvo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-avvo-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/memo23~avvo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-avvo-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",
        "properties": {
          "startUrls": {
            "title": "Avvo URLs",
            "type": "array",
            "description": "Paste any avvo.com URL — listing pages (`/all-lawyers/{state}/{city}.html`, `/{practice-area}-lawyer/{state}.html`, `/search/lawyer_search?...`) and direct attorney URLs (`/attorneys/{zip}-{state}-{slug}-{id}.html`) are auto-classified. Takes precedence over the practice-area + state filters below — clear this list to use the dropdowns.",
            "items": {
              "type": "string"
            }
          },
          "searchByCategory": {
            "title": "Practice areas",
            "uniqueItems": true,
            "type": "array",
            "description": "Select one or more practice areas. Combined with U.S. states below as a cartesian product (e.g. 2 areas × 3 states = 6 listing URLs). ⚠️ Ignored when the Avvo URLs field above is non-empty.",
            "items": {
              "type": "string",
              "enum": [
                "bankruptcy-debt-lawyer",
                "consumer-protection-lawyer",
                "government-lawyer",
                "business-lawyer",
                "immigration-lawyer",
                "intellectual-property-lawyer",
                "criminal-defense-lawyer",
                "lawsuits-disputes-lawyer",
                "personal-injury-lawyer",
                "employment-labor-lawyer",
                "estate-planning-lawyer",
                "family-lawyer",
                "real-estate-lawyer",
                "civil-rights-lawyer"
              ],
              "enumTitles": [
                "Bankruptcy and debt",
                "Consumer protection",
                "Government",
                "Business",
                "Immigration",
                "Intellectual property",
                "Criminal defense",
                "Lawsuits and disputes",
                "Personal injury",
                "Employment and labor",
                "Estate planning",
                "Family",
                "Real estate",
                "Civil rights"
              ]
            }
          },
          "searchByLocation": {
            "title": "U.S. states",
            "uniqueItems": true,
            "type": "array",
            "description": "Select one or more U.S. states. Combined with practice areas above as a cartesian product. Has no effect on its own — Avvo doesn't expose a useful state-only listing without a practice area. ⚠️ Ignored when the Avvo URLs field is non-empty.",
            "items": {
              "type": "string",
              "enum": [
                "al",
                "ak",
                "az",
                "ar",
                "ca",
                "co",
                "ct",
                "de",
                "dc",
                "fl",
                "ga",
                "hi",
                "id",
                "il",
                "in",
                "ia",
                "ks",
                "ky",
                "la",
                "me",
                "md",
                "ma",
                "mi",
                "mn",
                "ms",
                "mo",
                "mt",
                "ne",
                "nv",
                "nh",
                "nj",
                "nm",
                "ny",
                "nc",
                "nd",
                "oh",
                "ok",
                "or",
                "pa",
                "ri",
                "sc",
                "sd",
                "tn",
                "tx",
                "ut",
                "vt",
                "va",
                "wa",
                "wv",
                "wi",
                "wy"
              ],
              "enumTitles": [
                "Alabama",
                "Alaska",
                "Arizona",
                "Arkansas",
                "California",
                "Colorado",
                "Connecticut",
                "Delaware",
                "Dist. 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"
              ]
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on the number of attorney profiles collected across all listings. Avvo listings paginate roughly 20 attorneys per page; the scraper follows pagination automatically until this cap is hit.",
            "default": 1000
          },
          "liteMode": {
            "title": "Lite mode (~20× faster, ~20× cheaper — name + firm + phone + address only)",
            "type": "boolean",
            "description": "When enabled, the scraper skips per-attorney detail fetches and emits one row per card directly from the listing page's embedded `Person` JSON-LD. ~20× faster and ~20× cheaper. Trade-off: rows have name + jobTitle + firmName + address + phone + image only. Disable to get the full 55+ field profile (Avvo Rating, practice-area shares, education, bar admissions with year, fees, claimed-profile flag, endorsements, awards split into title+year, etc.).",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of attorney detail pages processed in parallel.",
            "default": 10
          },
          "minConcurrency": {
            "title": "Min concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "Minimum number of attorney detail pages processed in parallel.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "type": "integer",
            "description": "Number of retries before a failed request is given up.",
            "default": 5
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy settings. Avvo serves Cloudflare on attorney detail pages — a US residential pool is strongly recommended.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}