# Compare Search Periods

`gsc_compare-search-periods` · Google Search Console MCP tool · Search Analytics

Compare search performance between two date ranges for a Search Console property, to spot period-over-period changes in clicks, impressions, CTR, and position. Data typically lags live traffic by about 2 days. Read-only.

## Google Search Console Frequently Asked Questions

**What does the Compare Search Periods tool do?**

This page documents the Compare Search Periods tool (`gsc_compare-search-periods`). Compare search performance between two date ranges for a Search Console property, to spot period-over-period changes in clicks, impressions, CTR, and position. Data typically lags live traffic by about 2 days. Read-only. It is one of the Google Search Console Search Analytics tools, invoked through your firm's Weave MCP connection and available to members whose access level permits it.

**What do I need to compare two periods?**

siteUrl plus all four date bounds, period1Start, period1End, period2Start, period2End, are required; dimensions and rowLimit are optional and default to the partner's grouping (observed: a single query dimension).

**What is the Google Search Console integration?**

The Google Search Console integration connects your firm's Google Search Console account to Weave. Google Search Console is Google's free tool for tracking how your sites perform in Google Search. This integration lets your AI workflows read that data, search traffic and rankings, index coverage and URL inspection, and sitemap status, for the properties your connected Google account can access. It groups 10 tools into 4 categories, exposed through your firm's Weave MCP connection and filtered per member by access level.

**How does my firm connect Google Search Console to Weave?**

An admin authorizes a Google account with access to your Search Console properties once, via Google's OAuth consent flow in the Weave console. Every firm member then works through that single connection, there is no per-member Google sign-in.

**Why did a tool return no data for our site?**

Every gsc tool that takes a siteUrl requires the connected Google account to be a verified owner or user of that property in Search Console, if it can't verify the property, the tool returns no data rather than an error. gsc_list-properties is the exception: it takes no input and simply lists every property the connected account can access, so start there to get the right siteUrl.

**Why does the data look a couple of days behind our live traffic?**

Search Console's performance data typically lags live traffic by about two days; that's a Google-side reporting delay, not a Weave sync issue.

**Can these tools change anything in Search Console?**

No. Every gsc tool is read-only, none of them can submit URLs, edit sitemaps, or change any Search Console setting.

## Related
- /integrations/gsc/search-analytics/get-performance-overview/
- /integrations/gsc/search-analytics/get-advanced-search-analytics/
- /integrations/ga4/traffic/compare-periods/

## Input

- **siteUrl** `string` (required, min length: 1) — The Search Console property, exactly as it appears in Search Console — either an absolute URL-prefix property (e.g. https://www.example.com/, including any trailing slash) or a domain property (sc-domain:example.com). Forwarded verbatim, never normalized; use gsc_list-properties to see the connected account's exact property identifiers. If the connected Google account cannot verify this property, the partner returns no data rather than an error.
- **period1Start** `string(date)` (required, pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$) — Start of the first comparison period (YYYY-MM-DD).
- **period1End** `string(date)` (required, pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$) — End of the first comparison period (YYYY-MM-DD).
- **period2Start** `string(date)` (required, pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$) — Start of the second comparison period (YYYY-MM-DD).
- **period2End** `string(date)` (required, pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$) — End of the second comparison period (YYYY-MM-DD).
- **dimensions** `array` (min items: 1) — Which dimensions to break results down by (e.g. query, page). Omit to use the partner's default grouping (observed: a single `query` dimension).
  - **[]** `string` (enum: "query", "page", "country", "device", "date", "searchAppearance")
- **rowLimit** `integer` (>= 1, <= 25000) — Maximum number of rows to return (up to 25,000). Omit for the partner's default.

## Output

- **siteUrl** `string` (required) — The Search Console property.
- **period1** `object` (required) — The first comparison period.
  - **startDate** `string` — Period start (YYYY-MM-DD).
  - **endDate** `string` — Period end (YYYY-MM-DD).
- **period2** `object` (required) — The second comparison period.
  - **startDate** `string` — Period start (YYYY-MM-DD).
  - **endDate** `string` — Period end (YYYY-MM-DD).
- **totals** `object` (required) — Aggregated period-over-period deltas.
  - **clicks** `object` (required) — Clicks delta across periods.
    - **p1** `number` — Value in period 1.
    - **p2** `number` — Value in period 2.
    - **change** `number` — Absolute change between the two periods, per the partner's sign convention (observed p1 − p2).
    - **pctChange** `number` — Percentage change between the two periods, per the partner's sign convention.
  - **impressions** `object` (required) — Impressions delta across periods.
    - **p1** `number` — Value in period 1.
    - **p2** `number` — Value in period 2.
    - **change** `number` — Absolute change between the two periods, per the partner's sign convention (observed p1 − p2).
    - **pctChange** `number` — Percentage change between the two periods, per the partner's sign convention.
  - **ctr** `object` (required) — CTR delta across periods.
    - **p1** `number` — Value in period 1.
    - **p2** `number` — Value in period 2.
    - **change** `number` — Absolute change between the two periods, per the partner's sign convention (observed p1 − p2).
    - **pctChange** `number` — Percentage change between the two periods, per the partner's sign convention.
  - **position** `object` (required) — Average-position delta across periods.
    - **p1** `number` — Value in period 1.
    - **p2** `number` — Value in period 2.
    - **change** `number` — Absolute change between the two periods, per the partner's sign convention (observed p1 − p2).
    - **pctChange** `number` — Percentage change between the two periods, per the partner's sign convention.
- **rows** `array` (required) — Per-key comparison rows.
  - **[]** `object`
    - **keys** `array` (required) — Dimension values for the row.
      - **[]** `string`
    - **p1** `object` — Row metrics in period 1.
      - **clicks** `number` — Clicks.
      - **impressions** `number` — Impressions.
      - **ctr** `number` — Click-through rate.
      - **position** `number` — Average position.
    - **p2** `object` — Row metrics in period 2.
      - **clicks** `number` — Clicks.
      - **impressions** `number` — Impressions.
      - **ctr** `number` — Click-through rate.
      - **position** `number` — Average position.
    - **clicksChange** `number` — Absolute click change between the two periods for the row, per the partner's sign convention (observed p1 − p2).
