{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Rank Tracker: Local SEO Geo-Grid Heatmap",
    "description": "Local rank tracker for Google Maps: see your ranking at every point of a geo-grid (up to 15 x 15) around your business. Rank per point, top competitors, average rank (ARP/ATRP), share of top 3 (SoLV), a competitor leaderboard and an HTML heat map. Pay per grid point, no monthly seat.",
    "version": "1.0",
    "x-build-id": "FUFTGZ8QWaTdiFF9o"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vncntlabs~google-maps-rank-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vncntlabs-google-maps-rank-tracker",
        "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/vncntlabs~google-maps-rank-tracker/runs": {
      "post": {
        "operationId": "runs-sync-vncntlabs-google-maps-rank-tracker",
        "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/vncntlabs~google-maps-rank-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-vncntlabs-google-maps-rank-tracker",
        "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": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Searches your customers type into Google Maps, one per line (up to 20): <code>dentist</code>, <code>emergency plumber</code>, <code>pizza near me</code>. Each keyword is scanned at every grid point.",
            "items": {
              "type": "string"
            }
          },
          "googleMapsUrl": {
            "title": "Business Google Maps URL (recommended)",
            "type": "string",
            "description": "Open the business on Google Maps and paste the URL (or a maps.app.goo.gl share link). Gives an exact match and centres the grid on the business."
          },
          "businessName": {
            "title": "Business name",
            "type": "string",
            "description": "Optional if you gave the URL. The name exactly as shown on Google Maps, e.g. <code>Swish Dental Downtown</code>. Used to find the business (one lookup, included in the run price)."
          },
          "businessLocation": {
            "title": "Business city or address",
            "type": "string",
            "description": "Optional, helps find the business by name, e.g. <code>Austin, TX</code> or <code>201 W 5th St, Austin</code>."
          },
          "placeId": {
            "title": "Google place ID or CID",
            "type": "string",
            "description": "Optional alternative to the URL: <code>ChIJ...</code> place ID or the numeric CID."
          },
          "website": {
            "title": "Business website",
            "type": "string",
            "description": "Optional, e.g. <code>swishsmiles.com</code>. Helps find the business; in 'any location' mode every listing with this website counts as yours."
          },
          "country": {
            "title": "Country (for finding the business by name)",
            "enum": [
              "Argentina",
              "Australia",
              "Austria",
              "Bangladesh",
              "Belgium",
              "Brazil",
              "Bulgaria",
              "Canada",
              "Chile",
              "Colombia",
              "Costa Rica",
              "Croatia",
              "Cyprus",
              "Czechia",
              "Denmark",
              "Dominican Republic",
              "Ecuador",
              "Egypt",
              "Estonia",
              "Finland",
              "France",
              "Germany",
              "Greece",
              "Hong Kong",
              "Hungary",
              "Iceland",
              "India",
              "Indonesia",
              "Ireland",
              "Israel",
              "Italy",
              "Japan",
              "Kenya",
              "Kuwait",
              "Latvia",
              "Lithuania",
              "Luxembourg",
              "Malaysia",
              "Malta",
              "Mexico",
              "Morocco",
              "Netherlands",
              "New Zealand",
              "Nigeria",
              "Norway",
              "Pakistan",
              "Peru",
              "Philippines",
              "Poland",
              "Portugal",
              "Puerto Rico",
              "Qatar",
              "Romania",
              "Saudi Arabia",
              "Serbia",
              "Singapore",
              "Slovakia",
              "Slovenia",
              "South Africa",
              "South Korea",
              "Spain",
              "Sweden",
              "Switzerland",
              "Taiwan",
              "Thailand",
              "Turkiye",
              "Ukraine",
              "United Arab Emirates",
              "United Kingdom",
              "United States",
              "Uruguay",
              "Vietnam"
            ],
            "type": "string",
            "description": "Only used to look the business up by name. Grid points are GPS coordinates and work anywhere Google Maps works.",
            "default": "United States"
          },
          "gridSize": {
            "title": "Grid size (points per side)",
            "minimum": 3,
            "maximum": 15,
            "type": "integer",
            "description": "3 = 3 x 3 (9 points), 5 = 25, 7 = 49, 9 = 81, up to 15 x 15 (225). Odd numbers keep the business in the middle.",
            "default": 5
          },
          "pointSpacing": {
            "title": "Distance between points",
            "minimum": 0.05,
            "maximum": 50,
            "type": "number",
            "description": "Spacing between neighbouring grid points, in the unit below. Typical: 0.5-1 mi in cities, 2-5 mi for service-area businesses.",
            "default": 1
          },
          "distanceUnit": {
            "title": "Distance unit",
            "enum": [
              "km",
              "mi"
            ],
            "type": "string",
            "description": "Unit for the spacing.",
            "default": "km"
          },
          "gridShape": {
            "title": "Grid shape",
            "enum": [
              "square",
              "circle"
            ],
            "type": "string",
            "description": "Circle drops the corner points outside the radius, so you pay for fewer points.",
            "default": "square"
          },
          "center": {
            "title": "Grid center (latitude, longitude)",
            "type": "string",
            "description": "Optional, e.g. <code>30.2672, -97.7431</code>. Defaults to the business location."
          },
          "zoom": {
            "title": "Map zoom",
            "minimum": 11,
            "maximum": 19,
            "type": "integer",
            "description": "Google Maps zoom of each search. 13 (default) covers a city district, like a searcher scanning the map; 12 suits wide metro grids; 15+ is a single neighbourhood, so businesses outside that small view won't appear.",
            "default": 13
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Google interface language code (en, de, es, fr, pt-BR...).",
            "default": "en"
          },
          "competitorsPerPoint": {
            "title": "Competitors per point",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Top Google Maps listings to include for each point (rank, name, rating, reviews, category, website).",
            "default": 3
          },
          "matchMode": {
            "title": "What counts as your business",
            "enum": [
              "this_location",
              "any_location"
            ],
            "type": "string",
            "description": "For multi-location brands choose 'any location' to track the best-ranked branch at each point.",
            "default": "this_location"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}