{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Contacts Scraper",
    "description": "Google Maps businesses with phone, full address, rating and website, plus the email their site publishes. Contacts charged only when found. Export CSV, Excel, JSON, XML.",
    "version": "0.1",
    "x-build-id": "6U1cYz0kT6knpj8AZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~google-maps-contacts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-google-maps-contacts-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/parseforge~google-maps-contacts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-google-maps-contacts-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/parseforge~google-maps-contacts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-google-maps-contacts-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": [
          "searchQueries"
        ],
        "properties": {
          "searchQueries": {
            "title": "🔎 What to find, and where",
            "type": "array",
            "description": "One line per search, exactly as you would type it into Google Maps: \"dentists in Austin, TX\", \"plumbers Manchester UK\", \"hotels Lisbon\". Each query returns up to about 250 places, so split a large city into neighborhoods or postcodes to go deeper.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "🧾 Maximum places",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many places. Free users get up to 10 results per run; paid users get up to 1,000,000."
          },
          "maxPlacesPerQuery": {
            "title": "📍 Places per search",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "How many places to take from each search before moving to the next one. Google's local results run out at around 250 per query.",
            "default": 60
          },
          "country": {
            "title": "🌍 Country",
            "type": "string",
            "description": "Two-letter country code for the search, such as us, gb, de, es, br. Match it to the area you are searching or the results drift to another market.",
            "default": "us"
          },
          "language": {
            "title": "🗣️ Language",
            "type": "string",
            "description": "Language code for the results, such as en, es, de, pt.",
            "default": "en"
          },
          "resolveWebsites": {
            "title": "🌐 Find each business website",
            "type": "boolean",
            "description": "On by default. Google Maps never publishes the website in its local results, so the Actor looks it up for every place. Turn it off to get name, category, rating, address and phone only, at the lowest price.",
            "default": true
          },
          "extractContacts": {
            "title": "📬 Read the website for email and phone",
            "type": "boolean",
            "description": "On by default. Opens the business's own site and takes the contact details it publishes today: emails, phones, contact form, socials. A site that publishes nothing is never charged for.",
            "default": true
          },
          "requireWebsite": {
            "title": "🔗 Only return places with a website",
            "type": "boolean",
            "description": "Off by default. Turn it on to drop places with no website at all; they are skipped and never charged.",
            "default": false
          },
          "requireContact": {
            "title": "✉️ Only return places with a contact",
            "type": "boolean",
            "description": "Off by default. Turn it on to keep only places whose website published an email or a phone. Skipped places are never charged.",
            "default": false
          },
          "maxPagesPerSite": {
            "title": "📄 Pages to read per website",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "The home page is read first. If it already carries an email, no further page is requested. Otherwise the Actor follows the site's own contact, about or imprint links, up to this many pages.",
            "default": 3
          },
          "concurrency": {
            "title": "⚡ Parallel businesses",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many businesses to enrich at the same time. Higher is faster until the proxy pool, not the sites, becomes the limit.",
            "default": 10
          },
          "websiteFallbackSerp": {
            "title": "💸 Use Google as website fallback",
            "type": "boolean",
            "description": "On by default. Website lookups run on a free engine first; the places it cannot resolve are looked up on Google, which costs a fraction of a cent each. Turn it off to never spend on the fallback, at the cost of a few missing websites.",
            "default": true
          },
          "directSiteRequests": {
            "title": "📶 Read business sites directly",
            "type": "boolean",
            "description": "On by default: business websites are read straight from the run, which is faster, and a site that fails is tried once more through the proxy. Search always uses the proxy. Turn it off to send every request through the proxy below.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "The proxy used for website lookups and for retrying business sites. The datacenter pool is the default and its transfer is not billed.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "BUYPROXIES94952"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}