{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Contacts with Role & Named Emails: Phones, Socials",
    "description": "From $2.00 per 1K websites. One row per website with every email tagged role (info@, sales@) or named (a person), E.164 phones, 11 social profiles, address and contact page, each with the page it was found on. Paste websites or domains. Dead or blocked sites are free.",
    "version": "0.1",
    "x-build-id": "PdYDMj4iytR5nanIu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/transparent_meteorite~website-contact-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-transparent_meteorite-website-contact-extractor",
        "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/transparent_meteorite~website-contact-extractor/runs": {
      "post": {
        "operationId": "runs-sync-transparent_meteorite-website-contact-extractor",
        "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/transparent_meteorite~website-contact-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-transparent_meteorite-website-contact-extractor",
        "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": {
          "startUrls": {
            "title": "Websites",
            "type": "array",
            "description": "Business websites to extract contacts from. Paste URLs or bare domains (acme.com). One row is returned per site; duplicates are merged. Upload a CSV/text file of URLs for bulk runs.",
            "default": [
              {
                "url": "https://www.shinola.com"
              },
              {
                "url": "https://buddyspizza.com"
              },
              {
                "url": "https://slowsbarbq.com"
              },
              {
                "url": "https://www.batchbrewingcompany.com"
              },
              {
                "url": "https://greektownchicago.org"
              }
            ],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "domains": {
            "title": "Domains (alternative bulk list)",
            "type": "array",
            "description": "Optional plain list of domains, one per line (e.g. acme.com). Merged with Websites above.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithContacts": {
            "title": "Only output sites with contacts",
            "type": "boolean",
            "description": "Skip rows that have no email, phone or social profile. Sites still count as crawled.",
            "default": false
          },
          "maxPagesPerSite": {
            "title": "Max pages per site",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Homepage plus the best contact, impressum, about, team and privacy pages found by link text and URL (in that priority). All pages of a site are included in the one per-site price.",
            "default": 5
          },
          "includeNamedEmails": {
            "title": "Include named (personal) emails",
            "type": "boolean",
            "description": "Every email is tagged 'role' (info@, sales@, support@...) or 'named' (jane.doe@...). Turn off to return role addresses only.",
            "default": true
          },
          "sameDomainOnly": {
            "title": "Crawl same domain only",
            "type": "boolean",
            "description": "Only follow links on the site's own domain and subdomains. Emails on other domains (e.g. a gmail address shown on the site) are still returned and flagged sameDomain=false.",
            "default": true
          },
          "maxDepth": {
            "title": "Crawl depth",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "How many link levels to follow from the start page. 1 (default) = the start page plus the best contact, about, team, impressum and privacy pages it links to. 2-5 also follow links found on those pages (best pages first, still capped by Max pages per site). 0 = start page only.",
            "default": 1
          },
          "maxUrlsPerDomain": {
            "title": "Max URLs per domain (hard cap)",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Optional hard cap on pages fetched per site, up to 50. When set it replaces 'Max pages per site'. Leave empty to use 'Max pages per site'. All pages are still included in the one per-site price."
          },
          "urlIncludePatterns": {
            "title": "URL include patterns",
            "type": "array",
            "description": "Optional. Only follow links whose URL matches one of these (after the start page). Plain text = contains, case-insensitive, * is a wildcard (e.g. /team, /locations/*); or a regex written as /regex/. Empty = the built-in contact, about, team, impressum, privacy detection.",
            "items": {
              "type": "string"
            }
          },
          "urlExcludePatterns": {
            "title": "URL exclude patterns",
            "type": "array",
            "description": "Optional. Never follow links whose URL matches one of these (e.g. /blog, /shop, /careers, or /\\.(pdf|zip)$/). Same syntax as the include patterns.",
            "items": {
              "type": "string"
            }
          },
          "monitorMode": {
            "title": "Only new or changed since last run",
            "type": "boolean",
            "description": "Remembers each site's emails, phones and socials between runs (in a named key-value store in your account). Only sites that are new or whose contacts changed are returned, with changeStatus and a changes object. Every crawled site is still billed once, returned or not.",
            "default": false
          },
          "monitorStateName": {
            "title": "Monitor state name",
            "type": "string",
            "description": "Name of the key-value store that holds the monitor state. Use different names to keep separate watch lists. Letters, digits and dashes only.",
            "default": "website-contact-extractor-monitor"
          },
          "defaultCountry": {
            "title": "Default phone country",
            "type": "string",
            "description": "ISO 2-letter country used to normalize local-format phone numbers to E.164 (+13135550142). Country-code domains (.de, .co.uk...) override it automatically.",
            "default": "US"
          },
          "maxSites": {
            "title": "Max sites",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap on sites crawled (and charged) this run.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Sites in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many sites to crawl at once. Pages inside one site are fetched one after another to stay polite.",
            "default": 8
          },
          "pageTimeoutSecs": {
            "title": "Page timeout (seconds)",
            "minimum": 3,
            "maximum": 60,
            "type": "integer",
            "description": "Timeout per page request.",
            "default": 15
          },
          "siteTimeoutSecs": {
            "title": "Site timeout (seconds)",
            "minimum": 10,
            "maximum": 300,
            "type": "integer",
            "description": "Total time budget per site; whatever was found so far is returned.",
            "default": 60
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}