{
  "openapi": "3.0.1",
  "info": {
    "title": "☎️ 📩 [Only $0.5/1K] Google Maps Scraper – Contacts",
    "description": "Scrape Google Maps at scale: find every business by keyword, category and location, or bulk-export reviews from any list of Maps URLs. Returns names, addresses, phones, websites, emails-ready domains, ratings, review counts, opening hours, photos, coordinates and full reviews with date filters.",
    "version": "4.1",
    "x-build-id": "ErM17onEyBairbTVy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lofomachines~google-maps-places-contact-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lofomachines-google-maps-places-contact-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/lofomachines~google-maps-places-contact-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lofomachines-google-maps-places-contact-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/lofomachines~google-maps-places-contact-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lofomachines-google-maps-places-contact-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What do you want to scrape?",
            "enum": [
              "search",
              "places"
            ],
            "type": "string",
            "description": "<strong>Search places</strong> — discover businesses by keyword/category + location.<br><strong>Place details from URLs</strong> — full business data for a list of Google Maps links.",
            "default": "search"
          },
          "includePlaceDetails": {
            "title": "📋 Full place details for every result",
            "type": "boolean",
            "description": "Works in every mode. Loads each business individually to add opening hours, attributes, popular times, plus codes and the full photo gallery. Slower, but far richer than the search listing alone.",
            "default": false
          },
          "scrapeEmails": {
            "title": "📧 Find emails and social profiles",
            "type": "boolean",
            "description": "Works in every mode. Google Maps never publishes email addresses, so this visits the website of each business and extracts emails plus Facebook, Instagram, LinkedIn, X, YouTube and TikTok profiles. Expect a hit rate around 40–60%: many sites publish only a contact form.",
            "default": false
          },
          "searchTerms": {
            "title": "Search keywords",
            "maxItems": 300,
            "uniqueItems": true,
            "type": "array",
            "description": "One keyword per line, e.g. <code>dentist</code>, <code>boutique hotel</code>, <code>coffee roastery</code>. Leave empty if you only use category presets.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "categories": {
            "title": "Category presets",
            "uniqueItems": true,
            "type": "array",
            "description": "Ready-made Google Maps business categories. Pick as many as you need — each one runs as its own search.",
            "items": {
              "type": "string",
              "enum": [
                "Hotels",
                "Motels",
                "Hostels",
                "Bed and breakfasts",
                "Vacation rentals",
                "Campgrounds",
                "Resorts",
                "Restaurants",
                "Pizza restaurants",
                "Italian restaurants",
                "Sushi restaurants",
                "Steakhouses",
                "Seafood restaurants",
                "Vegan restaurants",
                "Fast food restaurants",
                "Cafes",
                "Coffee shops",
                "Bakeries",
                "Ice cream shops",
                "Bars",
                "Pubs",
                "Nightclubs",
                "Breweries",
                "Wineries",
                "Food trucks",
                "Catering services",
                "Supermarkets",
                "Grocery stores",
                "Convenience stores",
                "Butcher shops",
                "Liquor stores",
                "Farmers markets",
                "Clothing stores",
                "Shoe stores",
                "Jewelry stores",
                "Furniture stores",
                "Electronics stores",
                "Hardware stores",
                "Bookstores",
                "Toy stores",
                "Pet stores",
                "Florists",
                "Sporting goods stores",
                "Bike shops",
                "Shopping malls",
                "Gyms",
                "Fitness centers",
                "Yoga studios",
                "Spas",
                "Beauty salons",
                "Hair salons",
                "Barber shops",
                "Nail salons",
                "Tattoo shops",
                "Massage therapists",
                "Doctors",
                "Dentists",
                "Pharmacies",
                "Hospitals",
                "Veterinarians",
                "Opticians",
                "Physiotherapists",
                "Chiropractors",
                "Psychologists",
                "Nursing homes",
                "Childcare centers",
                "Lawyers",
                "Accountants",
                "Insurance agencies",
                "Banks",
                "Real estate agencies",
                "Marketing agencies",
                "Web designers",
                "Photographers",
                "Event planners",
                "Wedding venues",
                "Coworking spaces",
                "Print shops",
                "Travel agencies",
                "Car dealers",
                "Car repair shops",
                "Car washes",
                "Gas stations",
                "Parking lots",
                "Taxi services",
                "Moving companies",
                "Storage facilities",
                "Plumbers",
                "Electricians",
                "Roofers",
                "Painters",
                "HVAC contractors",
                "Solar installers",
                "Landscapers",
                "Garden centers",
                "Cleaning services",
                "Laundromats",
                "Dry cleaners",
                "Locksmiths",
                "Pest control services",
                "Construction companies",
                "Architects",
                "Interior designers",
                "Schools",
                "Universities",
                "Kindergartens",
                "Driving schools",
                "Language schools",
                "Libraries",
                "Museums",
                "Tourist attractions",
                "Parks",
                "Zoos",
                "Aquariums",
                "Amusement parks",
                "Movie theaters",
                "Bowling alleys",
                "Casinos",
                "Golf courses",
                "Churches",
                "Post offices",
                "Government offices"
              ]
            },
            "default": []
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, address or postcode — e.g. <code>Milan, Italy</code>, <code>Brooklyn, New York</code>, <code>SW1A, London</code>. Leave empty to search the whole country."
          },
          "searchRadius": {
            "title": "Search area size",
            "enum": [
              "neighborhood",
              "city",
              "metro",
              "region",
              "country"
            ],
            "type": "string",
            "description": "How far around the location to look. Smaller areas return denser, more local results.",
            "default": "city"
          },
          "maxPlaces": {
            "title": "Max places per search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Upper limit of businesses collected for each keyword or category. Google itself only returns about 250 results per area, so past that the Actor automatically splits the search area into smaller ones and keeps going — which needs a <strong>Location</strong> to be set. Leave it low if you only want a sample: a smaller number is a faster, cheaper run.",
            "default": 50
          },
          "language": {
            "title": "Result language",
            "enum": [
              "ar",
              "bg",
              "ca",
              "cs",
              "da",
              "de",
              "el",
              "en",
              "es",
              "et",
              "fi",
              "fr",
              "he",
              "hi",
              "hr",
              "hu",
              "id",
              "is",
              "it",
              "ja",
              "ko",
              "lt",
              "lv",
              "ms",
              "nl",
              "no",
              "pl",
              "pt",
              "ro",
              "ru",
              "sk",
              "sl",
              "sr",
              "sv",
              "th",
              "tr",
              "uk",
              "vi",
              "zh-cn",
              "zh-tw"
            ],
            "type": "string",
            "description": "Language of names, categories, opening hours and review translations. Applies in every mode.",
            "default": "en"
          },
          "country": {
            "title": "Country",
            "enum": [
              "ae",
              "ar",
              "at",
              "au",
              "be",
              "bg",
              "br",
              "ca",
              "ch",
              "cl",
              "cn",
              "co",
              "cz",
              "de",
              "dk",
              "ee",
              "eg",
              "es",
              "fi",
              "fr",
              "gb",
              "gr",
              "hk",
              "hr",
              "hu",
              "id",
              "ie",
              "il",
              "in",
              "is",
              "it",
              "jp",
              "kr",
              "lt",
              "lu",
              "lv",
              "ma",
              "mx",
              "my",
              "ng",
              "nl",
              "no",
              "nz",
              "pe",
              "ph",
              "pl",
              "pt",
              "ro",
              "rs",
              "ru",
              "sa",
              "se",
              "sg",
              "si",
              "sk",
              "th",
              "tr",
              "tw",
              "ua",
              "us",
              "uy",
              "vn",
              "za"
            ],
            "type": "string",
            "description": "Country Google localizes results for, and the country the Actor browses from. Applies in every mode.",
            "default": "us"
          },
          "startUrls": {
            "title": "Place URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Google Maps place links, share links (<code>maps.app.goo.gl/…</code>), <code>?cid=</code> links or Place IDs — one per line.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}