Skip to content

Google Search Console

Your agents add and verify your site, submit the sitemap, check that each key page is indexed, and read the searches that show you.

Connect
Verify your domain, 3 grants
Runs through
Your account
First run
Check that your key pages are indexed, free
Sites
None, it holds your records
Domain.verify
You, to your agent

Check that my home, pricing and rent ledger template pages are indexed on Google.

curl -X POST "https://api.sb/leaseline.app/domains/verify?mode=try" \
  -H "Authorization: Bearer $SB_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain":"leaseline.app","pages":["https://leaseline.app/","https://leaseline.app/pricing","https://leaseline.app/rent-ledger-template"]}'
npx startup-builder do Domain.verify --try --data '{"domain":"leaseline.app","pages":["https://leaseline.app/","https://leaseline.app/pricing","https://leaseline.app/rent-ledger-template"]}'
{
  "name": "do",
  "arguments": {
    "mode": "try",
    "code": "return await $.Domain.verify({ domain: 'leaseline.app', pages: ['https://leaseline.app/', 'https://leaseline.app/pricing', 'https://leaseline.app/rent-ledger-template'] })"
  }
}
import { $ } from 'startup-builder'

const result = await $.try.Domain.verify({ domain: 'leaseline.app', pages: ['https://leaseline.app/', 'https://leaseline.app/pricing', 'https://leaseline.app/rent-ledger-template'] })
Response
{
  "$type": "Domain",
  "mode": "try",
  "stored": false,
  "domain": "leaseline.app",
  "searchEngines": [
    {
      "venue": "google-search",
      "verified": true,
      "propertyAdded": true,
      "sitemap": {
        "submitted": 48,
        "indexed": 31,
        "lastRead": "2026-10-25T03:10:00Z",
        "errors": 0
      }
    }
  ],
  "pages": [
    {
      "url": "https://leaseline.app/",
      "state": "indexed",
      "lastCrawl": "2026-10-24T11:02:00Z"
    },
    {
      "url": "https://leaseline.app/pricing",
      "state": "not-seen",
      "reason": "Discovered, not crawled yet",
      "fix": "Link it from the home page and the template"
    },
    {
      "url": "https://leaseline.app/rent-ledger-template",
      "state": "crawled-not-indexed",
      "reason": "Crawled, not indexed yet",
      "lastCrawl": "2026-10-23T08:41:00Z"
    }
  ],
  "lagDays": 2
}
Try mode reads, stores nothing and spends nothingAPI referenceIts Nouns

Connect once

  1. Connect your Domain with Domain.connect; the platform adds the property, writes the verification record to your DNS and submits the sitemap.
  2. For a site already in Search Console, call Integration.connect with system: 'seo' instead, then open the connectUrl it returns and sign in as an owner of that property.
  3. Name your key pages (home, pricing, the pages that sell); those are the ones your agents check every day.
GrantWhat it unlocksScope
Prove you own the siteThe DNS verification record the platform writes when you connect your Domainhttps://www.googleapis.com/auth/siteverification
Manage the propertyAdding the site, submitting and removing sitemaps, and inspecting pageshttps://www.googleapis.com/auth/webmasters
Read onlySearches, clicks, impressions and position, when you would rather grant no changeshttps://www.googleapis.com/auth/webmasters.readonly
ToDo this
PauseIntegration.pause stops every call through Google at once and keeps the token; Integration.resume picks up from the same cursor.
ReconnectIntegration.reconnect returns a fresh connectUrl that lasts one hour, and keeps the Integration's id and cursor, so nothing imports twice.
DisconnectIntegration.revoke revokes the token with Google; every record it brought in stays in your records.

What your agents do

AskVerbRuns throughPrice
Is each key page indexed, and if not, why not?Domain.verifyYour accountFree
Show me the searches that showed my site last week, with clicks and position.Metric.queryYour accountFree
Add my site to Google and submit the sitemap when I connect the domain.Domain.connectYour accountFree
Resubmit the sitemap whenever a page goes live.Content.publishYour accountFree
Watch my key pages daily and wake me when one leaves the index.Monitor.createYour accountFree

Calls on your own account are free.

What it holds

NounThe account’s objectWhenWhich side leads
Domainsc-domain propertyYou connect your DomainYour records
PageinspectionResultYour agent checks a key pageThe account
KeywordsearchAnalytics rowEach day’s searches settleThe account

Events and webhooks

DirectionEvent
EmitsDomain.verified, Keyword.measured, Monitor.checked

Any Event can wake a Workflow, and a Watch delivers it to your endpoint, signed (Events and webhooks).

Limits

WhatLimitCall
Page checks2,000 a day and 600 a minute per property; past it a check refuses with quota-reached and runs after the resetDomain.verify
Search dataSettles about 2 days behind, so a readout of yesterday reads the last settled dayMetric.query
Request indexingHas no API: for a key page still out of the index after a week, the browser agent presses it in Search Console, signed in as youEvery call

Field map

Our fieldGoogle Search Console’s fieldCalls
Metric.breakdowndimensions Notes query, page, country, device or dateMetric.query
Metric.windowstartDate and endDateMetric.query
Metric.metricclicks, impressions, ctr or positionMetric.query

What try does here

Reads run for real, because a read changes nothing in Search Console; try stores no rows and submits no sitemap.

How long a connection lasts

A connection lasts until you revoke it in your Google Account; Google also ends a grant left unused for six months, and every call your agents make counts as use.

The platform asks you to reconnect 7 days before it runs out; until you do, a call that needs it refuses with needs-reauth.

Plays and strategies

Used by

Reference

5 calls, each with its path and price
CallPathPrice
Domain.verifyPOST /domains/verifyFree
Metric.queryPOST /metrics/queryFree
Domain.connectPOST /domains/connectFree
Content.publishPOST /content/publishFree
Monitor.createPOST /monitors/createFree

Contents