Authorization: Bearer <key> or X-API-Key: <key>.
Every successful tool response is an Open Fact Envelope. The data shape changes per tool, but the top-level envelope stays the same.
Plain-language map
Inspect domain
POST /v1/tools/inspect_domain
Compact factual snapshot for one domain. Use this as the starting map for top keywords, top pages, estimated traffic, dominant intents, and likely competitors.
Credit cost: 9
Request body:
Example:
data includes domain, location, summary, top_keywords, top_pages, likely_competitors, and intent_mix.
inspect_domain uses the organic search index only. It does not call the backlink index or include link-authority metrics. When backlink tools are enabled, next_actions can suggest inspect_backlinks and an executable compare_backlink_gap call seeded with the likely competitors returned here.
Discover competitors
POST /v1/tools/discover_competitors
Find organic competitors by domain overlap or by seed keywords.
Credit cost: 3
Request body:
Provide
domain or seed_keywords. Domain mode is cheap and broad. Seed keyword mode works better for new or sparsely indexed sites.
data includes domain, location, and competitors.
In domain mode, a successful result can suggest compare_backlink_gap with the discovered competitors already filled in, to find referring domains that link to rivals but not you.
Research keywords
POST /v1/tools/research_keywords
Expand a seed term into a ranked demand list.
Credit cost: 3
Request body:
data includes seed, location, mode, and keywords.
Compare keyword coverage
POST /v1/tools/compare_keyword_coverage
Find keyword gaps where competitors rank and the target does not, plus keywords where the target is losing.
Credit cost: 12
Request body:
data includes domain, location, competitors, gaps, losing, and intent_clusters.
Inspect backlinks
POST /v1/tools/inspect_backlinks
Inspect a domain’s link profile from the backlink index, sliced by view so you pay only for the slices you ask for (each view is one vendor call). This is a lean primitive, not a bundle.
Credit cost: 9 (one flat price whatever views you request)
Request body:
authority:domain_rank(0-1000), referring-domain and backlink totals,dofollow_ratio, spam score. The cheap “how established is this site” call.referring_domains: a deep, paginated list of domains that link to the target. Its row-level rank is page-level, not true domain authority. For a ranked, authority-filtered competitor gap, usecompare_backlink_gap.anchors: anchor-text distribution.backlinks: individual links (from-url, anchor, dofollow, first_seen, lost_date). Usestatus=lostfor reclaim, the full list for disavow. Setdomain_fromto one source domain to see exactly where and how it links to the target in a single call — the drill-down after acompare_backlink_gaprow.
backlinks.domain_authority, backlinks.referring_domain, backlinks.anchor, and backlinks.backlink types with backlink_index provenance.
For a competitor link gap, do not page these lists and union them yourself — call compare_backlink_gap, which runs that whole join server-side.
Backlink gap
POST /v1/tools/compare_backlink_gap
The backlink gap (a.k.a. link intersect), computed server-side in one call: the referring domains that link to several of a client’s competitors, ranked by how many competitors link them then by true authority, spam- and authority-filtered, with the ones the client already earned flagged. This replaces the old hand-run recipe — pull each competitor’s referring domains, union thousands of rows, dedupe against the client, re-enrich for true authority, filter, sort — all of which used to run in the calling agent’s context. Here it is one call and a compact, report-ready result.
Credit cost: 40
Request body:
earned or gap, and sorts by (competitor count desc, authority desc).
data includes domain, competitors (the set the pulls fanned out to), filters, gap (the top limit rows), and summary — the funnel counts (union_referring_domains, candidates, after_filter, gap_count, earned_count, dropped_spam, dropped_low_authority) plus per-competitor coverage. Facts use the backlinks.link_gap type (domain, links_to, competitor_count, earned, domain_rank, spam_score) with backlink_index provenance.
Read coverage.scope_note for what was and wasn’t covered, and fetch the full ranked candidate set from resources with export_dataset — don’t re-run per-competitor pulls to get the long tail. A short gap list is a good result: if the client already owns the strong domains, that shows up as earned=true, not as padding.
These endpoints are independent.
inspect_backlinks makes only profile calls. compare_backlink_gap computes the whole intersect server-side, but no search, audit, or owned-data endpoint invokes either one automatically.Inspect SERP
POST /v1/tools/inspect_serp
Fetch a live SERP snapshot for one query.
Credit cost: 2
Request body:
data includes query, location, fetched_at, item_types_present, organic, optional ai_overview, paid, local_pack, optional featured_snippet, people_also_ask, and related_searches.
Inspect search visibility
POST /v1/tools/inspect_search_visibility
Check where a domain ranks across a keyword set.
Credit cost: 6
Request body:
auto tries the index first and falls back to live SERPs when the target is underindexed. index is fast and cheap. live reflects today’s Google.
data includes domain, location, fetched_at, positions, and summary.
Inspect AI visibility
POST /v1/tools/inspect_ai_visibility
How often a domain is cited as a source in AI answers, alone or against named competitor domains.
Credit cost: 20
Request body:
data.sample_answers — real questions where the domain is cited, with the sources cited alongside it. With competitors you get the ranked comparison and share-of-citations gap instead. A domain with no AI citations returns a brand_mentions fact with mentions: 0 plus a next_actions pointer to discover_ai_citations.
data includes domain, location, platform, competitors, mentions, and, in the solo case, sample_answers.
Discover AI citations
POST /v1/tools/discover_ai_citations
Which domains AI cites across a category — the map of where to earn a mention.
Credit cost: 22
Request body:
*Provide
topic or domain; one is required. If both are given, topic wins. Prefer topic whenever you know the brand’s real category.
data.category_confidence returns derived_weak and a next_actions entry asks you to re-run with an explicit topic. Results are domain-anchored (which domains are cited as sources), never brand-name matched.
data includes topic, source, location, platform, citation_map, low_signal, and category_confidence.
Audit site
POST /v1/tools/audit_site
Run a fast technical and content health audit over sampled pages.
Credit cost: 9
Request body:
data includes domain, discovery_source, pages_discovered, pages_audited, pages_excluded, fetch_failures, render_warning, templates_sampled, onpage_score, issues_summary, excluded_summary, page_class_summary, worst_page, recommendations, issue_clusters, and compact pages.
Scope: the audit reads raw HTML. It does not execute JavaScript or measure Core Web Vitals.
Inspect keyword
POST /v1/tools/inspect_keyword
Drill into one keyword.
Credit cost: 5
Request body:
data includes keyword, location, monthly_volume, cpc_usd, competition_level, intent, trend, serp_top, and serp_features.
Inspect page
POST /v1/tools/inspect_page
Drill into one exact URL.
Credit cost: 3
Request body:
data includes url, location, organic_keywords, estimated_organic_traffic_per_month, and top_keywords.
Export dataset
POST /v1/tools/export_dataset
Fetch a full dataset by URI from a previous response resources entry.
Credit cost: 1
Request body:
data includes uri, items, available, and optional note.
Owned data (Search Console & Analytics)
These tools read a site you own through a connected Google property — Search Console for search performance, Google Analytics for website traffic. They appear only when owned data is enabled for your account, so check/v1/capabilities first. See Connections to connect a property.
Get search performance
POST /v1/tools/get_search_performance
Your measured Search Console performance: real clicks, impressions, CTR, and impression-weighted position. This is Google’s own data, not an estimate.
Credit cost: 2
Request body:
data includes website_id, domain, search_type, period, date_range, compare_to, data_state, group_by, summary, rows, and notes.
If the account has several connected websites, the call returns a website_required error listing safe options. If nothing is connected it returns connection_required or binding_required. See Errors.
Get website analytics
POST /v1/tools/get_website_analytics
Your measured Google Analytics traffic: real sessions, users, new users, engaged sessions, page views, and engagement time. This is Google’s own data, not an estimate. Every reported ratio (engagement rate, average engagement time, views per session) is recomputed from the base counts.
Credit cost: 2
Request body:
data includes website_id, domain, report, period, date_range, compare_to, data_state, summary, and — for a grouped report — group_by and rows.
If the account has several connected websites, the call returns a website_required error listing safe options. If nothing is connected it returns connection_required or binding_required. See Errors.
List websites
GET /v1/me/websites
List the websites on the account and each one’s connection state, per source. This is exposed to agents as the list_websites tool; over the REST API it is the account endpoint below. Free.
Credit cost: 0
websites, each with website_id, name, primary_domain, is_default, and connections (per-source state such as {"gsc":"connected","website_analytics":"connected"}). An account with nothing connected returns an empty list, which agents surface as connection_required.