Domains
A Domain is “a hostname that points at a Thing”: find your real rivals, measure yourself beside them, and check you are indexed.
- Noun
- Domain
- Calls
- 4
- Emits
Domain.benchmarked,Domain.competitorsFound,Domain.linksFound,Domain.verified
A Data Verb reads the market and returns a reading. A Software Verb changes your records and emits an Event. Every call here is a Data Verb: it reads, and it changes a record only where its Effects say so.
Properties
| Field | Type | What null means |
|---|---|---|
rows |
Domain[] |
Never null: one row per hostname, hostname first. |
rows[].hostname |
Hostname |
Never null. |
rows[].authority |
number | null, in 0 to 100, one scale across sources |
Unknown: too new or too small to score. |
rows[].pageAuthority |
number | null, in 0 to 100, the home page |
Unknown. |
rows[].spamScore |
number | null, in 0 to 100 |
Unknown. |
rows[].traffic |
number | null, in organic visits a month, estimated |
Too little search traffic to estimate. Never zero visits. |
rows[].keywords |
number | null, in terms ranking in the top 100 |
Unknown. |
rows[].referringDomains |
number | null, in domains linking to it |
Unknown. |
rows[].backlinks |
number | null, in links |
Unknown. |
rows[].adBudget |
number | null, in USD a month on search ads, estimated |
Unknown. 0 means no search ads were seen. |
rows[] |
Observed |
Each row also carries observedAt, method and locale. |
cost |
Cost, in USD |
Never null. In try mode usd is 0 and maxUsd is what the call would have cost. |
competitors |
Domain[] |
Never null: empty when no domain shares a term, at $0. |
competitors[].hostname |
Hostname |
Never null. |
competitors[].sharedKeywords |
number, in terms |
Never null: terms you both rank for, or both target. |
competitors[].theirKeywords |
number | null, in terms in the top 100 |
Unknown. |
competitors[].missingForYou |
number | null, in terms |
Unknown: terms they rank for and you do not. |
competitors[].visibility |
number | null, in 0 to 1, share of clicks on the shared terms |
Unknown. |
competitors[] |
Observed |
Each row also carries observedAt, method and locale. |
basis |
'ranked' | 'targets' |
Never null. targets means your domain ranks for too few terms, so rivals were read from the results of your target Keywords instead. |
links |
{ from: |
Present with group: or check; anchor: is an image link. |
sites |
{ hostname: |
Present with group:. linksTo names the rivals each site links to with gap; follow: means mixed. |
anchors |
{ text: |
Present with group:. |
changes |
{ month:, in referring domains a month |
Present with group:; a month with no reading is left out. |
after |
Cursor |
The last page: there are no more rows. |
(report) |
Observed |
The report carries observedAt and method. |
domain |
Domain |
Never null: with its state after the checks. |
dns |
{ ok: |
Never null. fix is null when ok. |
certificate |
{ ok: |
Never null. fix is null when ok. |
searchEngines |
{ venue: |
Never null. sitemap: means no sitemap was read yet. |
pages |
{ url: |
Never null: one row per page inspected. |
pages[].state |
'indexed' | 'discovered-not-indexed' | 'crawled-not-indexed' | 'duplicate' | 'not-seen' | 'excluded' |
Never null. |
pages[].reason |
string | null |
Null when indexed; otherwise the engine’s own wording. |
pages[].lastCrawl |
string | null, in ISO 8601 |
Never crawled. |
pages[].canonical |
string | null |
The engine has not chosen one yet. |
lagDays |
number, in days |
Never null: how far behind the engine’s own report runs, about 2 days. |
observedAt |
string, in ISO 8601 |
Never null. |
method |
'reported' | 'sampled' |
Never null. Google reads reported; Bing has no reporting API, so its fields are read by a browser agent and read sampled. |
Object
{
"rows": [
{
"hostname": "leaseline.app",
"authority": 4,
"pageAuthority": 11,
"spamScore": 1,
"traffic": null,
"keywords": 3,
"referringDomains": 6,
"backlinks": 14,
"adBudget": 0,
"locale": "en-US",
"observedAt": "2026-10-27T14:02:11Z" ,
"method": "estimated"
},
{
"hostname": "rentrival.example",
"authority": 41,
"pageAuthority": 38,
"spamScore": 2,
"traffic": 18400,
"keywords": 2210,
"referringDomains": 612,
"backlinks": 9830,
"adBudget": 4200,
"locale": "en-US",
"observedAt": "2026-10-27T14:02:11Z" ,
"method": "estimated"
}
],
"cost": {
"usd": 0,
"maxUsd": 0.015,
"units": 2,
"misses": 0
}
}Verbs
| Verb | The question it answers | Price | Success rate |
|---|---|---|---|
Domain.benchmark | How strong is my domain next to my rivals’? | 0.75¢ a domain | 100% of 12,396 calls |
Domain.findCompetitors | Who am I actually up against in search? | 5¢ per 100 rows | 100% of 2,639 calls |
Domain.findLinks | Who links to my rivals and not to me? | 2¢ per 100 links | 100% of 3,967 calls |
Domain.verify | Do search engines know my site, and is each key page indexed? | Free | 99.8% of 45,746 calls |
The order you call them in
Domain.verify: Do search engines know my site, and is each key page indexed?Domain.findCompetitors: Who am I actually up against in search?Domain.benchmark: How strong is my domain next to my rivals’?Domain.findLinks: Who links to my rivals and not to me?
Monitors on this Noun
| Verb | What it watches |
|---|---|
Domain.verify | Each key page’s index state, daily, inside the 2,000-a-day inspection quota. |
Domain.benchmark | Your referring domains, weekly, against the 10, 25 and 50 targets. |
Domain.findLinks | Links you earned that disappear, weekly. |
Works with
- Workflows: Competitor gap · Directory submissions · Keyword opportunity map · AI answer audit · Index the site
- Agent tasks: Monthly search content · Answer page per question