{
  "openapi": "3.0.1",
  "info": {
    "title": "Contact Details Scraper & Google Maps Email Extractor",
    "description": "Contact details scraper and Google Maps email extractor. Enrich Google Maps Scraper results or any website list with emails, phones, socials and address: one row per place, each with its source page. Pay only for sites with contacts, $2/1k. Most accurate of 4 on a 6-site bench (10-09).",
    "version": "0.2",
    "x-build-id": "wBlwXcx6IG2QNcGL1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hiver~company-contact-details/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hiver-company-contact-details",
        "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/hiver~company-contact-details/runs": {
      "post": {
        "operationId": "runs-sync-hiver-company-contact-details",
        "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/hiver~company-contact-details/run-sync": {
      "post": {
        "operationId": "run-sync-hiver-company-contact-details",
        "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": {
          "domains": {
            "title": "Company websites",
            "type": "array",
            "description": "Company domains or website URLs, one per company (for example `stripe.com` or `https://www.example.com`). You get one result row per entry.",
            "items": {
              "type": "string"
            }
          },
          "maxPagesPerSite": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Home page plus the contact, about, imprint/legal and support pages linked from it. 5 is enough for most sites.",
            "default": 5
          },
          "maxConcurrency": {
            "title": "Companies in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many websites are processed at the same time (1-20). Each website is fetched sequentially with a pause between pages.",
            "default": 5
          },
          "requestDelayMs": {
            "title": "Pause between pages of one site (ms)",
            "minimum": 200,
            "maximum": 5000,
            "type": "integer",
            "description": "Polite delay between two requests to the same website.",
            "default": 600
          },
          "maxEmailsPerCompany": {
            "title": "Max emails per company",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Keep at most this many role emails per company.",
            "default": 10
          },
          "maxPhonesPerCompany": {
            "title": "Max phone numbers per company",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Keep at most this many phone numbers per company.",
            "default": 5
          },
          "defaultCountry": {
            "title": "Default phone country (ISO code)",
            "type": "string",
            "description": "Used to read phone numbers written without a country code, for example `US` or `DE`. Empty = guess from the website's domain ending, else US."
          },
          "allowOtherEmailDomains": {
            "title": "Keep emails on other domains",
            "type": "boolean",
            "description": "By default only role addresses on the company's own domain are kept (plus general/sales/press/support addresses listed on its contact or imprint page). Turn on to keep every role address found.",
            "default": false
          },
          "allowFreemailAddresses": {
            "title": "Keep Gmail/Outlook-style role addresses",
            "type": "boolean",
            "description": "Keep role freemail addresses found in ordinary page text or mailto links. Off by default. Role or branded business mailboxes explicitly published by the site's own Organization/ContactPoint structured data are retained even when this is off; personal addresses are still excluded.",
            "default": false
          },
          "retryBlockedWithProxy": {
            "title": "Retry HTTP 403 once with Apify datacenter Proxy",
            "type": "boolean",
            "description": "Direct requests first. On HTTP 403, make one retry through included Apify datacenter Proxy, keeping the same disclosed bot identity. A successful retry keeps this route for robots.txt and subpages. No IP rotation, no login/rate-limit retries, and no override of robots rules. Residential is not supported.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Optional explicit proxy for all requests. Otherwise direct requests are used with one automatic Apify datacenter retry on HTTP 403 (retryBlockedWithProxy). Residential groups are rejected before network access because they are not priced in this build. No login, CAPTCHA or robots bypass."
          },
          "datasetId": {
            "title": "Source dataset ID",
            "type": "string",
            "description": "An existing Google Maps or other dataset. One result per item in its original order. May be combined with domains."
          },
          "websiteField": {
            "title": "Website field in source dataset",
            "type": "string",
            "description": "Field containing the company website; nested dot paths such as contact.website are supported.",
            "default": "website"
          },
          "maxItems": {
            "title": "Maximum source dataset items",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap on dataset items read, including places without websites. Does not cap the separate domains list."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}