{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Hospitality Scraper",
    "description": "Scrape hotels, resorts, restaurants & cafes from Google Maps. Get emails, contact info, ratings, and lead-scoring for sales outreach. No coding required.",
    "version": "0.0",
    "x-build-id": "5Bn82ZgmIPiFiLB0b"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/techforce.global~google-maps-hospitality-lead-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-techforce.global-google-maps-hospitality-lead-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/techforce.global~google-maps-hospitality-lead-scraper/runs": {
      "post": {
        "operationId": "runs-sync-techforce.global-google-maps-hospitality-lead-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/techforce.global~google-maps-hospitality-lead-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-techforce.global-google-maps-hospitality-lead-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": {
          "category": {
            "title": "Category",
            "enum": [
              "Hotels",
              "Resorts",
              "Restaurants",
              "Cafes"
            ],
            "type": "string",
            "description": "Select the hospitality category to search.",
            "default": "Hotels"
          },
          "subcategory": {
            "title": "Legacy subcategory",
            "type": "string",
            "description": "Compatibility field for older saved inputs.",
            "default": ""
          },
          "subcategories": {
            "title": "Business Type",
            "minItems": 1,
            "maxItems": 60,
            "uniqueItems": true,
            "type": "array",
            "description": "Select one or more business types. The actor uses only the options mapped to the selected category.",
            "items": {
              "type": "string",
              "enum": [
                "Hotel",
                "Luxury Hotel",
                "Business Hotel",
                "Boutique Hotel",
                "Budget Hotel",
                "Resort Hotel",
                "Heritage Hotel",
                "Apartment Hotel",
                "Extended Stay Hotel",
                "Resort",
                "Luxury Resort",
                "Wellness Resort",
                "Spa Resort",
                "Beach Resort",
                "Eco Resort",
                "Family Resort",
                "Restaurant",
                "Family Restaurant",
                "Fine Dining Restaurant",
                "Rooftop Restaurant",
                "Fast Food Restaurant",
                "Pizza Restaurant",
                "Burger Restaurant",
                "Banquet Hall",
                "Catering Service",
                "Food Court",
                "Cafe",
                "Coffee Shop",
                "Bakery Cafe",
                "Dessert Cafe",
                "Coffee Roastery",
                "Ice Cream Shop",
                "Bakery"
              ],
              "enumTitles": [
                "Hotel",
                "Luxury Hotel",
                "Business Hotel",
                "Boutique Hotel",
                "Budget Hotel",
                "Resort Hotel",
                "Heritage Hotel",
                "Apartment Hotel",
                "Extended Stay Hotel",
                "Resort",
                "Luxury Resort",
                "Wellness Resort",
                "Spa Resort",
                "Beach Resort",
                "Eco Resort",
                "Family Resort",
                "Restaurant",
                "Family Restaurant",
                "Fine Dining Restaurant",
                "Rooftop Restaurant",
                "Fast Food Restaurant",
                "Pizza Restaurant",
                "Burger Restaurant",
                "Banquet Hall",
                "Catering Service",
                "Food Court",
                "Cafe",
                "Coffee Shop",
                "Bakery Cafe",
                "Dessert Cafe",
                "Coffee Roastery",
                "Ice Cream Shop",
                "Bakery"
              ]
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Enter one city/area/state/country.",
            "default": "Ahmedabad"
          },
          "maxResults": {
            "title": "Maximum businesses",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum total number of Google Maps businesses to analyze across the whole run.",
            "default": 20
          },
          "batchSize": {
            "title": "Parallel browser pages",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of businesses processed at once. Lower this if Google Maps or websites load slowly.",
            "default": 4
          },
          "includeLeadOverview": {
            "title": "Business Growth Opportunities",
            "type": "boolean",
            "description": "Generate lead priority, revenue opportunity level, sales angle, recommended pitch, and estimated service potential.",
            "default": false
          },
          "includePitchStrategy": {
            "title": "Recommended Sales Approach",
            "type": "boolean",
            "description": "Generate opening hook, services to pitch, pain points, outcomes, and closing strategy.",
            "default": false
          },
          "includeWebsiteHealthScorecard": {
            "title": "Website Performance Report",
            "type": "boolean",
            "description": "Analyze website quality and generate final grade, final classification, and grade breakdown.",
            "default": false
          },
          "includeServiceRecommendations": {
            "title": "Suggested Business Improvements",
            "type": "boolean",
            "description": "Generate prioritized service recommendations with what to fix, why it matters, expected outcome, and selling point.",
            "default": false
          },
          "includeTechnicalIntel": {
            "title": "Website Technology Details",
            "type": "boolean",
            "description": "Analyze tech stack, SSL/security status, robots.txt, sitemap, audited pages, audited URLs, navigation notes, and key technical issues.",
            "default": false
          },
          "maxAuditPagesPerSite": {
            "title": "Audit pages per website",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Maximum website pages to audit when any analysis section is enabled.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Google Maps often blocks or shows cookie-consent walls to requests from datacenter IPs. Apify Proxy is strongly recommended for reliable scraping."
          },
          "mcpConnector": {
            "title": "Deliver to (MCP connector)",
            "type": "string",
            "description": "Optionally deliver scraped leads into a connector you have authorized — Notion, Slack, Airtable, Google Sheets, HubSpot, or any MCP-compatible connector. Leave empty to only save results to the dataset."
          },
          "deliveryMode": {
            "title": "Delivery mode",
            "enum": [
              "summary",
              "chunked",
              "perLead",
              "none"
            ],
            "type": "string",
            "description": "How to deliver to the connector: 'summary' (one call with an aggregate summary and the full lead list), 'chunked' (split a large lead list across multiple calls so services like Notion never time out), 'perLead' (one call per scraped business), or 'none' (save to dataset only).",
            "default": "summary"
          },
          "mcpTool": {
            "title": "Connector tool name",
            "type": "string",
            "description": "Name of the tool to call on the connector (e.g. 'create_page' for Notion, 'send_message' for Slack, 'append_row' for Google Sheets/Airtable, 'create_contact' for HubSpot). If unsure, run once with a connector selected — the log lists the connector's available tools.",
            "default": ""
          },
          "mcpArguments": {
            "title": "Connector tool arguments",
            "type": "object",
            "description": "Arguments passed to the connector tool. String values support {placeholders}. In 'summary' and 'chunked' modes: {totalLeads}, {locations}, {categories}, {leadList} (formatted list of leads — in 'chunked' mode this holds one part), {part}/{partCount} (chunked mode only), and {message} (the rendered template below). In 'perLead' mode: {businessName}, {category}, {address}, {phone}, {website}, {companyEmail}, {emailStatus}, {workingHours}, {googleRating}, {totalReviews}, {googleMapsUrl}, {searchQuery}, and {message}. Example for Slack: {\"channel\": \"#hospitality-leads\", \"text\": \"{message}\"}. Example for Notion (perLead): {\"parent\": {\"database_id\": \"YOUR_DB_ID\"}, \"properties\": {\"Name\": {\"title\": [{\"text\": {\"content\": \"{businessName}\"}}]}}}.",
            "default": {}
          },
          "mcpMessageTemplate": {
            "title": "Message template",
            "type": "string",
            "description": "Optional template rendered and exposed as the {message} placeholder in the tool arguments. Summary example: 'Found {totalLeads} leads across {locations} ({categories}):\\n\\n{leadList}'. Per-lead example: '{businessName} - {category}, {address} - {phone} - {companyEmail} - Google rating {googleRating} ({totalReviews} reviews) - {googleMapsUrl}'.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}