The public Search Console API contains four service areas: Search Analytics, Sites, Sitemaps, and URL Inspection. It does not provide API access to Page Indexing totals, Crawl Stats, Core Web Vitals, HTTPS, Links, Manual Actions, Security Issues, Removals, annotations, or most experimental interface features.
The limits below were verified against Google's official API documentation on July 18, 2026. Quotas can change; check the live quota page and the Google Cloud project before sizing a production extractor.
Endpoint matrix
| Service and operation | Method and endpoint | What it does | Important boundary |
|---|---|---|---|
| Search Analytics query | POST https://www.googleapis.com/webmasters/v3/sites/{siteUrl}/searchAnalytics/query |
Returns clicks, impressions, CTR, and position grouped by requested dimensions | Bounded top-row data; not a complete export |
| Sites list | GET https://www.googleapis.com/webmasters/v3/sites |
Lists properties accessible to the authenticated user and permission levels | Returns that user's access, not every organizational property |
| Sites get | GET .../webmasters/v3/sites/{siteUrl} |
Gets one property's access details | siteUrl must match Search Console's property identifier |
| Sites add | PUT .../webmasters/v3/sites/{siteUrl} |
Adds a property to the user's Search Console account | Does not verify ownership |
| Sites delete | DELETE .../webmasters/v3/sites/{siteUrl} |
Removes the property from the user's account | Does not remove the site from Google Search |
| Sitemaps list | GET .../webmasters/v3/sites/{siteUrl}/sitemaps |
Lists submitted sitemaps and, optionally, children of a sitemap index | Not a discovery list of every sitemap Google might know |
| Sitemaps get | GET .../webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath} |
Gets information for one submitted sitemap | feedpath is the URL-encoded sitemap URL |
| Sitemaps submit | PUT .../webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath} |
Submits a sitemap | Submission does not guarantee successful processing or indexing |
| Sitemaps delete | DELETE .../webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath} |
Removes the sitemap from the submitted list | Does not delete the sitemap file or deindex its URLs |
| URL Inspection | POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect |
Returns Google's indexed status for one URL | Indexed evidence only; it cannot run the UI's live test or request indexing |
siteUrl is either the URL-prefix identifier, such as https://www.example.com/, or the Domain-property identifier, such as sc-domain:example.com. Encode it when it is part of a path.
OAuth and permissions
Read operations can use the https://www.googleapis.com/auth/webmasters.readonly scope. Operations that change Sites or Sitemaps require https://www.googleapis.com/auth/webmasters.
OAuth scope is only one gate. The authenticated user must also have sufficient permission on the exact Search Console property. A broad OAuth scope cannot turn a restricted Search Console user into an owner.
Use least privilege, keep refresh tokens out of logs, and distinguish user authorization failures from project quota failures.
Search Analytics request reference
Core request fields include:
| Field | Purpose |
|---|---|
startDate, endDate |
Required inclusive dates in YYYY-MM-DD, interpreted in Pacific Time |
dimensions |
date, hour, query, page, country, device, or searchAppearance, subject to data-state and combination rules |
type |
web, image, video, news, discover, or googleNews |
dimensionFilterGroups |
AND filter groups for supported dimensions and operators |
aggregationType |
auto, byPage, byProperty, or the specialized supported News Showcase aggregation |
rowLimit |
1–25,000 rows in one response; default 1,000 |
startRow |
Zero-based pagination offset |
dataState |
final, all for fresh data, or hourly_all with the hour dimension |
Results are normally sorted by clicks descending. When grouped by date, they are sorted chronologically. Ties have arbitrary order, so offsets are not a durable incremental cursor if the underlying data is still changing.
Row limits are not quota
Three separate limits are often confused:
- Response size:
rowLimitcan request at most 25,000 rows per API response. - Search Analytics exposure: the method exposes at most 50,000 rows per day per search type, sorted by clicks.
- Request quota: rate and load limits govern how often and how expensively the API can be queried.
Pagination cannot recover rows beyond the 50,000-per-day-per-search-type exposure. Adding page and query detail can cause additional data loss. For the most complete ongoing Performance dataset, configure BigQuery bulk export; anonymized queries remain excluded there too.
Published request quotas
Search Analytics
| Scope | Published request limit |
|---|---|
| Per site | 1,200 queries per minute |
| Per user | 1,200 queries per minute |
| Per project | 40,000 queries per minute |
| Per project | 30,000,000 queries per day |
Search Analytics also has short-term load quota measured in 10-minute windows and long-term load quota measured in one-day windows. Google does not publish numeric load units. A request can therefore receive quota exceeded even when the visible request-rate counts are below the table above.
URL Inspection
| Scope | Per minute | Per day |
|---|---|---|
| Per site | 600 | 2,000 |
| Per project | 15,000 | 10,000,000 |
The per-site daily limit is normally the practical constraint for a batch inspection. At 2,000 URLs per property per day, URL Inspection is a targeted diagnostic service, not a full-site crawling API.
Sites, Sitemaps, and other resources
| Scope | Published limit |
|---|---|
| Per user | 20 queries per second |
| Per user | 200 queries per minute |
| Per project | 100,000,000 queries per day |
Monitor actual use in Google Cloud Console → APIs & Services → Search Console API → Quotas. Quotas can apply simultaneously; the first one reached blocks the request.
What makes a Search Analytics query expensive
Google identifies these load drivers:
- grouping or filtering by page;
- grouping or filtering by query;
- combining page and query, which is most expensive;
- long date ranges;
- repeatedly requesting the same historical period.
If short-term load is exceeded, wait at least 15 minutes and spread requests across the day. If one request still fails after the wait, reduce long-term load by shortening the date range and removing page/query grouping or filters.
Efficient extraction pattern
- Query finalized data in one-day windows, normally after its expected publication delay.
- Choose property or page aggregation deliberately.
- Request only required dimensions and metrics.
- Use
rowLimit: 25000and increasestartRowby 25,000 until the response has no rows. - Run separate requests for each required search type.
- Cache finalized responses; do not re-download unchanged months.
- Re-query recent preliminary dates only when the workflow explicitly needs fresh data.
- Apply exponential backoff with jitter for retryable server and quota responses, but do not retry an invalid request unchanged.
Search appearance requires two steps
The API does not return searchAppearance alongside other dimensions in the first discovery request. Google documents this workflow:
- Query with
searchAppearanceas the only dimension to discover values present for the property. - For each required value, send another request filtering by that appearance and group by the desired dimensions.
Do not hardcode a global appearance list. Availability is property- and date-dependent, and values are retired over time. See Search appearance reference.
Error triage
| Symptom | First check |
|---|---|
401 |
Expired/invalid access token, wrong audience, or missing OAuth authorization |
403 |
Property permission, OAuth scope, API enablement, or quota details in the error body |
400 |
Property identifier, date range, dimension combination, filter operator, aggregation type, or encoded URL |
Empty rows |
No exposed rows for the scope, pagination past the result, wrong property/search type, or privacy/top-row effects |
quota exceeded |
Request-rate quota and Search Analytics load quota; the message is shared across quota types |
| Inspection result differs from live page | API returns indexed evidence, not an on-demand live test |
Automation boundary
SearchConsole.ai can use read-only Search Analytics, Sites, Sitemaps, and URL Inspection operations for properties the user can access. It does not submit or delete sitemaps, add or remove properties, request indexing, or modify Search Console.
Related content
- Search Console API: complete guide
- Pagination, quotas & data states
- GSC UI vs API vs BigQuery
- Report completeness & row limits