{
  "openapi": "3.0.1",
  "info": {
    "title": "Local Falcon Alternative: Google Maps Rank Tracker & Local SEO",
    "description": "Google Maps rank tracker, geo grid local rank tracker and local SEO MCP tool: a business's rank on Google Maps at each point of a 3x3 to 9x9 grid for up to 5 keywords: rank per point, top 3 competitors, average rank, share of voice. Local Falcon, BrightLocal alternative. Pay per point + start fee.",
    "version": "0.1",
    "x-build-id": "Avz56EhNuVE81hsdi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/plainrows~google-maps-rank-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-plainrows-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/plainrows~google-maps-rank-tracker/runs": {
      "post": {
        "operationId": "runs-sync-plainrows-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/plainrows~google-maps-rank-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-plainrows-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": [
          "business",
          "keywords"
        ],
        "properties": {
          "business": {
            "title": "Business",
            "type": "string",
            "description": "The business to track: its name and city (\"Monmouth Coffee, Borough, London\"), its Google Maps link, place ID (\"ChIJ...\") or CID. One business per run. If it cannot be found, the run stops and no grid point is charged."
          },
          "keywords": {
            "title": "Keywords",
            "minItems": 1,
            "maxItems": 5,
            "type": "array",
            "description": "What customers type in Google Maps, 1 to 5 keywords: \"coffee shop\", \"espresso bar\". Do not add the city: each search is made from the grid point itself.",
            "items": {
              "type": "string"
            }
          },
          "gridSize": {
            "title": "Grid size",
            "enum": [
              "3",
              "5",
              "7",
              "9"
            ],
            "type": "string",
            "description": "Points per side: 3 (9 points), 5 (25), 7 (49) or 9 (81). Each point is one Google Maps search per keyword.",
            "default": "5"
          },
          "gridSpacingKm": {
            "title": "Distance between points (km)",
            "pattern": "^\\s*\\d+(\\.\\d+)?\\s*$",
            "type": "string",
            "description": "Distance between two neighbouring points, from 0.1 to 20 km. 0.5-1 km for a city centre, 2-5 km for a suburb or a service area.",
            "default": "1"
          },
          "country": {
            "title": "Country",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "IE",
              "IN",
              "DE",
              "AT",
              "CH",
              "FR",
              "BE",
              "ES",
              "MX",
              "IT",
              "NL",
              "PT",
              "BR",
              "PL",
              "SE",
              "JP"
            ],
            "type": "string",
            "description": "Country of the business (sets the default language and the search used to find the business).",
            "default": "US"
          },
          "languageCode": {
            "title": "Language (optional)",
            "pattern": "^([a-zA-Z]{2})?$",
            "type": "string",
            "description": "Two-letter language code, e.g. \"en\" or \"fr\". Leave empty to use the country's main language (for example German for Switzerland, French for Belgium)."
          },
          "maxRank": {
            "title": "Search depth (max rank)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many Google Maps results to check at each point. A business beyond this rank is reported as not ranked (rank null). The price per grid point does not depend on this value.",
            "default": 20
          },
          "centerLat": {
            "title": "Grid centre latitude (optional)",
            "type": "string",
            "description": "Centre the grid somewhere else than the business, e.g. \"51.5074\". Set both latitude and longitude."
          },
          "centerLng": {
            "title": "Grid centre longitude (optional)",
            "type": "string",
            "description": "e.g. \"-0.1278\"."
          },
          "zoom": {
            "title": "Map zoom",
            "minimum": 10,
            "maximum": 18,
            "type": "integer",
            "description": "Zoom of the Google Maps view at each point (15 = a few streets around the searcher, as on a phone). Keep the same value between runs to compare them.",
            "default": 15
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}