{
  "openapi": "3.0.1",
  "info": {
    "title": "India Lawyer Directory Scraper (LawRato)",
    "description": "Extract lawyer and advocate profiles from LawRato -- India's largest consumer legal directory. Browse by city or practice area, or pull full profiles with rating, years of experience, bar council enrolment, practice areas, specializations, courts and languages. No account or API key needed.",
    "version": "0.0",
    "x-build-id": "3bgsmp3uuaBPc7uIu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fanndev~lawrato-lawyer-directory-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fanndev-lawrato-lawyer-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/fanndev~lawrato-lawyer-directory-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fanndev-lawrato-lawyer-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/fanndev~lawrato-lawyer-directory-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fanndev-lawrato-lawyer-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "directory",
              "profile",
              "reference"
            ],
            "type": "string",
            "description": "\"directory\" lists lawyers (all India, or filtered to one city or one practice area). \"profile\" fetches the full profile for specific lawyer pages. \"reference\" lists the cities and practice areas available upstream.",
            "default": "directory"
          },
          "city": {
            "title": "City",
            "enum": [
              "",
              "ahmedabad",
              "bangalore",
              "chandigarh",
              "chennai",
              "delhi",
              "faridabad",
              "ghaziabad",
              "gurgaon",
              "hyderabad",
              "jaipur",
              "kolkata",
              "lucknow",
              "mumbai",
              "nagpur",
              "noida",
              "pune"
            ],
            "type": "string",
            "description": "\"directory\" mode: restrict the listing to one city. Leave blank for all India.",
            "default": ""
          },
          "practiceArea": {
            "title": "Practice area",
            "enum": [
              "",
              "arbitration",
              "armed-forces-tribunal",
              "banking-finance",
              "cheque-bounce",
              "child-custody",
              "civil",
              "consumer-court",
              "copyright-patent-trademark",
              "corporate",
              "criminal",
              "customs-central-excise",
              "cyber-crime",
              "divorce",
              "documentation",
              "family",
              "gst",
              "immigration",
              "insurance",
              "international-law",
              "labour-service",
              "landlordtenant",
              "medical-negligence",
              "motor-accident",
              "muslim-law",
              "property",
              "recovery",
              "startup",
              "supreme-court",
              "tax",
              "wills-trusts"
            ],
            "type": "string",
            "description": "\"directory\" mode: restrict the listing to one practice area. City and practice area are separate listings upstream -- if you set both, the city wins.",
            "default": ""
          },
          "enrichProfiles": {
            "title": "Also fetch full profiles",
            "type": "boolean",
            "description": "\"directory\" mode: after listing, fetch each lawyer's full profile too (bar council, courts, languages, specializations). Costs one extra request per lawyer.",
            "default": false
          },
          "profileUrl": {
            "title": "Lawyer profile URL or slug",
            "type": "string",
            "description": "\"profile\" mode: a full lawrato.com profile address, or just the slug (e.g. \"advocate-sunil-kumar-bakshi\")."
          },
          "profileUrls": {
            "title": "Lawyer profile URLs",
            "type": "array",
            "description": "\"profile\" mode: several profiles to fetch in one run.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "\"directory\" mode: max lawyers to list. Pages hold 20 each and are followed automatically until this cap or the end of the listing.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Max concurrent workers",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "How many profile pages to fetch in parallel (\"profile\" mode, and \"directory\" mode when full profiles are enabled).",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy configuration. Residential is on by default and recommended -- listing pages are fetched in sequence, and a stable Indian or global residential exit keeps results consistent.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}