{
  "openapi": "3.0.1",
  "info": {
    "title": "Wedding Vendor Lead Scraper — Verified Emails",
    "description": "Scrape wedding venue, photographer & planner contacts from Google Maps with verified emails & phones. Real-time data from vendor websites. Export to HubSpot, Salesforce, or CSV. Built for wedding industry marketing.",
    "version": "1.0",
    "x-build-id": "9WdKOBcqN4wiV2jbn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/samstorm~wedding-vendor-lead-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-samstorm-wedding-vendor-lead-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/samstorm~wedding-vendor-lead-scraper/runs": {
      "post": {
        "operationId": "runs-sync-samstorm-wedding-vendor-lead-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/samstorm~wedding-vendor-lead-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-samstorm-wedding-vendor-lead-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": [
          "businessType",
          "location"
        ],
        "properties": {
          "businessType": {
            "title": "Business Type",
            "enum": [
              "Wedding Venue",
              "Wedding Photographer",
              "Wedding Planner",
              "Florist",
              "DJ/Band",
              "Caterer",
              "Bridal Shop",
              "Custom"
            ],
            "type": "string",
            "description": "Select the wedding vendor category to search on Google Maps. The actor combines this with your location to build the search — e.g., 'Wedding Photographer' finds photography studios in your target city, 'Bridal Shop' finds dress boutiques and bridal retailers, 'Florist' finds wedding floral designers. Choose 'Custom' to enter your own search query.",
            "default": "Wedding Venue"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "The city, state, or region to search. Use 'City, ST' format for best results (e.g., 'Nashville, TN' or 'Scottsdale, AZ'). Also accepts ZIP codes, metro areas, or broader regions like 'Hudson Valley, NY'. Run the actor multiple times with different locations to build a larger wedding vendor contact database."
          },
          "searchQuery": {
            "title": "Custom Search Query",
            "type": "string",
            "description": "A custom Google Maps search query, used only when Business Type is set to 'Custom'. For all other types, the query is built automatically from Business Type + Location. Write it the same way you'd type it into Google Maps — e.g., 'luxury outdoor wedding venues near Charleston, SC' or 'wedding photo booth rentals Austin TX' or 'bridal hair and makeup artists Nashville'."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "The maximum number of leads to collect and return. The prefill is set to 3 for a quick test run — increase to 50–200 for production use. Google Maps typically returns up to 120 results per search query; use a smaller number first to verify data quality before scaling up.",
            "default": 50
          },
          "enrichEmails": {
            "title": "Find Email Addresses",
            "type": "boolean",
            "description": "When enabled, the actor visits each vendor's website and scans contact pages, booking forms, footers, and about pages to extract email addresses. This is the core feature for building a wedding vendor email list — disable only if you need phone numbers and addresses without email enrichment.",
            "default": true
          },
          "verifyEmails": {
            "title": "Verify Email Deliverability",
            "type": "boolean",
            "description": "When enabled, each extracted email address is checked using DNS (MX record lookup) and an SMTP handshake to confirm the mailbox exists and can receive mail. This adds roughly 1 extra minute to the run but significantly reduces bounce rates. Only applies when 'Find Email Addresses' is also enabled.",
            "default": true
          },
          "enrichSocials": {
            "title": "Find Social Media Links",
            "type": "boolean",
            "description": "When enabled, the actor scans each vendor website for Instagram, Facebook, Pinterest, and LinkedIn profiles. Instagram is especially valuable for the wedding industry — photographers, florists, and planners often maintain their strongest portfolio and follower presence there, giving you an additional outreach channel beyond email.",
            "default": true
          },
          "outputFormat": {
            "title": "Output Format",
            "enum": [
              "full",
              "hubspot",
              "salesforce"
            ],
            "type": "string",
            "description": "Controls the output data structure. 'Full' returns all fields including ratings, hours, social profiles, and Google Maps URL — best for building a master wedding vendor database. 'HubSpot Import' maps columns to HubSpot Contact and Company properties for direct CSV upload. 'Salesforce Import' aligns fields to the Salesforce Lead object for the Data Import Wizard.",
            "default": "full"
          },
          "proxyUrl": {
            "title": "Custom Proxy URL (optional)",
            "type": "string",
            "description": "Optional HTTP proxy URL for using third-party residential proxies instead of Apify's built-in proxies. Format: http://username:password@host:port. Compatible with IPRoyal, Smartproxy, Bright Data, and other rotating proxy services. Leave empty to use Apify's default residential proxies."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}