It is the same engine as the domain appraisal tool, so a marketplace, a portfolio tool or a broker's internal system can show comps and a defensible price next to a name without anyone copying numbers by hand.
Who can use the API
The API is included only in the Broker plan ($399 per month, or $199 per month billed yearly at $2,388). The plan includes 5,000 API calls per month. Calls count as usage in the billing period: every call that returns a result is counted, and deleting anything in the panel does not give calls back. When the workspace reaches 5,000 calls in the period, further calls return HTTP 429 until the next billing period starts. There is no unlimited tier and no separate API plan. See pricing for the full plan comparison.
Authentication
Every request carries an API key in the Authorization header:
Authorization: Bearer <key>
Keys are created in the panel by a workspace member with the right role. A key is shown in full once, when you create it. We store only a hash of it, so we cannot show it again; if you lose it, create a new one and revoke the old one. You can revoke a key at any time, and a revoked key stops working on the next call. Keys belong to the workspace, so all keys share the same monthly limit.
Keep keys on your server. Never put a key in public code, a browser application or a mobile app. How keys and other data are protected is described on the security page.
Base URL
https://soldcomparables.com/api/v1
All requests use HTTPS. Responses are JSON in UTF-8.
Get comparable sales and an estimate
GET /api/v1/comps?domain=crons.ai
Parameters
| Parameter | Required | Description |
|---|---|---|
| domain | yes | The name to price, such as crons.ai. Scheme, www and path are removed. Without an extension, .com is assumed. |
| tld | no | Restrict comps to extensions, such as ai or com,io. Default is the engine's own choice of same and related extensions. |
| min_price | no | Minimum sale price in USD. Every recorded sale is at least 1,000. |
| max_price | no | Maximum sale price in USD. |
| from | no | Earliest sale date, YYYY-MM-DD. |
| to | no | Latest sale date, YYYY-MM-DD. |
| tier | no | wholesale, retail or any. Default any. |
| style | no | exact, brandable or any. Default any. |
| max_length | no | Maximum length of the name before the extension. |
| limit | no | Number of comps to return, up to 100. |
Example request
curl -s "https://soldcomparables.com/api/v1/comps?domain=crons.ai&tier=any&limit=3" \
-H "Authorization: Bearer YOUR_KEY"
Example response
The response below is trimmed to three comps. The sale rows are real recorded sales from the corpus with their venues, dates and source links. The ids, the estimate values and total_candidates are placeholders that show the format, not a real result.
{
"query": "crons.ai",
"domain": "crons.ai",
"features": {
"sld": "crons",
"tld": "ai",
"length": 5,
"tokens": ["crons"],
"plural": true,
"singular": "cron",
"term_class": "Developer term",
"style": "Exact match",
"labels": ["5 letters", ".ai", "Plural", "Developer term"]
},
"comps": [
{
"id": 101,
"domain": "server.ai",
"price_usd": 29400,
"sold_at": "2025-02-25",
"venue": "Namecheap",
"tier": "wholesale",
"tier_label": "Expired auction / investor venue",
"source_name": "NamePros daily sales report",
"source_url": "https://www.namepros.com/threads/food-ai-sold-for-55-500-lise-com-for-50-000.1347102/",
"length": 6,
"tld": "ai",
"plural": false,
"term_class": "Developer term",
"relevance": 84,
"reasons": ["Same .ai extension", "Developer term", "Similar length"]
},
{
"id": 102,
"domain": "kernel.ai",
"price_usd": 14599,
"sold_at": "2024-10-08",
"venue": "Dynadot",
"tier": "wholesale",
"tier_label": "Expired auction / investor venue",
"source_name": "NamePros daily sales report",
"source_url": "https://www.namepros.com/threads/citizenhealth-com-sold-for-17-150-predictive-ai-for-16-100.1336742/",
"length": 6,
"tld": "ai",
"plural": false,
"term_class": "Developer term",
"relevance": 81,
"reasons": ["Same .ai extension", "Developer term", "Similar length"]
},
{
"id": 103,
"domain": "webhook.ai",
"price_usd": 2424,
"sold_at": "2025-10-08",
"venue": "Namecheap",
"tier": "wholesale",
"tier_label": "Expired auction / investor venue",
"source_name": "NamePros daily sales report",
"source_url": "https://www.namepros.com/threads/fintiv-com-sold-for-117-000-gettingonboard-org-for-41-050.1365219/",
"length": 7,
"tld": "ai",
"plural": false,
"term_class": "Developer term",
"relevance": 76,
"reasons": ["Same .ai extension", "Developer term", "Recent sale"]
}
],
"estimate": {
"low": 3000,
"likely": 8000,
"high": 20000,
"wholesale": 6000,
"retail": null,
"confidence": "Medium",
"comps_used": [101, 102, 103],
"rationale": "Short developer-term .ai names sold between 2,424 USD (webhook.ai, Namecheap, 2025-10-08) and 29,400 USD (server.ai, Namecheap, 2025-02-25). Crons.ai is plural, which usually sells for less than the singular form.",
"movers": [
"What would raise it: a buyer building a scheduling or job queue product",
"What would lower it: the plural form and no retail comps"
],
"enough": true
},
"total_candidates": 214,
"corpus_size": 128867,
"newest_sale": "2026-05-28"
}
Response fields
| Field | Meaning |
|---|---|
| query, domain | What you sent and the normalised name that was priced |
| features | Length, extension, words, singular or plural, term class, style and short labels |
| comps | Comparable sales, most relevant first |
| comps[].relevance | Score from 0 to 100 |
| comps[].reasons | Up to 3 plain reasons the sale was chosen |
| comps[].tier, tier_label | wholesale, retail or mixed, with the label shown in the product |
| comps[].source_url | Link to the public report the sale came from |
| estimate.low, likely, high | Value range in USD, or null when there are no usable comps |
| estimate.wholesale, retail | Figures from investor venues and end-user marketplaces, or null when a tier has no comps |
| estimate.confidence | High, Medium or Low |
| estimate.rationale | Plain English explanation citing comps by name, price and date |
| estimate.movers | What would raise and what would lower the value |
| estimate.enough | false when there are fewer than 3 good comps, in which case the range is wider and confidence lower |
| total_candidates | How many sales were considered before ranking |
| corpus_size, newest_sale | Size of the corpus and date of the latest recorded sale |
When no comparable recorded sale exists above 1,000 USD, the estimate values are null, enough is false, and the rationale says that names like this usually trade below that. The API never returns an invented figure. How each part is built is explained in the methodology.
Errors
| Status | When | What to do |
|---|---|---|
| 401 | Missing, wrong or revoked key, or a workspace without the Broker plan | Check the header and the key in the panel |
| 422 | Invalid parameters, such as a missing domain, a malformed date or limit above 100 | Fix the parameter named in the error message |
| 429 | The workspace used its 5,000 calls for the period, or calls arrive too fast | Wait for the next period or slow down |
Errors return JSON with a message field that explains the problem.
Attribution when you display sales
If you show sales returned by the API to anyone outside your workspace, on a listing page, in a report or in your own tool, keep the venue and the source link with each sale. The sales come from public reports, and the link lets your users check them. The API is for use in your own product and workflows. Reselling the sales data, bulk copying it into another database or sharing keys outside your workspace is not allowed under the terms of service.
How SoldComparables serves the API
The API calls the same comps engine as the website: the same corpus of 128,867 recorded sales from 28 May 2021 to 28 May 2026, the same semantic similarity scoring and the same estimate. A result on the API matches what a Broker workspace sees for the same name and filters in the panel.
To try the engine first, run a search with the domain appraisal tool, then see pricing for the Broker plan.