{
  "openapi": "3.0.1",
  "info": {
    "title": "Contact Details Scraper - Emails, Phones & Socials",
    "description": "Scrape emails, phone numbers and 16 kinds of social profiles (LinkedIn, Facebook, Instagram, X, YouTube, TikTok...) from any list of websites. Contact and imprint pages first, one row per website with company name, address and contact form. Pay only for websites with contacts.",
    "version": "0.1",
    "x-build-id": "1nLsisodo6qarDglc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/eiv~contact-details-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-eiv-contact-details-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/eiv~contact-details-scraper/runs": {
      "post": {
        "operationId": "runs-sync-eiv-contact-details-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/eiv~contact-details-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-eiv-contact-details-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",
        "properties": {
          "websites": {
            "title": "Websites",
            "type": "array",
            "description": "One website per line: a domain (example.com), a full URL (https://www.example.com/contact), or a line copied from a spreadsheet with a URL in it. A business email address works too: its domain is read. Duplicates are skipped.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Website list (URLs, file or Google Sheet)",
            "type": "array",
            "description": "The same websites in Apify's URL-list format: add URLs one by one, upload a text or CSV file, or link a Google Sheet shared as \"Anyone with the link\" (the first column that holds a website is read). Also takes the startUrls of other contact scrapers, so their inputs run unchanged.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxPagesPerWebsite": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many pages to read on each website, contact and imprint pages first. 10 finds what most sites publish; raise it for staff directories with many personal emails. The price is per website, whatever this is set to.",
            "default": 10
          },
          "maxDepth": {
            "title": "Max link depth",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "How many links away from the start page to go. 0 = the start page only, 1 = pages it links to, 2 (default) = one step further.",
            "default": 2
          },
          "sameDomain": {
            "title": "Stay on the website",
            "type": "boolean",
            "description": "Read only pages of the same website (subdomains included). Turn off to also follow links to other websites. Link-in-bio pages (Linktree, Beacons...) always lead to the sites they list.",
            "default": true
          },
          "stopWhenEmailFound": {
            "title": "Stop at the first email",
            "type": "boolean",
            "description": "Stop reading a website as soon as an email address is found on it. Fastest way to get one email per website for large lists; phones and profiles on later pages are then missed.",
            "default": false
          },
          "includeUrlPatterns": {
            "title": "Only pages matching",
            "type": "array",
            "description": "Optional. Read only pages whose address contains one of these words or matches one of these regular expressions, e.g. contact, team, /about|kontakt/. The start page is always read.",
            "items": {
              "type": "string"
            }
          },
          "excludeUrlPatterns": {
            "title": "Skip pages matching",
            "type": "array",
            "description": "Optional. Never read pages whose address contains one of these words or matches one of these regular expressions, e.g. blog, /products?/, careers.",
            "items": {
              "type": "string"
            }
          },
          "defaultCountry": {
            "title": "Country for local phone numbers",
            "pattern": "^([A-Za-z]{2})?$",
            "type": "string",
            "description": "Optional two-letter country code (US, GB, DE...) used to read numbers written without +country code. Leave empty to work it out per website from its address, domain ending, language and phone links."
          },
          "checkEmailDomains": {
            "title": "Check email domains",
            "type": "boolean",
            "description": "Look up each email domain's mail servers (MX records) and report mxFound per address. Free and fast; turn off only to skip DNS lookups.",
            "default": true
          },
          "onlyWebsitesWithContacts": {
            "title": "Only websites with contacts",
            "type": "boolean",
            "description": "Leave out websites where no email, phone or social profile was found. Those rows are never charged either way; this only keeps them out of the dataset.",
            "default": false
          },
          "maxItems": {
            "title": "Max websites",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Read at most this many websites from the list. Only websites with contacts are charged; your maximum charge per run in the run options also caps the cost.",
            "default": 100000
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default: pages load from the Actor's own address, and a refused or stalled page is retried through Apify datacenter proxy automatically. Turn on to send every page through datacenter proxy or your own proxy URLs. Residential proxy is not used.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxConcurrency": {
            "title": "Websites at a time",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "How many websites are read at the same time (each reads up to 3 pages at once). Above about 20 a run only gets busier, not faster.",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "Page timeout",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "How long to wait for one page. A page with no answer after 4 seconds is also requested from a second address, and the first answer wins.",
            "default": 15
          },
          "maxRetries": {
            "title": "Retries per page",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Extra attempts for a page that is refused, fails to connect or stalls, each from another address.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}