---
title: "GSC 1,000-Row Limit: How to Get More Keyword Data"
description: "Google Search Console report exports are limited to 1,000 representative rows. Learn how the API, BigQuery, and automated archives provide more data."
canonical_url: "https://gscdump.com/learn-google-search-console/limits/1000-row-limit"
last_updated: "2026-07-20"
---

Google Search Console report downloads contain [up to 1,000 representative rows](https://support.google.com/webmasters/answer/12919797). If a report has more rows, its chart totals can include clicks and impressions that are not itemized in the exported table.

## What the Limit Means

Google does not describe the export as a guaranteed list of the 1,000 highest-traffic queries. It calls the rows representative examples. Sorting or filtering the report can change what you are analyzing, but it does not increase the export ceiling.

For example, if a query report contains 15,000 available rows and an export contains 1,000 of them, that file contains at most:

```text
1,000 ÷ 15,000 = 0.0667, or 6.67% of the rows
```

That percentage says nothing about the share of clicks or impressions represented. Higher-volume rows can account for a much larger share of the totals.

Two other mechanisms can also hide query detail:

- **Anonymized queries:** Google withholds some query text for privacy, although its metrics can contribute to unfiltered chart totals.
- **Internal data truncation:** Search Console stores and returns top data rows rather than guaranteeing every possible query or URL combination.

No export method can reconstruct anonymized query text.

## Method 1: Search Analytics API

The [`searchAnalytics.query` endpoint](https://developers.google.com/webmaster-tools/v1/searchanalytics/query) accepts up to 25,000 rows per request:

```bash
curl -X POST \
  'https://www.googleapis.com/webmasters/v3/sites/https%3A%2F%2Fexample.com%2F/searchAnalytics/query' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "startDate": "2026-06-01",
    "endDate": "2026-06-30",
    "dimensions": ["query", "page"],
    "rowLimit": 25000,
    "startRow": 0
  }'
```

Paginate by increasing `startRow`:

```json
{ "startRow": 0, "rowLimit": 25000 }
{ "startRow": 25000, "rowLimit": 25000 }
```

Stop when a response contains fewer rows than requested. If the result ends exactly on a 25,000-row boundary, one additional request will return an empty response.

### The 50,000-Row Data Ceiling

The API exposes [at most 50,000 rows](https://developers.google.com/webmaster-tools/v1/how-tos/all-your-data#data-limits) for each data day, property, and search type when query or URL dimensions are involved. The ceiling limits available detail; API calls do not consume it as a daily allowance.

Querying one date at a time can retrieve up to the available limit for every date. Across the 28 dates in February 2026, the theoretical maximum is:

```text
50,000 rows/date × 28 dates = 1,400,000 rows
```

One-date-at-a-time queries still cannot bypass truncation within a date.

### API Request Quotas

The data ceiling is separate from the [Search Console API usage quotas](https://developers.google.com/webmaster-tools/limits). Search Analytics currently allows 1,200 queries per minute per site and per user, with additional per-project and load quotas.

## Method 2: BigQuery Bulk Data Export

Google's [BigQuery bulk export](https://support.google.com/webmasters/answer/12918484) is not subject to the Search Analytics API's daily row limit. Its [schema](https://support.google.com/webmasters/answer/12917991) includes anonymized-query aggregates with blank query strings, while the original query text remains unavailable.

Plan for the following:

- It starts with the day of the first export and does not backfill older dates.
- It requires a Google Cloud project with billing enabled.
- Analysis usually involves SQL or a connected reporting tool.
- Storage and query usage above BigQuery's free allowance is billable.

Use BigQuery when more complete forward data matters more than backfilling the current 16-month window.

## Method 3: Automated API Archive

An automated archive fetches bounded date ranges from the Search Analytics API and stores the returned rows in a database or data lake. It can backfill dates that are still available, detect gaps, and preserve rows beyond 16 months.

gscdump's stored-data sync follows this model. For Pro accounts, the initial hosted import targets up to 180 days, and separate backfills can request older dates that Google still exposes. The sync paginates at 25,000 rows per request, fetches recent dates again, and stores analytics tables in Cloudflare R2 using Iceberg. Its API and MCP tools query the archive without the Search Console interface's 1,000-row export cap.

Free accounts can run supported reports live against Google, but they do not receive a hosted stored-history sync. The MIT-licensed CLI offers a separate local sync.

The source limitations still apply. gscdump cannot recover anonymized query text or rows that Search Console did not return through the API.

## Comparison

<table>
<thead>
  <tr>
    <th>
      Method
    </th>
    
    <th>
      Detail available
    </th>
    
    <th>
      Backfill
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Search Console UI
    </td>
    
    <td>
      Up to 1,000 representative rows
    </td>
    
    <td>
      Any selectable date inside 16 months
    </td>
  </tr>
  
  <tr>
    <td>
      Search Analytics API
    </td>
    
    <td>
      Up to 25,000 rows per request and 50,000 per data day, property, and search type
    </td>
    
    <td>
      Dates still inside 16 months
    </td>
  </tr>
  
  <tr>
    <td>
      BigQuery bulk export
    </td>
    
    <td>
      Not subject to the API's daily row limit
    </td>
    
    <td>
      No; starts with first export
    </td>
  </tr>
  
  <tr>
    <td>
      gscdump stored sync
    </td>
    
    <td>
      Rows available from the Search Analytics API
    </td>
    
    <td>
      Pro: up to 180 days initially, with optional older backfills
    </td>
  </tr>
</tbody>
</table>

## FAQ

### How do I know whether the UI export was truncated?

If the export contains 1,000 table rows, treat it as potentially truncated. Google does not expose a complete count of all omitted query rows in the UI, and the chart totals can include data that is absent from the table.

### Can I get more than 1,000 rows without writing code?

Yes. Search Console's BigQuery bulk export and managed API-sync products avoid manual API programming. BigQuery requires Google Cloud setup and normally SQL or a reporting tool; managed sync products handle the extraction and storage layer.

### Does the 1,000-row limit apply to every Search Console report?

No. It is the general limit for report tables and downloads, but some tools use different limits. For example, the [Links report can export up to 100,000 rows](https://support.google.com/webmasters/answer/9049606) for some link datasets. Low-cardinality breakdowns such as device can also contain all available values well below 1,000 rows.

### What about anonymized queries?

Search Console omits some query text to protect privacy. Those metrics can appear in unfiltered totals, but the query strings are not recoverable through the UI, Search Analytics API, or BigQuery bulk export.

### Is the Search Console API free?

Yes. [Search Console API use is free of charge](https://developers.google.com/webmaster-tools/pricing), although request-rate, daily project, and query-load quotas apply. OAuth authorization is required.

## Related Articles

- [GSC Export Row Limits](/learn-google-search-console/limits/export-row-limits): The full UI and API limit breakdown
- [BigQuery Alternative](/learn-google-search-console/limits/bigquery-alternative): Decide between bulk export and API archiving
- [16-Month Data Limit](/learn-google-search-console/limits/16-month-data-retention): Preserve performance history before it ages out
- [GSC API Authentication](/learn-google-search-console/api/authentication): Set up OAuth for API access
