{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Contact Finder - Emails, Phones & Socials",
    "description": "Find emails, phones and social profiles for a list of company websites, plus each site's platform, Google Ads tag, Meta pixel and booking widget. One row per company. Pay only when contacts are found.",
    "version": "1.0",
    "x-build-id": "Yqx5apHbJZx1rgw1W"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/snappytools~website-contact-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-snappytools-website-contact-finder",
        "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/snappytools~website-contact-finder/runs": {
      "post": {
        "operationId": "runs-sync-snappytools-website-contact-finder",
        "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/snappytools~website-contact-finder/run-sync": {
      "post": {
        "operationId": "run-sync-snappytools-website-contact-finder",
        "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": {
          "websites": {
            "title": "Websites",
            "type": "array",
            "description": "Company websites, one per line. A domain is enough (acme.com.au), and full addresses work too (https://www.acme.com/about). If you give a page address, that page is checked as well as the homepage.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "websitesFileUrl": {
            "title": "Or a link to a list (CSV or TXT)",
            "type": "string",
            "description": "A public link to a CSV or text file with one website per row, for example a Google Sheet published as CSV (File → Share → Publish to web → CSV). If the CSV has a header row with a column called url, website or domain, every other column (company name, CRM ID and so on) is copied into the output row.",
            "default": ""
          },
          "datasetId": {
            "title": "Or a dataset from another Apify tool",
            "type": "string",
            "description": "Pick the results of another run, for example Google Maps Scraper. The website of each row is checked, and its name, phone, address and place ID are copied into the output row. Rows without a website come back as free 'failed' rows."
          },
          "datasetFields": {
            "title": "Extra columns to copy from the dataset",
            "type": "array",
            "description": "Field names from that dataset to copy into the output, as well as title, name, phone, address and place ID.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "websitesWithData": {
            "title": "Websites with your own columns (JSON)",
            "type": "array",
            "description": "For API and automation users. A list of objects like {\"url\": \"acme.com\", \"crmId\": \"123\", \"owner\": \"Sam\"}. Every field except url is copied into the output row, so you can match results back to your records.",
            "default": []
          },
          "maxPagesPerSite": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many pages to check on each website, including the homepage. The tool picks the pages most likely to have contact details (contact, about, team, imprint, locations) instead of following every link. 8 is enough for most small business sites.",
            "default": 8
          },
          "getEmails": {
            "title": "Emails",
            "type": "boolean",
            "description": "Find email addresses, including ones hidden by Cloudflare or written as \"info [at] acme [dot] com\".",
            "default": true
          },
          "getPhones": {
            "title": "Phone numbers",
            "type": "boolean",
            "description": "Find phone numbers and format them as +61391234567 and (03) 9123 4567.",
            "default": true
          },
          "getSocials": {
            "title": "Social profiles",
            "type": "boolean",
            "description": "Find LinkedIn, Facebook, Instagram, X, YouTube, TikTok, Pinterest, Bluesky, Threads and WhatsApp links. Share buttons and single posts are left out.",
            "default": true
          },
          "getSiteSignals": {
            "title": "Site platform and marketing tags",
            "type": "boolean",
            "description": "Also report the site's platform (WordPress, Shopify, Wix, Squarespace and others), online store, Google Analytics, Google Ads tag, Meta (Facebook) pixel, Google Tag Manager, and booking or chat widgets. Read from the same pages, so it adds no cost.",
            "default": true
          },
          "onlyCompanyDomainEmails": {
            "title": "Only company-domain emails",
            "type": "boolean",
            "description": "Keep only emails on the website's own domain (jane@acme.com for acme.com). Leaves out the web designer's address, gmail addresses and so on.",
            "default": false
          },
          "checkEmailDomains": {
            "title": "Check email domains can receive mail",
            "type": "boolean",
            "description": "Look up the mail (MX) records of each email's domain. Emails on domains that can't receive mail are flagged with domainAcceptsMail: false, and a website where those are the only contacts isn't charged. This checks the domain, not the individual mailbox.",
            "default": true
          },
          "extraPagePaths": {
            "title": "Extra pages to check",
            "type": "array",
            "description": "Pages to check on every website as well as the ones the tool picks, for example /locations or /support. They count towards \"Max pages per website\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "defaultCountry": {
            "title": "Country for phone numbers",
            "enum": [
              "auto",
              "AU",
              "NZ",
              "US",
              "CA",
              "GB",
              "IE",
              "DE",
              "AT",
              "CH",
              "FR",
              "BE",
              "NL",
              "ES",
              "PT",
              "IT",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "CZ",
              "IN",
              "SG",
              "MY",
              "PH",
              "HK",
              "JP",
              "ZA",
              "AE",
              "BR",
              "MX"
            ],
            "type": "string",
            "description": "Phone numbers written without a country code (like 03 9123 4567) need a country. \"Automatic\" uses the website's domain (.com.au means Australia), then the address or language on the site, then the United States. Pick a country if your list is mostly .com sites from one country.",
            "default": "auto"
          },
          "maxConcurrency": {
            "title": "Websites checked at the same time",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Pages on each website are always fetched one at a time, so no site gets hammered. 15 is a good default.",
            "default": 15
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave this off for most lists. Websites are visited directly, and Apify's datacenter proxy is used automatically for sites that block direct visits. Choose residential proxies only if many of your sites have strong bot protection (they cost more).",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}