{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps New Business Radar: New Openings Leads, $3/1K",
    "description": "Find newly opened businesses on Google Maps in any city: no or few reviews, recent first review, no photos or hours yet. Newness score 0-100 with reasons, phone, website. Monitor mode returns only places new since the last run. No login, no API key. $3 per 1,000 new places.",
    "version": "0.1",
    "x-build-id": "2IppHvaBu4nsRkNZp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/transparent_meteorite~google-maps-new-business-radar/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-transparent_meteorite-google-maps-new-business-radar",
        "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/transparent_meteorite~google-maps-new-business-radar/runs": {
      "post": {
        "operationId": "runs-sync-transparent_meteorite-google-maps-new-business-radar",
        "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/transparent_meteorite~google-maps-new-business-radar/run-sync": {
      "post": {
        "operationId": "run-sync-transparent_meteorite-google-maps-new-business-radar",
        "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": {
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Kinds of business to watch, as you would type them into Google Maps: \"restaurant\", \"hair salon\", \"dentist\", \"gym\". Each one is searched across every location below.",
            "default": [
              "restaurant"
            ],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, neighborhoods, ZIP codes or \"lat,lng\" points, for example \"Austin, TX\", \"78641\", \"Shoreditch, London\". The actor lays a grid of small map views over the area so new places with no reviews show up (a normal Maps search only lists the ~120 most popular).",
            "default": [
              "Austin, TX"
            ],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Google Maps search URLs",
            "type": "array",
            "description": "Optional. Paste Google Maps search URLs, for example https://www.google.com/maps/search/bakery/@41.88,-87.63,14z. The search term and the map center are used. Place URLs are skipped.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxReviews": {
            "title": "Max reviews (new = this many or fewer)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Places with at most this many Google reviews count as possibly new. Brand-new places have 0-5.",
            "default": 5
          },
          "includeNoReviews": {
            "title": "Include places with no reviews",
            "type": "boolean",
            "description": "Places with zero reviews are often not open yet or just opened. Turn off to keep only places that already have a first review.",
            "default": true
          },
          "checkReviewDates": {
            "title": "Check review dates",
            "type": "boolean",
            "description": "Open each candidate's listing to read the dates of its reviews. A place whose first review is 3 weeks old is new; one whose 4 reviews go back to 2019 is not. Free for you; adds a few seconds.",
            "default": true
          },
          "maxFirstReviewAgeDays": {
            "title": "Max age of first review (days)",
            "minimum": 0,
            "maximum": 36500,
            "type": "integer",
            "description": "Skip places whose oldest review is older than this (they are quiet, not new). 0 = no limit. Needs \"Check review dates\".",
            "default": 365
          },
          "minNewnessScore": {
            "title": "Min newness score (0-100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Every row gets a 0-100 score from its signals (no or few reviews, few photos, no hours yet, recent first review, opening labels, appeared since your last run). Raise to 40+ for only the strongest leads.",
            "default": 20
          },
          "requireSignals": {
            "title": "Require these signals",
            "type": "array",
            "description": "Optional. Keep only places that show ALL of these signals. Example: \"No website\" for web design leads, \"Listing not claimed\" for local SEO offers.",
            "items": {
              "type": "string",
              "enum": [
                "openingLabel",
                "noReviews",
                "fewReviews",
                "noPhotos",
                "fewPhotos",
                "noHours",
                "unclaimed",
                "noWebsite",
                "recentFirstReview",
                "newSinceLastRun"
              ],
              "enumTitles": [
                "Google opening label (Opening soon, Opens Oct 20, ...)",
                "No reviews yet",
                "Few reviews (incl. none)",
                "No photos",
                "Few photos (incl. none)",
                "No opening hours yet",
                "Listing not claimed",
                "No website",
                "First review is recent",
                "Appeared since last run (monitor)"
              ]
            },
            "default": []
          },
          "excludeClosed": {
            "title": "Exclude closed places",
            "type": "boolean",
            "description": "Skip places marked temporarily closed. Permanently closed places are always skipped.",
            "default": true
          },
          "excludeChains": {
            "title": "Exclude chains",
            "type": "boolean",
            "description": "Skip big chains (Starbucks, Chipotle, State Farm, ...) and any name that shows up 3+ times in the same search. Turn off to keep new chain branches too.",
            "default": true
          },
          "matchCategory": {
            "title": "Only places in the searched category",
            "type": "boolean",
            "description": "A zoomed-in Maps search also returns nearby places of other kinds. Keep only places whose Google category matches your search word.",
            "default": true
          },
          "maxPlacesPerSearch": {
            "title": "Places to scan per search",
            "minimum": 20,
            "maximum": 5000,
            "type": "integer",
            "description": "How many places to look at per category x location (you pay only for the new ones delivered). About 2-5% of places in a city look new, so 200 scanned gives a handful; use 1000+ to sweep a whole city.",
            "default": 200
          },
          "searchRadiusKm": {
            "title": "Search radius (km)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Area around each location to cover. 0 = automatic from the size Google gives the place (a city about 20 km, a neighborhood about 2 km).",
            "default": 0
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many new places in total. 0 = no limit (your max cost per run still applies).",
            "default": 0
          },
          "onlyNew": {
            "title": "Monitor mode: only places not seen before",
            "type": "boolean",
            "description": "Schedule this actor daily or weekly. It remembers every place it scanned (with the date first seen) and returns only places that were not there on earlier runs. The first run builds the baseline.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional. Name for the saved state, so you can change other settings and keep the same memory. Default: derived from categories + locations."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Google Maps language code, for example en, de, es.",
            "default": "en"
          },
          "countryCode": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code for Google results, for example us, gb, ca, au.",
            "default": "us"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy is used by default. If Google rate-limits an exit, the actor rotates and, if needed, switches to residential proxy automatically.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}