{
  "openapi": "3.0.1",
  "info": {
    "title": "AskLaila India Business Directory Scraper",
    "description": "Scrape AskLaila Indian business listings across 45+ cities. Extract names, addresses, phone numbers, ratings, reviews, geo coordinates, photos, payment options, and category attributes from restaurants, doctors, hotels, gyms, schools, plumbers and more.",
    "version": "1.0",
    "x-build-id": "X6vK4e2qJfkurSteV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~asklaila-india-business-directory-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-asklaila-india-business-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/crawlerbros~asklaila-india-business-directory-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-asklaila-india-business-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/crawlerbros~asklaila-india-business-directory-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-asklaila-india-business-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",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "byCategory",
              "searchUrls",
              "listingUrls",
              "keywordSearch"
            ],
            "type": "string",
            "description": "How to seed the crawl. `byCategory` builds a search URL from city + category dropdowns. `searchUrls` accepts AskLaila search/category URLs directly. `listingUrls` fetches individual business detail pages. `keywordSearch` performs a free-text search inside a city.",
            "default": "byCategory"
          },
          "city": {
            "title": "City",
            "enum": [
              "Bangalore",
              "Mumbai",
              "Delhi",
              "Chennai",
              "Hyderabad",
              "Pune",
              "Kolkata",
              "Ahmedabad",
              "Jaipur",
              "Lucknow",
              "Surat",
              "Kanpur",
              "Nagpur",
              "Indore",
              "Bhopal",
              "Patna",
              "Vadodara",
              "Ludhiana",
              "Agra",
              "Nashik",
              "Faridabad",
              "Meerut",
              "Rajkot",
              "Varanasi",
              "Amritsar",
              "Allahabad",
              "Coimbatore",
              "Vijayawada",
              "Visakhapatnam",
              "Madurai",
              "Gurgaon",
              "Noida",
              "Ghaziabad",
              "Thane",
              "Howrah",
              "Mysore",
              "Mangalore",
              "Trivandrum",
              "Kochi",
              "Chandigarh",
              "Goa",
              "Guwahati",
              "Bhubaneswar",
              "Dehradun",
              "Jodhpur",
              "Raipur"
            ],
            "type": "string",
            "description": "Indian city as recognized by AskLaila. Used for `byCategory` and `keywordSearch` modes. Pick from the dropdown of all major covered cities.",
            "default": "Bangalore"
          },
          "category": {
            "title": "Category",
            "enum": [
              "restaurants",
              "hotels",
              "doctors",
              "dentists",
              "hospitals",
              "clinics",
              "pharmacies",
              "diagnostic-centres",
              "gyms",
              "yoga-classes",
              "salons",
              "beauty-parlours",
              "spas",
              "schools",
              "colleges",
              "coaching-classes",
              "play-schools",
              "plumbers",
              "electricians",
              "carpenters",
              "painters",
              "interior-designers",
              "architects",
              "real-estate-agents",
              "lawyers",
              "chartered-accountants",
              "tax-consultants",
              "banks",
              "atms",
              "courier-services",
              "movers-and-packers",
              "car-dealers",
              "car-rentals",
              "travel-agents",
              "tour-operators",
              "supermarkets",
              "departmental-stores",
              "jewellers",
              "boutiques",
              "tailors",
              "florists",
              "bakeries",
              "sweet-shops",
              "computer-repair",
              "mobile-phone-repair",
              "ac-repair",
              "pest-control",
              "veterinarians",
              "pet-shops",
              "photographers",
              "event-organisers",
              "caterers",
              "wedding-halls",
              "petrol-pumps",
              "auto-repair"
            ],
            "type": "string",
            "description": "Business category slug. Used for `byCategory` mode. AskLaila supports hundreds of categories — the dropdown lists the most popular axes.",
            "default": "restaurants"
          },
          "locality": {
            "title": "Locality (optional)",
            "type": "string",
            "description": "Optional locality / neighborhood inside the city to narrow the search (e.g. `Koramangala`, `Andheri`, `Connaught-Place`). Leave blank to search city-wide. Only used with `byCategory` mode.",
            "default": ""
          },
          "keyword": {
            "title": "Keyword (free-text search)",
            "type": "string",
            "description": "Free-text business search inside the selected city. Used by the `keywordSearch` mode (e.g. `Domino's pizza`, `Apollo hospital`).",
            "default": ""
          },
          "searchUrls": {
            "title": "Search / category URLs",
            "type": "array",
            "description": "AskLaila search or category URLs to scrape directly. Examples: `https://www.asklaila.com/search/Bangalore/-/restaurants/`, `https://www.asklaila.com/search/Mumbai/Andheri/dentists/`. Used by `searchUrls` mode.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "listingUrls": {
            "title": "Listing detail URLs",
            "type": "array",
            "description": "AskLaila business listing detail page URLs. Example: `https://www.asklaila.com/listing/Bangalore/malleswaram/hallimane/1OjwP4uM/`. Used by `listingUrls` mode.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "fetchListingDetails": {
            "title": "Fetch listing detail pages (richer data)",
            "type": "boolean",
            "description": "When enabled, each search/category card is enriched with a follow-up GET to the listing detail page, adding street address, postal code, geo coordinates, working hours, services attributes, photos, and review snippets. Disable for faster, lighter runs that emit only card-level fields.",
            "default": true
          },
          "includeReviews": {
            "title": "Include user reviews on detail pages",
            "type": "boolean",
            "description": "When `fetchListingDetails` is enabled, also extract the visible reviewer name, star rating, date, and review body for each review on the listing detail page.",
            "default": true
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Filter out businesses whose rating is below this threshold (1-5). Set to 0 to disable.",
            "default": 0
          },
          "minReviewCount": {
            "title": "Minimum review count",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Filter out businesses with fewer than this many user reviews on AskLaila. Set to 0 to disable.",
            "default": 0
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on the number of business records emitted to the dataset.",
            "default": 25
          },
          "useProxy": {
            "title": "Use Apify proxy",
            "type": "boolean",
            "description": "Route requests through Apify proxy. AskLaila is normally reachable from datacenter IPs without a proxy. Enable only if cloud runs return empty pages.",
            "default": false
          },
          "autoEscalateOnBlock": {
            "title": "Auto-escalate on block",
            "type": "boolean",
            "description": "If a fetch is empty or blocked, retry once with a residential Apify proxy session as a safety net. Card-level data is still emitted as fallback when detail fetches fail.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration (advanced)",
            "type": "object",
            "description": "Optional Apify proxy configuration. Only used when `useProxy` is enabled. Leave empty to let `useProxy` + `autoEscalateOnBlock` pick sane defaults.",
            "default": {}
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}