# Search for available domains or check specific domain availability Search for domain availability and pricing. Can check a specific domain (e.g., "example.com") or search terms across multiple TLDs. Supports multiple queries in a single request for efficient batch lookups. Returns a list of matching domains with their availability status, prices, and other details. IMPORTANT: Not all ICANN TLDs are supported. Use ud_tld_list to verify TLD support before searching with specific TLDs. Endpoint: POST /mcp/v1/actions/ud_domains_search Version: 1.0.0 Security: bearerAuth ## Request fields (application/json): - `query` (any, required) Domain name(s) to search - can be a full domain name like "example.com" (TLD is inferred) or a search term like "mybusiness" (searches across TLDs). Supports array of up to 10 terms for batch operations. Example: "example.com" - `tlds` (array) Optional list of up to 5 ICANN TLDs to search (e.g., ["com", "org", "io"]). Must be supported TLDs - use ud_tld_list to verify. Defaults to popular TLDs (com, net, org, ai, io) or inferred from query. Example: ["com","org","io"] - `limit` (number) Maximum number of results to return (1-100, default: 20) Example: 20 - `offset` (number) Number of results to skip for pagination (default: 0) ## Response 200 fields (application/json): - `searchQuery` (string) Sanitized search term (present for single query requests) - `searchQueries` (array) Array of search queries with metadata (present for multiple query requests) - `searchQueries.query` (string) - `searchQueries.invalidReason` (string,null) - `searchQueries.invalidCharacters` (array) - `searchedTlds` (array) TLDs that were searched - `invalidReason` (string,null) Validation error reason (present for single query requests) - `invalidCharacters` (array,null) Invalid characters found (present for single query requests) - `results` (array) - `results.name` (string) Full domain name - `results.extension` (string) TLD (e.g., com, org, io) - `results.label` (string) Domain label without TLD - `results.available` (boolean) Whether the domain can be purchased through Unstoppable Domains. True for fresh registrations AND secondary market listings. False for registered domains not for sale, protected domains, invalid names, etc. - `results.status` (string) - `results.marketplace` (object) Marketplace information including acquisition status and listing source. - `results.marketplace.status` (string, required) Indicates how this domain can be acquired: "available" = fresh registration at standard/promo price; "registered-listed-for-sale" = already registered, listed on secondary market with fixed buy-now price; "registered-listed-for-offers" = already registered, listed on secondary market accepting offers (no fixed price); "registered-not-for-sale" = already registered, not listed for sale; "unavailable" = not available (protected, restricted, etc.); "invalid" = invalid domain name Enum: "available", "registered-listed-for-sale", "registered-listed-for-offers", "registered-not-for-sale", "unavailable", "invalid" - `results.marketplace.source` (string) Marketplace where the domain can be purchased. Present for all purchasable domains. "unstoppable_domains" = purchase through Unstoppable Domains (fresh registrations and UD marketplace listings); "sedo" = purchase through Sedo (external secondary market); "afternic" = purchase through Afternic (external secondary market). Enum: "unstoppable_domains", "sedo", "afternic" - `results.searchQuery` (string) The search term that produced this result (present in search results) - `results.pricing` (object) Pricing info. Present for purchasable domains except "registered-listed-for-offers" which have no fixed price. - `results.pricing.amount` (number) Price in cents. For fresh registrations, may include promo discount. For secondary market listings, shows the marketplace list price. - `results.pricing.currency` (string) Example: "USD" - `results.pricing.formatted` (string) Example: "$9.99" - `results.pricing.listAmount` (number) List price before promo in cents (only for fresh registrations with active promo) - `results.pricing.listFormatted` (string) Formatted list price (only for fresh registrations with active promo) - `results.product` (object) Product info (only present when available) - `results.product.type` (string) - `results.product.code` (string) - `results.product.id` (number) - `results.purchaseUrl` (string) Direct purchase URL (only for available domains) - `pagination` (object) - `pagination.total` (number) Total number of results - `pagination.count` (number) Number of results in this response - `pagination.offset` (number) Current offset - `pagination.limit` (number) Max results per page - `pagination.hasMore` (boolean) Whether more results are available - `pagination.nextOffset` (number,null) Offset for next page, null if no more pages - `truncated` (boolean) Whether results were truncated due to size limits - `truncationMessage` (string) Message explaining truncation ## Response 401 fields