Monitoring & Automation · DomScan product

Workflow recipes API

Pre-built API workflows for common domain intelligence tasks. Each recipe combines multiple endpoints to accomplish a specific goal.

What you get

Pre-built API workflows for common domain intelligence tasks. Each recipe combines multiple endpoints to accomplish a specific goal.

SynchronousRESTMCPSDKInteractive tool

Choose this product when

Who it is for

Use automation when the same decision must run across time, across a list, or across several products.

Choose this product when

Choose this for a documented multi-product path such as due diligence, brand launch, threat assessment, portfolio audit, or infrastructure discovery.

What you get

Pre-built API workflows for common domain intelligence tasks. Each recipe combines multiple endpoints to accomplish a specific goal.

Endpoints

Review the supported operations, inputs, outputs, execution modes, and response limits before integrating.

GET /v1/recipes/due-diligence View API reference
GET /v1/recipes/brand-launch View API reference
GET /v1/recipes/threat-assessment View API reference
GET /v1/recipes/domain-finder View API reference
GET /v1/recipes/competitor-intel View API reference
GET /v1/recipes/portfolio-audit View API reference
POST /v1/recipes/portfolio-audit View API reference
GET /v1/recipes/email-deliverability View API reference
GET /v1/recipes/dns-migration View API reference
GET /v1/recipes/infrastructure-discovery View API reference
GET /v1/recipes/defensive-registration View API reference
GET /v1/recipes/phishing-investigation View API reference

Credits and authentication

7-25 Authentication required. Check the operation reference for the exact cost and any per-item pricing.

Example operation

Use documented operations to collect, assess, enrich, verify, compare, protect, or monitor public evidence.

GET /v1/recipes/due-diligence Credits: 12

Query parameters

Parameter Type required
domain string required
include_competitors boolean
Default false
optional
dry_run string
Allowed values true
optional

Response fields

Field Type
success boolean
data object
data.domain string
data.summary object
data.summary.recommendation string
data.summary.confidence_score number
data.summary.key_findings[] string[]
data.summary.risk_factors[] string[]
data.registration object
data.registration.registrar string
data.registration.created_date string
data.registration.expiry_date string
data.registration.updated_date string
data.registration.age_years number
data.registration.days_until_expiry number
data.registration.status[] string[]
data.registration.nameservers[] string[]
data.registration.dnssec boolean
data.registration.privacy_protected boolean
data.valuation object
data.valuation.estimate_low number
data.valuation.estimate_mid number
data.valuation.estimate_high number
data.valuation.currency string
data.valuation.confidence number
data.valuation.factors object
data.valuation.factors.length number
data.valuation.factors.tld string
data.valuation.factors.brandability number
data.health object
data.health.score number
data.health.grade string
data.health.dns_configured boolean
data.health.ssl_valid boolean
data.health.email_deliverable boolean
data.health.warnings[] string[]
data.security object
data.security.reputation_score number
data.security.reputation_grade string
data.security.risk_level string
data.security.blacklisted boolean
data.security.blacklist_details[] array
data.brand_protection object
data.brand_protection.typo_score number
data.brand_protection.typo_grade string
data.brand_protection.variants_registered number
data.brand_protection.high_risk_variants number
data.pricing object
data.pricing.best_price number
data.pricing.best_registrar string
data.pricing.all_prices[] object[]
data.pricing.all_prices[] object
data.pricing.all_prices[].registrar string
data.pricing.all_prices[].price number
data.pricing.all_prices[].currency string
data.action_items[] object[]
data.action_items[] object
data.action_items[].priority string
data.action_items[].category string
data.action_items[].action string
data.action_items[].details string
data.action_items[].estimated_impact string
meta object
meta.recipe_name string
meta.credits_used number
meta.credits_saved number
meta.duration_ms number
meta.components_called[] string[]
meta.cached_components[] string[]
meta.timestamp string
errors[] array

Example request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/recipes/due-diligence?domain=example.com&include_competitors=false"
const response = await fetch("https://domscan.net/v1/recipes/due-diligence?domain=example.com&include_competitors=false", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
import os
import requests

response = requests.get(
    "https://domscan.net/v1/recipes/due-diligence?domain=example.com&include_competitors=false",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/recipes/due-diligence?domain=example.com&include_competitors=false", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status, string(data))
}
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/recipes/due-diligence?domain=example.com&include_competitors=false")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))

Example response

{
  "success": true,
  "data": {
    "domain": "example.com",
    "summary": {
      "recommendation": "buy",
      "confidence_score": 88,
      "key_findings": [
        "Established registration history",
        "Clean reputation"
      ],
      "risk_factors": [
        "DNSSEC not enabled"
      ]
    },
    "registration": {
      "registrar": "Example Registrar",
      "created_date": "2019-03-11",
      "expiry_date": "2027-03-11",
      "updated_date": "2026-03-10",
      "age_years": 7,
      "days_until_expiry": 330,
      "status": [
        "active",
        "clientTransferProhibited"
      ],
      "nameservers": [
        "ns1.example.net",
        "ns2.example.net"
      ],
      "dnssec": false,
      "privacy_protected": true
    },
    "valuation": {
      "estimate_low": 1800,
      "estimate_mid": 3500,
      "estimate_high": 5200,
      "currency": "USD",
      "confidence": 0.72,
      "factors": {
        "length": 11,
        "tld": "com",
        "brandability": 0.81
      }
    },
    "health": {
      "score": 84,
      "grade": "A",
      "dns_configured": true,
      "ssl_valid": true,
      "email_deliverable": true,
      "warnings": [
        "DNSSEC not enabled"
      ]
    },
    "security": {
      "reputation_score": 91,
      "reputation_grade": "A",
      "risk_level": "low",
      "blacklisted": false,
      "blacklist_details": []
    },
    "brand_protection": {
      "typo_score": 78,
      "typo_grade": "B",
      "variants_registered": 2,
      "high_risk_variants": 1
    },
    "pricing": {
      "best_price": 9.99,
      "best_registrar": "cloudflare",
      "all_prices": [
        {
          "registrar": "cloudflare",
          "price": 9.99,
          "currency": "USD"
        }
      ]
    },
    "action_items": [
      {
        "priority": "medium",
        "category": "security",
        "action": "Enable DNSSEC",
        "details": "Improve zone integrity for resolvers.",
        "estimated_impact": "Lower spoofing risk"
      }
    ]
  },
  "meta": {
    "recipe_name": "domain-due-diligence",
    "credits_used": 12,
    "credits_saved": 6,
    "duration_ms": 742,
    "components_called": [
      "availability",
      "whois",
      "valuation",
      "health",
      "reputation",
      "typosquatting",
      "pricing"
    ],
    "cached_components": [
      "pricing"
    ],
    "timestamp": "2026-04-15T09:30:00Z"
  },
  "errors": []
}

HTTP status codes

  • 200 OK
  • 400 Bad Request
  • 401 Unauthorized
  • 402 Payment Required
  • 429 Too Many Requests

Frequently asked questions

Where can I find the Workflow recipes request and response reference?

Use the API reference for Workflow recipes to review parameters, response fields, examples, status codes, and supported operation modes.

How should I interpret unknown or incomplete results from Workflow recipes?

Unknown or partial results mean that the requested evidence could not be fully determined. Keep the result state, confidence, freshness, and limitations in downstream decisions.

How is Workflow recipes priced?

Pricing depends on the operation and execution mode. Check the endpoint reference for the current credit cost, authentication requirement, and per-item rules.

Used by people at these companies

InstantOutseerMongoDBRespondentSage Expense ManagementInstantlyD.R. HortonWhatConvertsAdobeLLM Pulse