DomainPrey API

Programmatic access to AI-scored expired domains, deep research, and real-time drop alerts.

Enterprise API access requires an Enterprise plan ($49/mo).

Overview

The DomainPrey API gives you full access to our database of AI-scored expired domains. Search, filter, research, and get real-time alerts when high-value domains become available.

Base URL:

https://domainprey.com/api/v1

All responses are JSON. All requests should include your API key.

Authentication

Include your API key in every request via the X-Api-Key header:

curl -H "X-Api-Key: dp_your_key_here" \
  https://domainprey.com/api/v1/domains

Alternatively, pass it as a query parameter (less secure, not recommended for production):

https://domainprey.com/api/v1/domains?api_key=dp_your_key_here
Generate your API key from your Dashboard under the API Keys section. Keys are shown only once on creation — save it immediately.

Rate Limits

API requests are limited to 100 requests per minute per API key. The counter resets every 60 seconds.

If you exceed the limit, you'll receive a 429 response:

{
  "error": "Rate limit exceeded (100 requests/minute)",
  "retry_after": 42
}

Error Handling

The API uses standard HTTP status codes:

CodeMeaning
200Success
401Invalid or missing API key
403Enterprise plan required
404Domain not found
429Rate limit exceeded
500Server error

All errors return a JSON body with an error field:

{ "error": "Domain not found" }

List Domains

GET /api/v1/domains

Search and filter verified available domains with full scoring data.

ParameterTypeDefaultDescription
searchstringSearch domain names (partial match)
tldstringFilter by TLD (e.g. com, io, ai)
min_scorenumber0Minimum overall score (0-100)
max_lengthnumber50Maximum domain name length
sortstringoverallSort by: overall, brandability, keyword_value, flip_potential, estimated_value, length
orderstringdescasc or desc
pagenumber1Page number
limitnumber20Results per page (max 100)

Example Request

curl -H "X-Api-Key: dp_your_key" \
  "https://domainprey.com/api/v1/domains?min_score=60&tld=com&sort=estimated_value&limit=5"

Example Response

{
  "domains": [
    {
      "name": "techvault.com",
      "tld": "com",
      "length": 13,
      "status": "available",
      "age_years": 12,
      "discovered_at": "2026-02-25T08:00:00Z",
      "verified_at": "2026-02-25T10:30:00Z",
      "overall": 78,
      "brandability": 85,
      "keyword_value": 65,
      "length_score": 72,
      "flip_potential": 80,
      "estimated_value": 2400,
      "ai_summary": "Strong brandable .com with tech keyword..."
    }
  ],
  "total": 1847,
  "page": 1,
  "pages": 370,
  "limit": 5
}

Try It

Get Domain

GET /api/v1/domains/:name

Get full details and scores for a single domain.

Example

curl -H "X-Api-Key: dp_your_key" \
  https://domainprey.com/api/v1/domains/techvault.com

Try It

Research Domain

GET /api/v1/domains/:name/research

Get deep research data: Wayback Machine history, WHOIS, comparable sales, SEO backlinks, and social media presence.

Note: Research requests are slower (5-15 seconds) as they query multiple external data sources in real-time.

Example Response

{
  "domain": "techvault.com",
  "wayback": {
    "firstSnapshot": "2014-03-12T00:00:00Z",
    "lastSnapshot": "2025-11-08T00:00:00Z",
    "snapshotCount": 847,
    "yearsActive": 11,
    "hadRealContent": true,
    "score": 82
  },
  "whois": {
    "createdDate": "2013-06-15",
    "expiryDate": null,
    "ageYears": 12,
    "registrar": "GoDaddy"
  },
  "comparable_sales": [
    { "domain": "techbase.com", "price": 3500, "source": "namebio" },
    { "domain": "techprime.com", "price": 4200, "source": "namebio" }
  ],
  "seo": {
    "indexed_pages": 2,
    "has_backlinks": true,
    "results": [{ "title": "TechVault - ...", "url": "..." }]
  },
  "social": {
    "mentions": 1,
    "results": [{ "title": "@techvault on Twitter", "url": "..." }]
  },
  "scores": {
    "overall": 78,
    "estimated_value": 2400,
    "brandability": 85,
    "keyword_value": 65,
    "flip_potential": 80,
    "length_score": 72
  }
}

Try It

Newly Added

GET /api/v1/newly-added

Get domains verified as available in the last 48 hours, sorted by score.

ParameterTypeDefaultDescription
limitnumber50Max results (up to 200)
min_scorenumber0Minimum overall score
curl -H "X-Api-Key: dp_your_key" \
  "https://domainprey.com/api/v1/newly-added?min_score=60&limit=10"

Historical Data

GET /api/v1/history

Browse historical domain drops. See which domains became available over the past 90 days.

ParameterTypeDefaultDescription
daysnumber30Look back period (max 90)
tldstringFilter by TLD
min_scorenumber0Minimum score
limitnumber100Max results (up to 500)
curl -H "X-Api-Key: dp_your_key" \
  "https://domainprey.com/api/v1/history?days=7&tld=com&min_score=70"

Domain Audit Trail

GET /api/v1/history/:name

