> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Deepline Native Domain Health Check: Inputs, Cost & CLI

> Checking whether a company domain resolves, follows redirects to a canonical domain, returns 404/410, or is merely blocked by Cloudflare/Akamai before running

## Run in Enrichment Spreadsheet

<Info>
  Use this function as a column step in `deepline enrich`.
</Info>

```bash theme={null}
deepline enrich --input leads.csv --output leads.enriched.csv --with 'result=deepline_native_domain_health_check:{"domain":"{{domain}}"}' --json
```

<Tip>
  Map payload values to spreadsheet columns with `{{column_name}}` placeholders.
</Tip>

## Input Schema

| Name                   | Type      | Required | Default | Description                                                                                                                                           |
| ---------------------- | --------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payload.domain`       | `string`  | Yes      |         | Domain or URL to probe. The action normalizes to a root hostname, tries HTTPS then HTTP, follows redirects, and refuses localhost/private IP targets. |
| `payload.timeout_ms`   | `integer` | No       | `5000`  | Per-request timeout in milliseconds.                                                                                                                  |
| `payload.fallback_get` | `boolean` | No       | `false` | When true, retry with GET only when HEAD is explicitly unsupported (405/501). The probe never retries GET after Cloudflare/protection blocks.         |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Check whether a domain resolves to a live website, follows redirects to a canonical domain, or returns a not-found/unreachable status. Use before company contact search to catch stale domains such as old .io domains that moved to .com.",
    "properties": {
      "domain": {
        "type": "string",
        "description": "Domain or URL to probe. The action normalizes to a root hostname, tries HTTPS then HTTP, follows redirects, and refuses localhost/private IP targets.",
        "minLength": 1
      },
      "timeout_ms": {
        "type": "integer",
        "description": "Per-request timeout in milliseconds.",
        "default": 5000,
        "minimum": 1000,
        "maximum": 10000
      },
      "fallback_get": {
        "type": "boolean",
        "description": "When true, retry with GET only when HEAD is explicitly unsupported (405/501). The probe never retries GET after Cloudflare/protection blocks.",
        "default": false
      }
    },
    "required": [
      "domain"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output Schema

| Name                         | Type                                                                                                 | Required | Default | Description                                                                                                                                         |
| ---------------------------- | ---------------------------------------------------------------------------------------------------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `result.input_domain`        | `string`                                                                                             | Yes      |         |                                                                                                                                                     |
| `result.input_url`           | `string`                                                                                             | Yes      |         |                                                                                                                                                     |
| `result.status`              | `"live" \| "redirected" \| "not_found" \| "blocked" \| "server_error" \| "unreachable" \| "invalid"` | Yes      |         |                                                                                                                                                     |
| `result.http_status`         | `integer`                                                                                            | Yes      |         |                                                                                                                                                     |
| `result.final_url`           | `string`                                                                                             | Yes      |         |                                                                                                                                                     |
| `result.final_domain`        | `string`                                                                                             | Yes      |         |                                                                                                                                                     |
| `result.redirected`          | `boolean`                                                                                            | Yes      |         |                                                                                                                                                     |
| `result.canonical_url`       | `string`                                                                                             | Yes      |         |                                                                                                                                                     |
| `result.page_title`          | `string`                                                                                             | Yes      |         |                                                                                                                                                     |
| `result.response_server`     | `string`                                                                                             | Yes      |         |                                                                                                                                                     |
| `result.protection_detected` | `boolean`                                                                                            | Yes      |         | True when response headers indicate Cloudflare, Akamai, or similar edge protection. Treat blocked protected domains as reachable, not as not-found. |
| `result.attempts`            | `array`                                                                                              | Yes      |         |                                                                                                                                                     |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Domain health and redirect resolution result. `final_domain` is the value to prefer as `canonical_domain` when status is live or redirected.",
    "properties": {
      "input_domain": {
        "type": "string"
      },
      "input_url": {
        "type": [
          "string",
          "null"
        ]
      },
      "status": {
        "type": "string",
        "enum": [
          "live",
          "redirected",
          "not_found",
          "blocked",
          "server_error",
          "unreachable",
          "invalid"
        ]
      },
      "http_status": {
        "type": [
          "integer",
          "null"
        ]
      },
      "final_url": {
        "type": [
          "string",
          "null"
        ]
      },
      "final_domain": {
        "type": [
          "string",
          "null"
        ]
      },
      "redirected": {
        "type": "boolean"
      },
      "canonical_url": {
        "type": [
          "string",
          "null"
        ]
      },
      "page_title": {
        "type": [
          "string",
          "null"
        ]
      },
      "response_server": {
        "type": [
          "string",
          "null"
        ]
      },
      "protection_detected": {
        "type": "boolean",
        "description": "True when response headers indicate Cloudflare, Akamai, or similar edge protection. Treat blocked protected domains as reachable, not as not-found."
      },
      "attempts": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "HEAD",
                "GET"
              ]
            },
            "url": {
              "type": "string"
            },
            "status": {
              "type": [
                "integer",
                "null"
              ]
            },
            "location": {
              "type": [
                "string",
                "null"
              ]
            },
            "error": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "method",
            "url",
            "status",
            "location",
            "error"
          ],
          "additionalProperties": false
        }
      }
    },
    "required": [
      "input_domain",
      "input_url",
      "status",
      "http_status",
      "final_url",
      "final_domain",
      "redirected",
      "canonical_url",
      "page_title",
      "response_server",
      "protection_detected",
      "attempts"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Advanced: Direct CLI

<Info>
  Use direct execution for single payload debugging.
</Info>

```bash theme={null}
deepline tools execute deepline_native_domain_health_check --payload '{
  "domain": "string"
}' --json
```

### CLI flags

| Flag                        | Description                                         |
| --------------------------- | --------------------------------------------------- |
| `--json`                    | Print machine-readable output.                      |
| `--wait`                    | Wait for terminal provider status when supported.   |
| `--debug`                   | Enable wait mode with additional status/log output. |
| `--wait-timeout SECONDS`    | Max seconds to wait in wait mode.                   |
| `--poll-interval SECONDS`   | Polling interval in seconds during wait mode.       |
| `--timeout SECONDS`         | Request timeout in seconds.                         |
| `--connect-timeout SECONDS` | Connection timeout in seconds.                      |

## Cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.
* Billing mode: `no_bill`.
