{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper - $1/1k, Fast & Detailed Data",
    "description": "Export public Google Maps listings worldwide. Fast mode returns lower-cost names, categories, ratings, reviews, locations, coordinates, IDs, and Maps URLs. Detailed mode adds phone, website, hours, and fuller addresses when available.",
    "version": "1.0",
    "x-build-id": "Dye9nYGvEPb4zrT4f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fascinating_lentil~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fascinating_lentil-google-maps-scraper",
        "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/fascinating_lentil~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fascinating_lentil-google-maps-scraper",
        "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/fascinating_lentil~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fascinating_lentil-google-maps-scraper",
        "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": "Search keywords",
            "minItems": 1,
            "type": "array",
            "description": "Business types or search terms to find, such as dentists, restaurants, real estate agents, auto repair, or software companies. Each keyword is combined with each location, so agents should start with one keyword for targeted lead lists.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Custom worldwide locations",
            "minItems": 1,
            "type": "array",
            "description": "Cities, regions, postal codes, addresses, or 'lat,lon' pairs to search. Include the country for best accuracy, e.g. 'Mumbai, India', 'London, UK', or '48.8566,2.3522'. Required when Location preset is 'None'.",
            "items": {
              "type": "string"
            }
          },
          "locationPreset": {
            "title": "Location preset",
            "enum": [
              "none",
              "high_demand_markets",
              "world_major_cities"
            ],
            "type": "string",
            "description": "Optional city preset. Keep 'None' for a controlled low-cost run. Presets create many keyword/location searches and should be used only for intentional batch jobs.",
            "default": "none"
          },
          "maxResults": {
            "title": "Max results per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of businesses to save per keyword/location combination. Use 1-5 for tests or agent calls; increase only for intentional production lead lists.",
            "default": 5
          },
          "language": {
            "title": "Result language",
            "pattern": "^[a-zA-Z]{2,5}$",
            "minLength": 2,
            "maxLength": 5,
            "type": "string",
            "description": "Two-letter language code for result text, e.g. 'en', 'es', 'de', 'fr', 'ja'.",
            "default": "en"
          },
          "countryCode": {
            "title": "Optional country bias",
            "pattern": "^[a-zA-Z]{2}$",
            "minLength": 2,
            "maxLength": 2,
            "type": "string",
            "description": "Optional two-letter country code that biases Google Maps results and proxy country, e.g. 'us', 'gb', 'de', 'jp'. Leave empty for worldwide searches based only on the location text."
          },
          "maxCrawledPlacesPerQuery": {
            "title": "Max places to visit per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on places the Actor inspects per keyword/location. Keep close to maxResults for cheaper tests. Across the whole run, queries multiplied by this value cannot exceed 1,000 planned core place inspections; optional missing-field retries are additional.",
            "default": 5
          },
          "skipClosedBusinesses": {
            "title": "Skip permanently closed businesses",
            "type": "boolean",
            "description": "If true, businesses marked as 'Permanently closed' are filtered out.",
            "default": true
          },
          "extractionMode": {
            "title": "Extraction mode",
            "enum": [
              "fast",
              "detailed"
            ],
            "type": "string",
            "description": "Fast mode saves search-feed fields without opening every business page. Detailed mode visits each place to collect phone, website, hours, category, and fuller address data when available.",
            "default": "fast"
          },
          "scrapeDetails": {
            "title": "Retry missing phone/address",
            "type": "boolean",
            "description": "Detailed mode only. Revisit a place once when phone or address is still missing and also attempt its Plus Code. Leave disabled unless missing-field recovery is important.",
            "default": false
          },
          "proxyConfig": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Use Apify Proxy, custom proxy URLs, or a direct connection. The default tries lower-cost datacenter proxy first and falls back to Residential only if the cheap tier is blocked. Explicit proxy choices are never overridden.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}