{
  "openapi": "3.0.1",
  "info": {
    "title": "Law Society Find a Solicitor Scraper - Firms, Phones & Websites",
    "description": "Scrape The Law Society's Find a Solicitor directory (England & Wales): every solicitors' office with name, full address, town, postcode, phone, website, accreditation count and whether it takes enquiries. Search by town, postcode or firm name, look up office ids, or export all ~33,000 offices.",
    "version": "0.1",
    "x-build-id": "e3xYSMnJD82zdcDQf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~law-society-solicitors-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-law-society-solicitors-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/scrapersdelight~law-society-solicitors-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-law-society-solicitors-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/scrapersdelight~law-society-solicitors-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-law-society-solicitors-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": {
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "Towns, cities or postcodes. A postcode district (\"M1\", \"DE24\"), a full postcode (\"SW1A 1AA\") or a postcode area (\"LS\") matches the office postcode; a name (\"Manchester\", \"Newcastle\") matches the town. Several are OR-ed.",
            "items": {
              "type": "string"
            }
          },
          "names": {
            "title": "🏢 Firm or office names",
            "type": "array",
            "description": "Every word must appear in the office name, in any order: \"slater gordon\" matches \"Slater and Gordon UK Limited\". Several names are OR-ed; combined with Locations, both must match.",
            "items": {
              "type": "string"
            }
          },
          "officeIds": {
            "title": "🔢 Office ids or profile URLs",
            "type": "array",
            "description": "Look up specific offices: the number in a profile URL (\"4758\") or the URL itself (\"https://solicitors.lawsociety.org.uk/office/4758/alexander-co-solicitors-llp\").",
            "items": {
              "type": "string"
            }
          },
          "countryScope": {
            "title": "🌍 Country",
            "enum": [
              "all",
              "englandWales",
              "uk",
              "overseas"
            ],
            "type": "string",
            "description": "The directory also lists the overseas offices of England & Wales firms. Pick which offices to keep.",
            "default": "all"
          },
          "withPhoneOnly": {
            "title": "📞 Only offices with a phone number",
            "type": "boolean",
            "description": "Skip offices whose listing shows no telephone number.",
            "default": false
          },
          "withWebsiteOnly": {
            "title": "🌐 Only offices with a website",
            "type": "boolean",
            "description": "Skip offices whose listing shows no website.",
            "default": false
          },
          "acceptsEnquiriesOnly": {
            "title": "✉️ Only offices that take enquiries",
            "type": "boolean",
            "description": "Keep offices whose listing offers \"Include in enquiry\" (they take enquiries through the directory's enquiry form).",
            "default": false
          },
          "accreditedOnly": {
            "title": "🏅 Only accredited offices",
            "type": "boolean",
            "description": "Keep offices showing at least one Law Society accreditation (quality mark such as CQS, Lexcel or WIQS).",
            "default": false
          },
          "excludeNames": {
            "title": "🚫 Exclude names",
            "type": "array",
            "description": "Drop offices whose name contains all words of any of these, e.g. \"council\", \"citizens advice\".",
            "items": {
              "type": "string"
            }
          },
          "monitorMode": {
            "title": "🔁 Only new offices (monitor mode)",
            "type": "boolean",
            "description": "Deliver only offices this search has not delivered in an earlier run. Pairs with a daily or weekly schedule to catch newly listed offices.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor memory name",
            "type": "string",
            "description": "Name of the key-value store that remembers delivered offices. Use a different name to keep separate monitors.",
            "default": "law-society-offices-monitor"
          },
          "maxItems": {
            "title": "Max offices",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many offices. 0 = no limit (the whole directory is about 33,000 offices and takes roughly 35 minutes).",
            "default": 100
          },
          "fullScan": {
            "title": "Full scan (ignore the office index)",
            "type": "boolean",
            "description": "Name and location searches normally read only the offices a bundled index says can match. Turn on to check every office live instead (slower: about 35 minutes).",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many directory pages (20 offices each) are read at the same time.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The directory answers a direct connection, so no proxy is needed. If the connection is refused twice in a row the run switches to an Apify UK residential proxy automatically.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}