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
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
- Connect your Domain with
Domain.connect; the platform adds the property, writes the verification record to your DNS and submits the sitemap. - For a site already in Search Console, call
Integration.connectwithsystem:instead, then open the'seo' connectUrlit returns and sign in as an owner of that property. - Name your key pages (home, pricing, the pages that sell); those are the ones your agents check every day.
| Grant | What it unlocks | Scope |
|---|---|---|
| Prove you own the site | The DNS verification record the platform writes when you connect your Domain | https:/ |
| Manage the property | Adding the site, submitting and removing sitemaps, and inspecting pages | https:/ |
| Read only | Searches, clicks, impressions and position, when you would rather grant no changes | https:/ |
| To | Do this |
|---|---|
| Pause | Integration.pause stops every call through Google at once and keeps the token; Integration.resume picks up from the same cursor. |
| Reconnect | Integration.reconnect returns a fresh connectUrl that lasts one hour, and keeps the Integration's id and cursor, so nothing imports twice. |
| Disconnect | Integration.revoke revokes the token with Google; every record it brought in stays in your records. |
What your agents do
| Ask | Verb | Runs through | Price |
|---|---|---|---|
| Is each key page indexed, and if not, why not? | Domain.verify | Your account | Free |
| Show me the searches that showed my site last week, with clicks and position. | Metric.query | Your account | Free |
| Add my site to Google and submit the sitemap when I connect the domain. | Domain.connect | Your account | Free |
| Resubmit the sitemap whenever a page goes live. | Content.publish | Your account | Free |
| Watch my key pages daily and wake me when one leaves the index. | Monitor.create | Your account | Free |
Calls on your own account are free.
What it holds
| Noun | The account’s object | When | Which side leads |
|---|---|---|---|
| Domain | sc-domain property | You connect your Domain | Your records |
| Page | inspectionResult | Your agent checks a key page | The account |
| Keyword | searchAnalytics row | Each day’s searches settle | The account |
Events and webhooks
| Direction | Event |
|---|---|
| Emits | Domain.verified, Keyword.measured, Monitor.checked |
Any Event can wake a Workflow, and a Watch delivers it to your endpoint, signed (Events and webhooks).
Limits
| What | Limit | Call |
|---|---|---|
| Page checks | 2,000 a day and 600 a minute per property; past it a check refuses with quota-reached and runs after the reset | Domain.verify |
| Search data | Settles about 2 days behind, so a readout of yesterday reads the last settled day | Metric.query |
| Request indexing | Has 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 you | Every call |
Field map
| Our field | Google Search Console’s field | Calls |
|---|---|---|
Metric.breakdown | dimensions Notes query, page, country, device or date | Metric.query |
Metric.window | startDate and endDate | Metric.query |
Metric.metric | clicks, | Metric.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
| Kind | Where |
|---|---|
| Plays | Editorial SEO, Programmatic SEO, Answer engine optimization, Category hubs, Switch kit, Free tools |
| Strategies | Launch and search |
Used by
- Workflows: AI answer audit · Index the site
- Agent tasks: Answer page per question
- Services: Ranked page
Reference
5 calls, each with its path and price
| Call | Path | Price |
|---|---|---|
Domain.verify | POST / | Free |
Metric.query | POST / | Free |
Domain.connect | POST / | Free |
Content.publish | POST / | Free |
Monitor.create | POST / | Free |