{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Business & Website Contact Extractor",
    "description": "Extract verified public business contacts, company details, owned social profiles, technologies from Google Maps and hiring signals with resilient crawling.",
    "version": "0.6",
    "x-build-id": "jZ3jeGSGmxcpz4khv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/glossy_craftsman~business-contact-enricher/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-glossy_craftsman-business-contact-enricher",
        "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/glossy_craftsman~business-contact-enricher/runs": {
      "post": {
        "operationId": "runs-sync-glossy_craftsman-business-contact-enricher",
        "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/glossy_craftsman~business-contact-enricher/run-sync": {
      "post": {
        "operationId": "run-sync-glossy_craftsman-business-contact-enricher",
        "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",
        "properties": {
          "sourceMode": {
            "title": "What would you like to do?",
            "enum": [
              "websites",
              "dataset",
              "google_maps"
            ],
            "type": "string",
            "description": "Choose Maps to find businesses and contacts together, or enrich websites you already have.",
            "default": "google_maps"
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Choose one or more broad industries. Add a specific industry below for a precise niche; a broad preset does not imply a particular subsector.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "manufacturing",
                "construction",
                "software",
                "professional",
                "wholesale",
                "oem",
                "agriculture",
                "automotive",
                "aerospace",
                "marine",
                "energy",
                "mining",
                "chemicals",
                "metals",
                "plastics",
                "electronics",
                "automation",
                "packaging",
                "textiles",
                "furniture",
                "building_materials",
                "engineering",
                "testing",
                "environment",
                "logistics",
                "transport",
                "it_services",
                "telecom",
                "marketing",
                "finance",
                "legal_accounting",
                "real_estate",
                "healthcare",
                "pharma",
                "education",
                "staffing",
                "hospitality",
                "restaurants",
                "food_beverage",
                "beauty",
                "retail",
                "sports",
                "events",
                "security",
                "cleaning",
                "veterinary",
                "nonprofit"
              ],
              "enumTitles": [
                "Manufacturing & Industrial Equipment",
                "Construction, Installation & Specialty Contracting",
                "Software & SaaS",
                "Healthcare & Professional Services",
                "Wholesale & Distribution",
                "Food & Cosmetics OEM/ODM",
                "Agriculture, Farming & Agricultural Equipment",
                "Automotive, Vehicle Parts & Mobility",
                "Aerospace, Aviation & Aircraft Services",
                "Marine, Shipbuilding & Offshore Services",
                "Energy, Oil & Gas, Renewables & Utilities",
                "Mining, Quarrying & Mineral Processing",
                "Chemicals, Petrochemicals & Industrial Gases",
                "Metals, Steel, Foundries & Metalworking",
                "Plastics, Rubber & Composites",
                "Electronics, Semiconductors & Electrical Equipment",
                "Automation, Robotics & Control Systems",
                "Packaging, Printing, Paper & Labels",
                "Textiles, Apparel, Footwear & Accessories",
                "Furniture, Home Products & Interior Design",
                "Building Materials, Hardware & Plumbing Supplies",
                "Engineering, Architecture & Technical Consulting",
                "Testing, Inspection, Certification & Laboratories",
                "Water, Waste, Recycling & Environmental Services",
                "Logistics, Freight, Warehousing & Supply Chain",
                "Transportation, Fleet & Delivery Services",
                "IT Services, Cybersecurity & Managed Services",
                "Telecommunications, Networks & Data Centers",
                "Marketing, Advertising, Media & Creative Services",
                "Financial Services, Banking & Insurance",
                "Legal, Accounting, Tax & Business Consulting",
                "Real Estate, Property Management & Development",
                "Healthcare, Clinics, Hospitals & Dental Care",
                "Pharmaceuticals, Biotechnology & Medical Devices",
                "Education, Training, Schools & Research",
                "Recruitment, Staffing & HR Services",
                "Hotels, Accommodation, Tourism & Travel",
                "Restaurants, Cafes, Catering & Food Service",
                "Food, Beverages & Food Processing",
                "Beauty, Cosmetics, Salons & Personal Care",
                "Retail, E-commerce & Consumer Goods",
                "Sports, Fitness, Recreation & Wellness",
                "Events, Entertainment & Exhibition Services",
                "Security, Fire Protection & Safety Equipment",
                "Cleaning, Facilities Management & Maintenance",
                "Veterinary, Animal Health & Pet Services",
                "Nonprofits, Associations & Community Organizations"
              ]
            },
            "default": []
          },
          "specificIndustry": {
            "title": "Specific industry (optional)",
            "type": "string",
            "description": "Describe the exact business activity, such as semiconductor equipment manufacturer or dental clinic. This takes priority over broad presets."
          },
          "targetProducts": {
            "title": "Required products or services (optional)",
            "maxItems": 10,
            "type": "array",
            "description": "Every phrase must be supported by business evidence. Example: semiconductor equipment, payroll software. This narrows both search and validation.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "searchKeywords": {
            "title": "Custom Maps search terms",
            "maxItems": 10,
            "type": "array",
            "description": "Optional search-query override. Search text never counts as business evidence. Industry/keyword filters still apply.",
            "items": {
              "type": "string"
            }
          },
          "targetCountries": {
            "title": "Countries / territories",
            "type": "array",
            "description": "Select one or more countries. Type to narrow the list where supported by the Console.",
            "items": {
              "type": "string",
              "enum": [
                "AF",
                "AL",
                "DZ",
                "AS",
                "AD",
                "AO",
                "AI",
                "AQ",
                "AG",
                "AR",
                "AM",
                "AW",
                "AU",
                "AT",
                "AZ",
                "BS",
                "BH",
                "BD",
                "BB",
                "BY",
                "BE",
                "BZ",
                "BJ",
                "BM",
                "BT",
                "BO",
                "BQ",
                "BA",
                "BW",
                "BV",
                "BR",
                "IO",
                "BN",
                "BG",
                "BF",
                "BI",
                "CV",
                "KH",
                "CM",
                "CA",
                "KY",
                "CF",
                "TD",
                "CL",
                "CN",
                "CX",
                "CC",
                "CO",
                "KM",
                "CG",
                "CD",
                "CK",
                "CR",
                "HR",
                "CU",
                "CW",
                "CY",
                "CZ",
                "CI",
                "DK",
                "DJ",
                "DM",
                "DO",
                "EC",
                "EG",
                "SV",
                "GQ",
                "ER",
                "EE",
                "SZ",
                "ET",
                "FK",
                "FO",
                "FJ",
                "FI",
                "FR",
                "GF",
                "PF",
                "TF",
                "GA",
                "GM",
                "GE",
                "DE",
                "GH",
                "GI",
                "GR",
                "GL",
                "GD",
                "GP",
                "GU",
                "GT",
                "GG",
                "GN",
                "GW",
                "GY",
                "HT",
                "HM",
                "VA",
                "HN",
                "HK",
                "HU",
                "IS",
                "IN",
                "ID",
                "IR",
                "IQ",
                "IE",
                "IM",
                "IL",
                "IT",
                "JM",
                "JP",
                "JE",
                "JO",
                "KZ",
                "KE",
                "KI",
                "KW",
                "KG",
                "LA",
                "LV",
                "LB",
                "LS",
                "LR",
                "LY",
                "LI",
                "LT",
                "LU",
                "MO",
                "MG",
                "MW",
                "MY",
                "MV",
                "ML",
                "MT",
                "MH",
                "MQ",
                "MR",
                "MU",
                "YT",
                "MX",
                "FM",
                "MD",
                "MC",
                "MN",
                "ME",
                "MS",
                "MA",
                "MZ",
                "MM",
                "NA",
                "NR",
                "NP",
                "NL",
                "NC",
                "NZ",
                "NI",
                "NE",
                "NG",
                "NU",
                "NF",
                "KP",
                "MK",
                "MP",
                "NO",
                "OM",
                "PK",
                "PW",
                "PS",
                "PA",
                "PG",
                "PY",
                "PE",
                "PH",
                "PN",
                "PL",
                "PT",
                "PR",
                "QA",
                "RO",
                "RU",
                "RW",
                "RE",
                "BL",
                "SH",
                "KN",
                "LC",
                "MF",
                "PM",
                "VC",
                "WS",
                "SM",
                "ST",
                "SA",
                "SN",
                "RS",
                "SC",
                "SL",
                "SG",
                "SX",
                "SK",
                "SI",
                "SB",
                "SO",
                "ZA",
                "GS",
                "KR",
                "SS",
                "ES",
                "LK",
                "SD",
                "SR",
                "SJ",
                "SE",
                "CH",
                "SY",
                "TW",
                "TJ",
                "TZ",
                "TH",
                "TL",
                "TG",
                "TK",
                "TO",
                "TT",
                "TN",
                "TM",
                "TC",
                "TV",
                "TR",
                "UG",
                "UA",
                "AE",
                "GB",
                "US",
                "UM",
                "UY",
                "UZ",
                "VU",
                "VE",
                "VN",
                "VG",
                "VI",
                "WF",
                "EH",
                "YE",
                "ZM",
                "ZW",
                "AX"
              ],
              "enumTitles": [
                "Afghanistan",
                "Albania",
                "Algeria",
                "American Samoa",
                "Andorra",
                "Angola",
                "Anguilla",
                "Antarctica",
                "Antigua and Barbuda",
                "Argentina",
                "Armenia",
                "Aruba",
                "Australia",
                "Austria",
                "Azerbaijan",
                "Bahamas",
                "Bahrain",
                "Bangladesh",
                "Barbados",
                "Belarus",
                "Belgium",
                "Belize",
                "Benin",
                "Bermuda",
                "Bhutan",
                "Bolivia",
                "Bonaire, Sint Eustatius and Saba",
                "Bosnia and Herzegovina",
                "Botswana",
                "Bouvet Island",
                "Brazil",
                "British Indian Ocean Territory",
                "Brunei Darussalam",
                "Bulgaria",
                "Burkina Faso",
                "Burundi",
                "Cabo Verde",
                "Cambodia",
                "Cameroon",
                "Canada",
                "Cayman Islands",
                "Central African Republic",
                "Chad",
                "Chile",
                "China",
                "Christmas Island",
                "Cocos (Keeling) Islands",
                "Colombia",
                "Comoros",
                "Congo",
                "Congo, The Democratic Republic of the",
                "Cook Islands",
                "Costa Rica",
                "Croatia",
                "Cuba",
                "Curaçao",
                "Cyprus",
                "Czechia",
                "Côte d'Ivoire",
                "Denmark",
                "Djibouti",
                "Dominica",
                "Dominican Republic",
                "Ecuador",
                "Egypt",
                "El Salvador",
                "Equatorial Guinea",
                "Eritrea",
                "Estonia",
                "Eswatini",
                "Ethiopia",
                "Falkland Islands (Malvinas)",
                "Faroe Islands",
                "Fiji",
                "Finland",
                "France",
                "French Guiana",
                "French Polynesia",
                "French Southern Territories",
                "Gabon",
                "Gambia",
                "Georgia",
                "Germany",
                "Ghana",
                "Gibraltar",
                "Greece",
                "Greenland",
                "Grenada",
                "Guadeloupe",
                "Guam",
                "Guatemala",
                "Guernsey",
                "Guinea",
                "Guinea-Bissau",
                "Guyana",
                "Haiti",
                "Heard Island and McDonald Islands",
                "Holy See (Vatican City State)",
                "Honduras",
                "Hong Kong",
                "Hungary",
                "Iceland",
                "India",
                "Indonesia",
                "Iran",
                "Iraq",
                "Ireland",
                "Isle of Man",
                "Israel",
                "Italy",
                "Jamaica",
                "Japan",
                "Jersey",
                "Jordan",
                "Kazakhstan",
                "Kenya",
                "Kiribati",
                "Kuwait",
                "Kyrgyzstan",
                "Laos",
                "Latvia",
                "Lebanon",
                "Lesotho",
                "Liberia",
                "Libya",
                "Liechtenstein",
                "Lithuania",
                "Luxembourg",
                "Macao",
                "Madagascar",
                "Malawi",
                "Malaysia",
                "Maldives",
                "Mali",
                "Malta",
                "Marshall Islands",
                "Martinique",
                "Mauritania",
                "Mauritius",
                "Mayotte",
                "Mexico",
                "Micronesia, Federated States of",
                "Moldova",
                "Monaco",
                "Mongolia",
                "Montenegro",
                "Montserrat",
                "Morocco",
                "Mozambique",
                "Myanmar",
                "Namibia",
                "Nauru",
                "Nepal",
                "Netherlands",
                "New Caledonia",
                "New Zealand",
                "Nicaragua",
                "Niger",
                "Nigeria",
                "Niue",
                "Norfolk Island",
                "North Korea",
                "North Macedonia",
                "Northern Mariana Islands",
                "Norway",
                "Oman",
                "Pakistan",
                "Palau",
                "Palestine, State of",
                "Panama",
                "Papua New Guinea",
                "Paraguay",
                "Peru",
                "Philippines",
                "Pitcairn",
                "Poland",
                "Portugal",
                "Puerto Rico",
                "Qatar",
                "Romania",
                "Russian Federation",
                "Rwanda",
                "Réunion",
                "Saint Barthélemy",
                "Saint Helena, Ascension and Tristan da Cunha",
                "Saint Kitts and Nevis",
                "Saint Lucia",
                "Saint Martin (French part)",
                "Saint Pierre and Miquelon",
                "Saint Vincent and the Grenadines",
                "Samoa",
                "San Marino",
                "Sao Tome and Principe",
                "Saudi Arabia",
                "Senegal",
                "Serbia",
                "Seychelles",
                "Sierra Leone",
                "Singapore",
                "Sint Maarten (Dutch part)",
                "Slovakia",
                "Slovenia",
                "Solomon Islands",
                "Somalia",
                "South Africa",
                "South Georgia and the South Sandwich Islands",
                "South Korea",
                "South Sudan",
                "Spain",
                "Sri Lanka",
                "Sudan",
                "Suriname",
                "Svalbard and Jan Mayen",
                "Sweden",
                "Switzerland",
                "Syria",
                "Taiwan",
                "Tajikistan",
                "Tanzania",
                "Thailand",
                "Timor-Leste",
                "Togo",
                "Tokelau",
                "Tonga",
                "Trinidad and Tobago",
                "Tunisia",
                "Turkmenistan",
                "Turks and Caicos Islands",
                "Tuvalu",
                "Türkiye",
                "Uganda",
                "Ukraine",
                "United Arab Emirates",
                "United Kingdom",
                "United States",
                "United States Minor Outlying Islands",
                "Uruguay",
                "Uzbekistan",
                "Vanuatu",
                "Venezuela",
                "Vietnam",
                "Virgin Islands, British",
                "Virgin Islands, U.S.",
                "Wallis and Futuna",
                "Western Sahara",
                "Yemen",
                "Zambia",
                "Zimbabwe",
                "Åland Islands"
              ]
            },
            "default": []
          },
          "targetLocations": {
            "title": "Cities or regions (optional)",
            "maxItems": 10,
            "type": "array",
            "description": "Leave empty for country-level search coverage. With multiple countries, every city is combined with each selected country; use separate runs for unrelated city-country pairs.",
            "items": {
              "type": "string"
            }
          },
          "maxBusinesses": {
            "title": "Maximum businesses to find",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "An upper limit, not a guaranteed result count. Search coverage and time limits may produce fewer businesses.",
            "default": 100
          },
          "onlyBusinessesWithWebsites": {
            "title": "Only scan businesses with a website",
            "type": "boolean",
            "description": "Website recovery runs first. Unconfirmed businesses remain visible with their Maps contacts; this option skips their website scan.",
            "default": true
          },
          "requireEmail": {
            "title": "Require a qualified primary email",
            "type": "boolean",
            "description": "Require a qualified primary email",
            "default": false
          },
          "requirePhone": {
            "title": "Require a qualified primary phone",
            "type": "boolean",
            "description": "Require a qualified primary phone",
            "default": false
          },
          "previewOnly": {
            "title": "Preview search plan only",
            "type": "boolean",
            "description": "Save SEARCH_PLAN without Maps discovery or website scans. Review combinations and the maximum business count, then disable this option to collect data.",
            "default": false
          },
          "websites": {
            "title": "Website URLs",
            "type": "array",
            "description": "Website mode only. One domain or URL per item. Duplicate domains are scanned once; shared-domain branches are retained in metadata.",
            "items": {
              "type": "string"
            }
          },
          "sourceDatasetId": {
            "title": "Source dataset",
            "type": "string",
            "description": "Dataset mode only. Select a business or Google Maps dataset."
          },
          "datasetWebsiteField": {
            "title": "Dataset website field",
            "type": "string",
            "description": "Optional dotted path, e.g. company.website. Auto-detects common website fields otherwise."
          },
          "retryFailedOnly": {
            "title": "Retry failed website scans only",
            "type": "boolean",
            "description": "Dataset mode only. Retry timeout, DNS, TLS, HTTP, parser and internal errors. Successful rows, blocked sites and robots denials are not retried.",
            "default": false
          },
          "excludeDatasetId": {
            "title": "Exclude businesses from a previous dataset",
            "type": "string",
            "description": "Skip prior businesses using Place ID or the same canonical business identity."
          },
          "resumeStoreId": {
            "title": "Resume checkpoint store ID",
            "type": "string",
            "description": "Use the original rc8 run Key-value store ID and identical search settings. Results continue in the original Dataset; open its link in RUN_SUMMARY. Do not run two processes against the same checkpoint."
          },
          "businessTypes": {
            "title": "Business role (optional)",
            "type": "array",
            "description": "Accept any selected role. When products are specified, the role and all requested products must appear together in a business-description segment.",
            "items": {
              "type": "string",
              "enum": [
                "manufacturer",
                "distributor",
                "wholesaler",
                "contractor",
                "service_provider",
                "software_company",
                "healthcare_provider",
                "oem_odm"
              ],
              "enumTitles": [
                "Manufacturer",
                "Distributor",
                "Wholesaler",
                "Contractor",
                "Service provider",
                "Software company",
                "Healthcare provider",
                "OEM/ODM supplier"
              ]
            },
            "default": []
          },
          "targetAudience": {
            "title": "Customer audience",
            "enum": [
              "any",
              "b2b",
              "b2c"
            ],
            "type": "string",
            "description": "Only explicit evidence counts; a business may serve both audiences.",
            "default": "any"
          },
          "matchingStrictness": {
            "title": "Matching strictness",
            "enum": [
              "strict",
              "balanced",
              "broad"
            ],
            "type": "string",
            "description": "Strict prioritizes stronger evidence. Uncertain records stay visible as Needs review.",
            "default": "balanced"
          },
          "requireWebsiteEvidence": {
            "title": "Require website evidence for industry matches",
            "type": "boolean",
            "description": "Require first-party website activity evidence before marking the industry as matched. Maps-only evidence stays in review.",
            "default": true
          },
          "includeKeywords": {
            "title": "Required phrases",
            "type": "array",
            "description": "All entered phrases must occur in website/category evidence, e.g. API 610.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Excluded phrases",
            "type": "array",
            "description": "Any matching phrase excludes a business. Use specific phrases; a website can mention services it does not offer.",
            "items": {
              "type": "string"
            }
          },
          "onlyMatchingBusinesses": {
            "title": "Output matching businesses only",
            "type": "boolean",
            "description": "Off retains uncertain/excluded scan results for audit. Source-filter diagnostics always remain visible.",
            "default": false
          },
          "minimumRating": {
            "title": "Minimum source rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "0 disables the filter. Missing ratings fail a non-zero minimum.",
            "default": 0
          },
          "minimumReviewCount": {
            "title": "Minimum source review count",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "0 disables the filter. Missing counts fail a non-zero minimum.",
            "default": 0
          },
          "excludeClosed": {
            "title": "Exclude permanently closed businesses",
            "type": "boolean",
            "description": "Uses the source closure flag. Unknown is not treated as closed.",
            "default": true
          },
          "searchRadiusKm": {
            "title": "Coordinate radius (km, optional)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Coordinate radius (km, optional)",
            "default": 0
          },
          "centerLatitude": {
            "title": "Radius center latitude",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "Required when radius is greater than zero. Latitude is not inferred from city text."
          },
          "centerLongitude": {
            "title": "Radius center longitude",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "Required when radius is greater than zero. Missing business coordinates are marked for review."
          },
          "findEmails": {
            "title": "Business emails",
            "type": "boolean",
            "description": "Publicly displayed emails only; no guessed addresses or SMTP probes.",
            "default": true
          },
          "findPhones": {
            "title": "Phone numbers",
            "type": "boolean",
            "description": "Classify explicit main/sales/support/mobile labels; otherwise Unknown.",
            "default": true
          },
          "findFaxes": {
            "title": "Fax numbers",
            "type": "boolean",
            "description": "Keep fax numbers separate from telephone numbers.",
            "default": true
          },
          "findContactForms": {
            "title": "Contact form pages",
            "type": "boolean",
            "description": "Detect message/email forms; never submit them.",
            "default": true
          },
          "findSocials": {
            "title": "Social profiles",
            "type": "boolean",
            "description": "Extract profiles linked by the website.",
            "default": true
          },
          "findContactPages": {
            "title": "Contact page links",
            "type": "boolean",
            "description": "Return discovered contact/about links. Not all discovered links were necessarily visited.",
            "default": true
          },
          "findAddresses": {
            "title": "Company addresses",
            "type": "boolean",
            "description": "Structured-data and address-element values with sources. Not postal validation.",
            "default": true
          },
          "emailTypes": {
            "title": "Email categories",
            "type": "array",
            "description": "Empty = all. Compliance, recruitment and webmaster/privacy addresses remain visible but are not primary sales contacts or sufficient for contact billing. Email purpose is rule-based; employee identity and branch ownership are not verified.",
            "items": {
              "type": "string",
              "enum": [
                "general",
                "sales",
                "support",
                "person_or_other",
                "other",
                "compliance",
                "recruitment",
                "low_value",
                "purchasing"
              ],
              "enumTitles": [
                "General & administration",
                "Sales & partnerships",
                "Support & service",
                "Person or unclassified",
                "Other",
                "Compliance & regulatory documents",
                "Recruitment & careers",
                "Webmaster, privacy & non-sales",
                "Purchasing / procurement"
              ]
            },
            "default": []
          },
          "validationLevel": {
            "title": "Email validation depth",
            "enum": [
              "fast",
              "standard",
              "thorough"
            ],
            "type": "string",
            "description": "Fast skips DNS. Standard checks syntax/MX. Thorough increases automatic page budget to at least 15 (Fast remains capped at 2). No mailbox existence checks.",
            "default": "standard"
          },
          "saveEvidence": {
            "title": "Include industry evidence",
            "type": "boolean",
            "description": "Keep short classification excerpts. Contact sources remain available.",
            "default": true
          },
          "recoverMissingWebsites": {
            "title": "Look for missing official websites",
            "type": "boolean",
            "description": "Use a bounded public web search, then check company name plus phone or street address. Ambiguous candidates are kept unconfirmed. Adds up to the recovery time budget.",
            "default": true
          },
          "websiteRecoveryTimeoutSecs": {
            "title": "Website recovery time budget",
            "minimum": 10,
            "maximum": 300,
            "type": "integer",
            "description": "Maximum total time in seconds for finding and verifying missing business websites. This budget is separate from Google Maps discovery and website enrichment.",
            "default": 60
          },
          "websiteRecoveryMaxBusinesses": {
            "title": "Maximum businesses for website recovery",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of businesses without a website to attempt recovering per run. Unresolved businesses keep their available Google Maps contact details.",
            "default": 10
          },
          "crawlDepth": {
            "title": "Website scan depth",
            "enum": [
              "fast",
              "balanced",
              "deep"
            ],
            "type": "string",
            "description": "Fast: max 2 HTTP pages. Balanced: 10. Deep: 30. Browser fallback limited to 3 simultaneous browsers.",
            "default": "balanced"
          },
          "maxTotalChargeUsd": {
            "title": "Maximum result event charges (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "number",
            "description": "0 uses the platform run limit. Applies to result events only; compute, proxy and platform fees are separate. The lower of this budget and the platform limit is enforced.",
            "default": 0
          },
          "domainTimeoutSecs": {
            "title": "Maximum seconds per website",
            "minimum": 10,
            "maximum": 1800,
            "type": "integer",
            "description": "Maximum seconds per website",
            "default": 180
          },
          "stallTimeoutSecs": {
            "title": "Stop after no website finishes (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Stop after no website finishes (seconds)",
            "default": 240
          },
          "browserConcurrency": {
            "title": "Concurrent website browser fallbacks",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Concurrent website browser fallbacks",
            "default": 3
          },
          "discoveryTimeoutSecs": {
            "title": "Total Maps discovery time limit (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Total search/detail time budget for the built-in crawler, not per country. Already-read businesses are retained on timeout. Enrichment time is separate.",
            "default": 300
          },
          "mapsSearchCoverage": {
            "title": "Country search coverage",
            "enum": [
              "regional",
              "exact"
            ],
            "type": "string",
            "description": "Regional mode adds top-level ISO subdivisions for selected countries when no specific city is entered. This increases coverage, not nationwide completeness. Search and time limits still apply. Existing saved inputs retain their limits.",
            "default": "regional"
          },
          "mapsMaxQueries": {
            "title": "Maximum Maps searches",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Limits industry × location query combinations. Unstarted searches appear in the discovery summary.",
            "default": 20
          },
          "maxPagesPerWebsite": {
            "title": "Maximum pages per website",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "0 uses preset. Fast always caps at 2. Counts attempted pages, including failed requests.",
            "default": 0
          },
          "concurrency": {
            "title": "Concurrent website scans",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "0 = automatic: Fast 100, other modes 20. Higher values increase memory and blocking risk.",
            "default": 0
          },
          "requestTimeoutSecs": {
            "title": "Page loading timeout (seconds)",
            "minimum": 3,
            "maximum": 120,
            "type": "integer",
            "description": "Per HTTP request. Retries extend total website time.",
            "default": 15
          },
          "maxRetries": {
            "title": "Retries per failed page",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Retries timeouts, connection errors, 429 and selected 5xx responses with short backoff.",
            "default": 1
          },
          "maxResponseSizeMB": {
            "title": "Maximum HTML response size (MB)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Decoded response limit per page. Oversized pages stop safely with RESPONSE_TOO_LARGE; TLS verification is never disabled. Larger limits increase memory usage.",
            "default": 5
          },
          "mapsPageTimeoutSecs": {
            "title": "Maps page loading timeout (seconds)",
            "minimum": 5,
            "maximum": 90,
            "type": "integer",
            "description": "Maximum wait for one Maps page/list to load.",
            "default": 25
          },
          "mapsMaxScrolls": {
            "title": "Maximum scroll rounds per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Stops on list end, repeated no-new-results, or this scroll limit.",
            "default": 15
          },
          "mapsDetailConcurrency": {
            "title": "Concurrent Maps detail pages",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Uses one browser with a small bounded number of detail pages. Does not rotate identities or bypass blocks.",
            "default": 2
          },
          "mapsScrollWaitMs": {
            "title": "Wait after Maps scrolling (milliseconds)",
            "minimum": 300,
            "maximum": 5000,
            "type": "integer",
            "description": "Allows result cards to load after normal list scrolling.",
            "default": 1000
          },
          "mapsDetailWaitMs": {
            "title": "Wait for Maps detail buttons (milliseconds)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Allows website/address buttons to render after the business heading.",
            "default": 1000
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Honor fetched rules. Unavailable robots.txt does not block the entire website.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Used for HTTP and browser fallback. Proxy fees are separate.",
            "default": {
              "useApifyProxy": false
            }
          },
          "includeExternalContactLinks": {
            "title": "Follow external contact links",
            "type": "boolean",
            "description": "Follow explicitly linked contact pages on other public domains within the page budget. Contacts may belong to a third party; inspect their source URLs.",
            "default": false
          },
          "customUserAgent": {
            "title": "Custom User-Agent",
            "type": "string",
            "description": "Optional HTTP User-Agent. Does not change the robots.txt agent identity."
          },
          "webhookUrl": {
            "title": "Completion summary webhook",
            "type": "string",
            "description": "Optional public HTTPS endpoint. Counters only, no contact lists. One attempt; use Apify integrations for managed retries."
          },
          "industry": {
            "title": "Legacy single industry",
            "type": "string",
            "description": "Older saved tasks/API compatibility. industries takes priority when populated."
          },
          "processingMode": {
            "title": "Legacy processing mode",
            "type": "string",
            "description": "Legacy API mode. Use Website scan depth above for new runs.",
            "default": "standard"
          },
          "validateEmails": {
            "title": "Legacy email domain validation",
            "type": "boolean",
            "description": "RC5 compatibility. false disables MX checks.",
            "default": true
          },
          "collectionTimeoutSecs": {
            "title": "Collection time budget (seconds)",
            "minimum": 0,
            "maximum": 86400,
            "type": "integer",
            "description": "Stop starting new website scans after this budget and save completed results. Final checks and Excel export can add time. 0 disables the collection budget. Small starter runs use 210 seconds; this is not a hard total-runtime guarantee.",
            "default": 0
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}