Skip to content

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: string; to: string; anchor: string | null; follow: boolean; firstSeen: string | null; lastSeen: string | null; live?: boolean }[] Present with group: links or check; anchor: null is an image link.
sites { hostname: Hostname; authority: number | null; spamScore: number | null; links: number; follow: boolean | null; linksTo: Hostname[] }[] Present with group: sites. linksTo names the rivals each site links to with gap; follow: null means mixed.
anchors { text: string; links: number }[] Present with group: anchors.
changes { month: string; gained: number; lost: number }[], in referring domains a month Present with group: changes; 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: boolean; fix: string | null } Never null. fix is null when ok.
certificate { ok: boolean; fix: string | null } Never null. fix is null when ok.
searchEngines { venue: 'google-search' | 'bing'; verified: boolean; sitemap: { submitted: number; indexed: number; lastRead: string | null; errors: number } | null }[] Never null. sitemap: null means no sitemap was read yet.
pages { url: string; state: IndexState; reason: string | null; lastCrawl: string | null; canonical: string | null; robots: 'allowed' | 'blocked' | null }[] 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

JSON
{
  "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

VerbThe question it answersPriceSuccess rate
Domain.benchmarkHow strong is my domain next to my rivals’?0.75¢ a domain100% of 12,396 calls
Domain.findCompetitorsWho am I actually up against in search?5¢ per 100 rows100% of 2,639 calls
Domain.findLinksWho links to my rivals and not to me?2¢ per 100 links100% of 3,967 calls
Domain.verifyDo search engines know my site, and is each key page indexed?Free99.8% of 45,746 calls

The order you call them in

  1. Domain.verify: Do search engines know my site, and is each key page indexed?
  2. Domain.findCompetitors: Who am I actually up against in search?
  3. Domain.benchmark: How strong is my domain next to my rivals’?
  4. Domain.findLinks: Who links to my rivals and not to me?

Monitors on this Noun

VerbWhat it watches
Domain.verifyEach key page’s index state, daily, inside the 2,000-a-day inspection quota.
Domain.benchmarkYour referring domains, weekly, against the 10, 25 and 50 targets.
Domain.findLinksLinks you earned that disappear, weekly.

Works with

Contents