UpSnatch API and MCP

Last updated: September 2026

Search the UpSnatch domain catalog from your own scripts, or let Claude, Cursor, and other AI agents search it for you.

Overview

The UpSnatch API gives you the same catalog as Classic Search in the app: expired, dropped, pending-delete, auction, and marketplace domains with SEO metrics such as Majestic Trust Flow and Citation Flow, backlinks, referring domains, Ahrefs DR, age, and price.

  • REST API at https://api.upsnatch.com for scripts, spreadsheets, and CRMs.

  • MCP server at https://api.upsnatch.com/mcp for AI agents such as Claude Code, Cursor, and VS Code.

Both use the same API key and share the same limits. API access is included in all paid plans. Explorer comes with 1,000 result rows per week so you can try it in your own tools; Pro and Agency have daily allowances for real workloads.

What the API covers today

Keyword and metric search (Classic Search) and single-domain lookups. Magic Search, Local Search, and Projects are not available through the API yet.

Quick start

  1. Open Settings, API access in the app and generate a key. It starts with ups_live_ and is shown only once.

  2. Send it as a Bearer token:

curl -X POST "https://api.upsnatch.com/v1/search/classic?page=1&page_size=25" \
  -H "Authorization: Bearer $UPSNATCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keyword": "coffee", "tlds": ["com"], "minTrustFlow": 10}'

The response contains one page of domains plus pagination fields:

{
  "results": [
    {
      "domain": "coffeeandbooks.com",
      "tld": "com",
      "type": "MARKETPLACE",
      "available": true,
      "provider": "nameshift",
      "price": 14995,
      "currency": "USD",
      "trustFlow": 16,
      "citationFlow": 11,
      "tfCfRatio": 1.45,
      "backlinks": 46,
      "referringDomains": 29,
      "ahrefsDr": 4,
      "score": 75,
      "spamRisk": "low",
      "purchaseUrl": "https://app.upsnatch.com/go/coffeeandbooks.com"
    }
  ],
  "page": 1,
  "page_size": 25,
  "returned": 25,
  "total": 98,
  "has_more": true
}

Authentication

Every request needs your key in the Authorization header: Authorization: Bearer ups_live_…. Each account has one key. Generating a new key replaces the old one immediately.

Keep your key secret

Call the API from your own server, scripts, or local tools only. Never put the key in browser JavaScript, mobile apps, or public repositories: anyone who can read it can use your quota. If a key leaks, generate a new one in Settings and the old key stops working right away.

The key follows your subscription. If a payment fails or the subscription ends, requests return 403 subscription_inactive, and the same key works again as soon as the subscription is active.

Search domains

POST /v1/search/classic?page=1&page_size=25

Send filters as a JSON body. At least one selective filter is required: a keyword of 2 or more characters, tlds, listingTypes, a price range, or a min… metric above 0. Unknown fields are rejected, so a typo never silently widens your search.

FieldMeaning
keywordWord or phrase the name must contain. Plurals are matched too. Up to 100 characters.
listingTypesAny of AUCTION, DROPPED, MARKETPLACE, PENDING_DELETE.
tldsExtensions without the dot, for example ["com", "nl"]. Up to 50.
marketTldsOnly names whose label is also registered as a site on these extensions.
minTrustFlow, minCitationFlowMinimum Majestic Trust Flow and Citation Flow (0 to 100).
minTfCfRatioMinimum Trust Flow divided by Citation Flow, for example 0.5.
minBacklinks, minRefDomainsMinimum backlinks and referring domains.
minAhrefsDrMinimum Ahrefs Domain Rating (0 to 100).
minIndexed, minPageviewsMinimum indexed URLs and pageviews.
minValuationMinimum estimated value in USD.
priceFrom, priceToPrice range in USD.
minBidsMinimum number of auction bids.
availabilitytoday or thisweek: auctions ending in that window.
minAgeMinimum domain age in years.
minLength, maxLengthLength of the name without the extension.
minSegmentsMinimum number of words in the name.
languageLanguage of the name, for example en, nl, de.
excludeAdultHide adult names. Defaults to true.
excludeHyphensHide names with hyphens.
numbersModeANY, NO_DIGITS, or DIGITS_ONLY.

Pagination

page starts at 1. page_size defaults to 25 and goes up to 50 on Pro and 100 on Agency. Keep requesting the next page while has_more is true. page × page_size may not exceed 2,000 on Pro or 5,000 on Agency; narrow your filters to reach results beyond that.

Get one domain

GET /v1/domains/{domain}

curl "https://api.upsnatch.com/v1/domains/coffeeandbooks.com" \
  -H "Authorization: Bearer $UPSNATCH_API_KEY"

