{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Website Leads - Find & Rank Sales Opportunities",
    "description": "Find and qualify Google Maps sales leads across multiple cities and business categories. Detect missing or weak websites, remove duplicate prospects, rank opportunities, and get tailored service offers, sales angles, and personalized outreach recommendations. No dataset required.",
    "version": "0.1",
    "x-build-id": "7waoPCIqGMdAsYkQq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/northpeak_data~google-maps-website-gap-leads/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-northpeak_data-google-maps-website-gap-leads",
        "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/northpeak_data~google-maps-website-gap-leads/runs": {
      "post": {
        "operationId": "runs-sync-northpeak_data-google-maps-website-gap-leads",
        "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/northpeak_data~google-maps-website-gap-leads/run-sync": {
      "post": {
        "operationId": "run-sync-northpeak_data-google-maps-website-gap-leads",
        "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": {
          "searchCategory": {
            "title": "Search business category",
            "type": "string",
            "description": "Direct search: e.g. plumbers. Enter with Search city. Upstream Google Maps Actor usage incurs separate charges."
          },
          "searchCity": {
            "title": "Search city / location",
            "type": "string",
            "description": "Direct search: e.g. Austin, Texas, USA."
          },
          "searchQueries": {
            "title": "Additional search terms",
            "type": "array",
            "description": "Optional additional business categories/terms; combine with one or more cities. Each combination may incur upstream charges.",
            "items": {
              "type": "string"
            }
          },
          "mapsActorId": {
            "title": "Google Maps source Actor",
            "type": "string",
            "description": "Optional upstream Apify Actor ID. Default compass/crawler-google-places. Its charges are separate."
          },
          "datasetId": {
            "title": "Google Maps / business dataset ID",
            "type": "string",
            "description": "Optional Apify dataset ID from a Google Maps scraper or another business-data Actor."
          },
          "businesses": {
            "title": "Businesses",
            "type": "array",
            "description": "Paste businesses directly. Common Google Maps field names are mapped automatically.",
            "items": {
              "type": "object"
            },
            "default": []
          },
          "serviceOffer": {
            "title": "Legacy service description",
            "type": "string",
            "description": "Accepted for compatibility. Select the service type to control eligibility. Commercial recommendations are based on observed evidence."
          },
          "idealCustomer": {
            "title": "Who is your ideal customer?",
            "type": "string",
            "description": "Optional. Describe the businesses you want to target, for example: Plumbers, electricians and HVAC companies with an established local reputation."
          },
          "targetCategories": {
            "title": "Target business categories",
            "type": "array",
            "description": "Optional categories that should receive a stronger fit score, for example Plumber, Dentist or HVAC contractor.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "targetLocations": {
            "title": "Target locations",
            "type": "array",
            "description": "Optional cities, neighborhoods or location terms that should receive a stronger fit score.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "minRating": {
            "title": "Preferred minimum Google rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Optional qualification preference. Businesses meeting this rating receive a stronger fit signal.",
            "default": 0
          },
          "minReviews": {
            "title": "Preferred minimum review count",
            "minimum": 0,
            "type": "integer",
            "description": "Optional qualification preference. Established businesses meeting this review count receive a stronger fit signal.",
            "default": 0
          },
          "auditWebsites": {
            "title": "Audit business websites",
            "type": "boolean",
            "description": "Fetch each public business website and detect visible technical and conversion gaps.",
            "default": true
          },
          "onlyOpportunities": {
            "title": "Legacy option (qualified output always enforced)",
            "type": "boolean",
            "description": "Deprecated compatibility field. The default dataset always contains qualified real opportunities only, even when false. All reviewed businesses are stored separately in the audits dataset.",
            "default": true
          },
          "minOpportunityScore": {
            "title": "Minimum opportunity score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Ranking floor after material-gap, selected-service and contact-channel gates. Lowering this never qualifies healthy, inconclusive or metadata-only audits.",
            "default": 65
          },
          "maxBusinesses": {
            "title": "Maximum businesses",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of business records to analyze in one run.",
            "default": 500
          },
          "requestTimeoutSecs": {
            "title": "Website timeout (seconds)",
            "minimum": 3,
            "maximum": 30,
            "type": "integer",
            "description": "Maximum time to wait for each public website request.",
            "default": 10
          },
          "searchCategories": {
            "title": "Additional business categories",
            "type": "array",
            "description": "Optional: search several business categories in one run. Each category/city combination invokes the upstream Actor and may incur separate charges.",
            "items": {
              "type": "string"
            }
          },
          "searchCities": {
            "title": "Additional cities / locations",
            "type": "array",
            "description": "Optional: search multiple cities in one run. Duplicate businesses across searches are removed.",
            "items": {
              "type": "string"
            }
          },
          "maxSearchCombinations": {
            "title": "Maximum category/city searches",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Safety cap on paid upstream searches. Up to 25 combinations; each combination may incur upstream charges.",
            "default": 12
          },
          "runSample": {
            "title": "Preview fictional sample results",
            "type": "boolean",
            "description": "Fictional examples go to audits and SAMPLE_RESULTS only. Default qualified-lead dataset remains empty; no qualified-lead event charges. No upstream search or website requests. Actor/platform charges may apply.",
            "default": false
          },
          "serviceType": {
            "title": "Service to qualify for",
            "enum": [
              "website_build",
              "website_repair",
              "conversion_optimization",
              "seo"
            ],
            "type": "string",
            "description": "Hard service-fit gate. Metadata/copyright alone does not qualify even for SEO; this audit does not verify search rankings.",
            "default": "website_build"
          },
          "minOpportunityStrength": {
            "title": "Minimum opportunity strength",
            "enum": [
              "moderate",
              "strong"
            ],
            "type": "string",
            "description": "Strong requires a parked or broken website, or multiple material technical/conversion gaps matching the selected service. A metadata-only gap is always weak and excluded.",
            "default": "strong"
          },
          "requiredContactChannel": {
            "title": "Required direct contact channel",
            "enum": [
              "any",
              "phone",
              "email"
            ],
            "type": "string",
            "description": "Require a syntactically usable phone or email. A website or Maps link alone is not a direct contact channel. Availability does not verify ownership or deliverability.",
            "default": "any"
          },
          "maxUpstreamCostUsd": {
            "title": "Maximum cost per upstream search (USD)",
            "minimum": 0.01,
            "maximum": 100,
            "type": "number",
            "description": "Separate spending limit forwarded to each upstream pay-per-event run. Default $1 per category/city combination. Multiple searches each have this limit; parent run cap is separate. Non-pay-per-event providers may not enforce it.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}