{
  "name": "Skrap.ai for Clay: verify, then find",
  "version": "2026-11-11",
  "docs": "https://skrap.ai/docs/clay",
  "about": "HTTP API enrichment columns for a Clay table. Step 1 verifies the emails you already have. Steps 2 and 3 find a work email only where the email is missing or invalid. Paste each value into the matching box of a Clay HTTP API column; {{Column}} means: type / in Clay and pick that column.",
  "account": {
    "clayAccountType": "HTTP API (Headers)",
    "name": "Skrap",
    "headers": {
      "x-api-key": "<YOUR_SKRAP_API_KEY>",
      "Content-Type": "application/json",
      "x-skrap-client": "clay"
    }
  },
  "inputColumns": [
    "Email",
    "First Name",
    "Last Name",
    "Company Domain",
    "Company Name",
    "LinkedIn URL"
  ],
  "rateLimit": {
    "requests": 100,
    "perSeconds": 60,
    "note": "Stay under your plan's per-key limit (Professional 120 requests/minute, Enterprise 600)."
  },
  "columns": [
    {
      "step": 1,
      "name": "Skrap verify",
      "method": "POST",
      "endpoint": "https://api.skrap.ai/api/v2/verify-email",
      "body": {
        "email": "{{Email}}"
      },
      "onlyRunIf": "Email is not empty",
      "runIf": {
        "all": [
          {
            "column": "Email",
            "op": "not_empty"
          }
        ]
      },
      "fieldPaths": [
        "status",
        "retryable",
        "score",
        "checks.catchAll",
        "checks.disposable",
        "checks.roleAccount",
        "didYouMean"
      ],
      "credits": "1 credit when the status is valid or risky. Invalid and unknown are free."
    },
    {
      "step": 2,
      "name": "Skrap find (by domain)",
      "method": "POST",
      "endpoint": "https://api.skrap.ai/api/v2/find-email",
      "body": {
        "firstName": "{{First Name}}",
        "lastName": "{{Last Name}}",
        "domain": "{{Company Domain}}",
        "linkedinUrl": "{{LinkedIn URL}}"
      },
      "onlyRunIf": "Company Domain is not empty, and Email is empty or Skrap verify status is invalid",
      "runIf": {
        "all": [
          {
            "column": "Company Domain",
            "op": "not_empty"
          },
          {
            "any": [
              {
                "column": "Email",
                "op": "empty"
              },
              {
                "column": "Skrap verify.status",
                "op": "in",
                "values": [
                  "invalid"
                ]
              }
            ]
          }
        ]
      },
      "fieldPaths": [
        "emails.0.email",
        "emails.0.status",
        "status",
        "pendingRefinement",
        "requestId"
      ],
      "credits": "1 credit only when an email is found (valid or risky)."
    },
    {
      "step": 3,
      "name": "Skrap find (by company)",
      "method": "POST",
      "endpoint": "https://api.skrap.ai/api/v2/find-email",
      "body": {
        "firstName": "{{First Name}}",
        "lastName": "{{Last Name}}",
        "company": "{{Company Name}}",
        "linkedinUrl": "{{LinkedIn URL}}"
      },
      "onlyRunIf": "Company Domain is empty, Company Name is not empty, and Email is empty or Skrap verify status is invalid",
      "runIf": {
        "all": [
          {
            "column": "Company Domain",
            "op": "empty"
          },
          {
            "column": "Company Name",
            "op": "not_empty"
          },
          {
            "any": [
              {
                "column": "Email",
                "op": "empty"
              },
              {
                "column": "Skrap verify.status",
                "op": "in",
                "values": [
                  "invalid"
                ]
              }
            ]
          }
        ]
      },
      "fieldPaths": [
        "emails.0.email",
        "emails.0.status",
        "status",
        "pendingRefinement",
        "requestId",
        "needsCompanyConfirmation"
      ],
      "credits": "1 credit only when an email is found (valid or risky). A company name Skrap cannot match answers HTTP 400 and is free."
    }
  ],
  "bestEmail": {
    "name": "Best email",
    "clayColumnType": "Formula",
    "rule": "The original Email when Skrap verify is valid or risky; otherwise the email from Skrap find (by domain) or Skrap find (by company) when its status is valid or risky; otherwise empty."
  }
}