Get the full status change history for a specific domain. See when it was discovered, verified, sniped, re-verified, etc.

Example Response

{
  "domain": "techvault.com",
  "status": "available",
  "discovered_at": "2026-02-20T08:00:00Z",
  "verified_at": "2026-02-25T10:30:00Z",
  "history": [
    {
      "field": "status",
      "old_value": "pending",
      "new_value": "available",
      "reason": "tpp-verified",
      "changed_at": "2026-02-25T10:30:00Z"
    }
  ]
}

Stats

GET /api/v1/stats

Get aggregate statistics about the DomainPrey database.

Example Response

{
  "total_domains": 105000,
  "available_domains": 4326,
  "average_score": 42.7,
  "tld_breakdown": [
    { "tld": "com", "count": 1847 },
    { "tld": "net", "count": 623 },
    { "tld": "org", "count": 412 }
  ]
}

Webhooks — Real-time Drop Alerts

Webhooks push domain availability notifications to your server in real-time. When our verification engine discovers new available domains matching your criteria, we send a POST request to your webhook URL.

Configure webhooks from your Dashboard (up to 3 per account). Each webhook can filter by:

Payload Format

We send a POST request with a JSON body:

{
  "event": "domain.available",
  "timestamp": "2026-02-26T14:30:00.000Z",
  "domains": [
    {
      "name": "techvault.com",
      "tld": "com",
      "overall": 78,
      "estimated_value": 2400
    },
    {
      "name": "aiforge.io",
      "tld": "io",
      "overall": 82,
      "estimated_value": 3100
    }
  ]
}

Verifying Webhook Signatures

Every webhook request includes an X-DomainPrey-Signature header containing an HMAC-SHA256 signature of the request body, signed with your webhook secret.

To verify:

// Node.js
const crypto = require('crypto');

function verifyWebhook(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

// Express middleware
app.post('/webhook', express.text({ type: '*/*' }), (req, res) => {
  const sig = req.headers['x-domainprey-signature'];
  if (!verifyWebhook(req.body, sig, 'your_webhook_secret')) {
    return res.status(401).send('Invalid signature');
  }
  const data = JSON.parse(req.body);
  console.log('New domains:', data.domains);
  res.sendStatus(200);
});
# Python
import hmac, hashlib

def verify_webhook(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode(), body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(signature, expected)
Timeout: We wait up to 10 seconds for your server to respond. Return a 2xx status to acknowledge receipt. Failed deliveries are not retried (yet).

Test Your API Key

Paste your API key below to verify it's working and check your current rate limit status.

API Key Test

Code Examples

Python — Find high-value .com domains

import requests

API_KEY = "dp_your_key_here"
BASE = "https://domainprey.com/api/v1"
headers = {"X-Api-Key": API_KEY}

# Get top .com domains scoring 70+
resp = requests.get(f"{BASE}/domains", headers=headers, params={
    "tld": "com",
    "min_score": 70,
    "sort": "estimated_value",
    "order": "desc",
    "limit": 20
})
data = resp.json()

for d in data["domains"]:
    print(f"{d['name']} — Score: {d['overall']}, Value: ${d['estimated_value']}")

JavaScript / Node.js — Monitor new drops

const API_KEY = 'dp_your_key_here';

async function checkNewDrops() {
  const resp = await fetch(
    'https://domainprey.com/api/v1/newly-added?min_score=60',
    { headers: { 'X-Api-Key': API_KEY } }
  );
  const { domains } = await resp.json();

  for (const d of domains) {
    console.log(`${d.name} — Score: ${d.overall}, Est: $${d.estimated_value}`);
  }
}

// Check every 15 minutes
setInterval(checkNewDrops, 15 * 60 * 1000);
checkNewDrops();

cURL — Quick domain lookup

# Get details for a specific domain
curl -s -H "X-Api-Key: dp_your_key" \
  https://domainprey.com/api/v1/domains/example.com | jq .

# Search for AI-related domains
curl -s -H "X-Api-Key: dp_your_key" \
  "https://domainprey.com/api/v1/domains?search=ai&min_score=50&tld=com" | jq .

# Get today's best drops
curl -s -H "X-Api-Key: dp_your_key" \
  "https://domainprey.com/api/v1/newly-added?min_score=70&limit=5" | jq .

Google Sheets — Import domains

// Apps Script — paste in Extensions > Apps Script
function importDomains() {
  const API_KEY = 'dp_your_key_here';
  const resp = UrlFetchApp.fetch(
    'https://domainprey.com/api/v1/domains?min_score=60&limit=50',
    { headers: { 'X-Api-Key': API_KEY } }
  );
  const data = JSON.parse(resp.getContentText());
  const sheet = SpreadsheetApp.getActiveSheet();

  sheet.getRange(1, 1, 1, 5).setValues([
    ['Domain', 'Score', 'Value', 'TLD', 'Verified']
  ]);

  const rows = data.domains.map(d => [
    d.name, d.overall, d.estimated_value, d.tld, d.verified_at
  ]);
  sheet.getRange(2, 1, rows.length, 5).setValues(rows);
}

DomainPrey API v1 — Back to DomainPreyPricingSupport