Returns the same fields as a search result, or 404 not_found when the domain is not in the catalog. Unlike search, a lookup can also return listings that were sold or auctions that ended; check available. Internationalized names can be sent in Unicode or punycode.

Response fields

Fields without data are null.

FieldMeaning
domain, tldThe name and its extension.
typeAUCTION, DROPPED, MARKETPLACE, or PENDING_DELETE.
availableWhether the listing can still be bought: marketplace listing not sold, auction not ended, dropped domain not registered again.
providerAuction or marketplace platform, for example godaddy. null for dropped domains.
price, currencyCurrent price or bid, always in USD.
numberOfBids, auctionEndTimeAuction bid count and end time (ISO 8601). null for other types.
trustFlow, citationFlow, tfCfRatioMajestic metrics and their ratio.
backlinks, referringDomains, ahrefsDrLink metrics. UpSnatch's own enrichment is used first, the platform's data otherwise.
domainAge, indexedURLs, domainLengthAge in years, indexed URLs, and length of the name.
scoreUpSnatch quality score from 0 to 100. Spam is not part of the score; check spamRisk alongside it.
spamRisklow, medium, high, or unknown when there is not enough link data.
availabilityStatus, availabilityCheckedAtLast registration check for dropped domains.
purchaseUrlLink to buy or bid on the domain. Use this link rather than building marketplace URLs yourself. null when the domain is no longer available.

See Metrics and quality signals for how to read these numbers.

Rate limits and quotas

REST calls and MCP tool calls count against the same limits.

LimitExplorerProAgency
Requests per minute303090
Requests per hour2006002,000
Result rows1,000 per week20,000 per day50,000 per day
Requests at the same time112
Maximum page size5050100
Maximum depth (page × page_size)1,0002,0005,000

Every search counts as one request plus the number of rows it returns. A domain lookup counts as one request and no rows. Responses include X-RateLimit-Limit, X-RateLimit-Remaining, X-RowQuota-Limit, and X-RowQuota-Remaining headers so you can pace your script. Daily allowances reset at 00:00 UTC; the Explorer weekly allowance resets on Monday at 00:00 UTC.

Use the API for your own research and tooling. Bulk-copying or redistributing the catalog to rebuild a competing dataset is not allowed under our Terms of Use; we may revoke keys when we detect abuse.

Errors

Errors are JSON with an error code and a readable message.

Status and codeWhat to do
400 validation_errorFix the request. details lists each field with an issue such as unknown_field or out_of_range.
401 unauthorizedThe key is missing, wrong, or was replaced by a newer one.
403 forbiddenYour plan does not include API access.
403 subscription_inactiveThe subscription ended or a payment failed. The key works again once the subscription is active.
404 not_foundThe domain is not in the catalog, or the path does not exist.
429 rate_limitedWait retry_after_seconds (also in the Retry-After header). class says which limit you hit: rate, row_quota, or concurrent.
503 service_busySearch capacity is briefly exhausted. Retry after a few seconds.
502 search_failedTemporary problem on our side. Retry later.

Validation errors are checked before any quota is used, except when no selective filter was given.

MCP for AI agents

The MCP server lets an AI agent search UpSnatch for you. Ask it things like "find .com auctions ending this week about coffee with Trust Flow above 15" and it picks the filters itself.

  • URL: https://api.upsnatch.com/mcp (Streamable HTTP)

  • Auth: Authorization: Bearer header with your API key

  • Tools: search_classic (the search endpoint above) and get_domain (single lookup). Both are read-only.

Store the key in an environment variable called UPSNATCH_API_KEY instead of pasting it into a config file you might share.

Cursor

Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:

{
  "mcpServers": {
    "upsnatch": {
      "url": "https://api.upsnatch.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:UPSNATCH_API_KEY}"
      }
    }
  }
}

Claude Code

claude mcp add --transport http upsnatch https://api.upsnatch.com/mcp \
  --header "Authorization: Bearer $UPSNATCH_API_KEY"

VS Code

Add this to .vscode/mcp.json. VS Code asks for the key once and stores it securely:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "upsnatch-key",
      "description": "UpSnatch API key",
      "password": true
    }
  ],
  "servers": {
    "upsnatch": {
      "type": "http",
      "url": "https://api.upsnatch.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:upsnatch-key}"
      }
    }
  }
}

Other clients

Any MCP client that supports Streamable HTTP with a custom header works. Clients that only connect through an OAuth sign-in, such as ChatGPT connectors, are not supported yet.

Agents and quota

Agents tend to search again and again. Every tool call uses the same quota as a REST call, so ask for small pages and specific filters, for example "10 results" rather than "everything".

OpenAPI specification

The full machine-readable description is at api.upsnatch.com/openapi.yaml (OpenAPI 3.0). Import it into Postman, Insomnia, or a code generator to get a typed client.

Was this article helpful?