{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Extractor Listing Completeness Audit",
    "description": "Google Maps Extractor: Extract business listings with names, categories, ratings, reviews, addresses, phone numbers, websites, hours, and Google Maps URLs. Audit listing completeness to identify missing business information, optimize local profiles, and uncover data quality gaps.",
    "version": "0.1",
    "x-build-id": "tcZSwt5WA5RkLLzBS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapier~google-maps-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapier-google-maps-extractor",
        "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/scrapier~google-maps-extractor/runs": {
      "post": {
        "operationId": "runs-sync-scrapier-google-maps-extractor",
        "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/scrapier~google-maps-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-scrapier-google-maps-extractor",
        "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": {
          "locations": {
            "title": "🗺️ Areas to audit",
            "type": "array",
            "description": "City, district or region names, e.g. *Austin*, *Brooklyn*, *Manchester*. One area per line — several areas run one after another.",
            "default": [
              "New York"
            ],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "🏪 Business categories to audit",
            "type": "array",
            "description": "What the listings should be, e.g. *dentists*, *coffee shops*, *plumbers*, *hair salons*. Each category is searched in every area above.",
            "default": [
              "coffee shops"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxCompletenessScore": {
            "title": "📉 Keep only listings scoring at or below",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "0-100. A listing is kept only when its profile_completeness_score is at or below this number, so a lower value returns fewer but more broken listings. Example: 60 keeps profiles missing roughly two of the bigger components. Default 100 = keep everything.",
            "default": 100
          },
          "requiredGaps": {
            "title": "🕳️ Keep only listings missing these things",
            "type": "array",
            "description": "A listing is kept only when it is missing EVERY item you tick. Leave empty to ignore. Measured presence over 80 live places: website 97.5%, phone 93.8%, hours 75.0%, description 62.5%, accessibility info 73.8%, booking link 33.8% — so 'missing a booking link' matches far more listings than 'missing a website'. Ticking Street View turns the extra lookup on automatically.",
            "items": {
              "type": "string",
              "enum": [
                "website",
                "phone",
                "hours",
                "description",
                "accessibility_info",
                "booking_link",
                "street_view"
              ],
              "enumTitles": [
                "🌐 No website",
                "📞 No phone number",
                "🕓 No opening hours",
                "📝 No description or tagline",
                "♿ No accessibility info",
                "🍽️ No booking / ordering link",
                "🛣️ No Street View"
              ]
            },
            "default": []
          },
          "auditMediaDepth": {
            "title": "🛣️ Street View & owner lookup",
            "enum": [
              "fetch",
              "skip"
            ],
            "type": "string",
            "description": "*Fetch* = one extra lookup per listing, adding has_street_view, street_view_thumbnail and owner_display_name, and scoring 7 components instead of 6. *Skip* = listing payload only. Default: fetch.",
            "default": "fetch"
          },
          "maxResults": {
            "title": "🔢 How many audited listings to return",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Total unique listings saved across all areas, categories and links. Duplicates are merged by Google place ID. Default 20.",
            "default": 20
          },
          "restrictToSearchArea": {
            "title": "📐 Only keep listings inside the area I asked for",
            "type": "boolean",
            "description": "Google returns results radiating outward from each map tile, so a plain sweep of *New York* also brings back New Jersey. With this on, the Actor first checks that the connection honours the requested coordinates, then drops every listing whose coordinates fall outside the area's bounding box. Turn it off to keep the wider surroundings too. Default: on.",
            "default": true
          },
          "urls": {
            "title": "🔗 Start from a Google Maps link instead",
            "type": "array",
            "description": "Full Google Maps links, e.g. https://www.google.com/maps/search/dentists/@30.2672,-97.7431,13z — the search term and the coordinates are both read from the link.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "🛡️ Connection",
            "type": "object",
            "description": "Your proxy groups and country are passed through unchanged.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}