---
title: "Google Search Console Export Limits"
description: "Search Console UI exports contain up to 1,000 rows. The Search Analytics API returns 25,000 rows per request and exposes up to 50,000 rows per data day and search type."
canonical_url: "https://gscdump.com/learn-google-search-console/limits/export-row-limits"
last_updated: "2026-07-20"
---

Three separate limits are easy to mix up: the UI export cap, the API's per-request limit, and the number of rows Search Console makes available for one data day. That 50,000-row data ceiling is not a request quota or a cap on everything you can download in a day.

## The Export Limits

### UI Export: Up to 1,000 Rows

Google says a report download is [truncated to 1,000 representative rows](https://support.google.com/webmasters/answer/12919797). For a small property, that might be all the available rows. For a larger property, chart totals can include data that is not present in the exported table.

The limit applies to the data currently shown, including the selected filters and grouping. It does not mean that every Search Console export contains exactly 1,000 rows.

### API: 25,000 Rows Per Request

The [`searchAnalytics.query` method](https://developers.google.com/webmaster-tools/v1/searchanalytics/query) accepts a `rowLimit` from 1 to 25,000 and a zero-based `startRow` offset. You can paginate by increasing `startRow` until a response contains fewer rows than requested.

Google also warns that the API is bounded by Search Console's internal limitations and returns top rows rather than guaranteeing every possible row.

### API Data Ceiling: 50,000 Rows Per Data Day

For data grouped by query or URL, the [upper limit available through the API](https://developers.google.com/webmaster-tools/v1/how-tos/all-your-data#data-limits) is 50,000 rows for each data day, property, and search type. Google notes that the full 50,000 might not be available in every case.

Do not confuse that data ceiling with [API usage quotas](https://developers.google.com/webmaster-tools/limits). Search Analytics also has load and request-rate quotas, including 1,200 queries per minute per site and per user.

## Why Detailed Rows Can Be Missing

Two mechanisms matter:

1. **Anonymized queries.** Search Console omits some query text to protect user privacy. Those impressions and clicks can still contribute to unfiltered chart totals.
2. **Data truncation.** Search Console stores and serves the most important detail rows within its internal limits, so the UI and API do not guarantee a complete list of query or URL combinations.

Calling this "sampling" blurs two different behaviors. Google's documentation describes privacy filtering and row truncation, while treating the remaining rows as representative.

Requests that do not include a query or URL dimension, such as a country-only or device-only breakdown, are not affected by the 50,000-row query/URL limit.

## Workarounds

### 1. Query One Date at a Time

The 50,000-row ceiling applies independently to each date. Narrow date ranges make pagination and gap detection easier and prevent rows from different dates from competing in one combined result.

The theoretical maximum across 30 data dates is:

```text
50,000 rows/date × 30 dates = 1,500,000 rows
```

You still cannot recover rows that Search Console omitted within an individual date. Date-by-date queries only retrieve the available rows separately for each date.

### 2. Request Only the Dimensions You Need

Every additional dimension increases the number of distinct combinations. Query, page, country, and device together can produce far more rows than query alone. Use separate, purpose-built extracts when a fully combined table is unnecessary.

### 3. Use 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. The export's [schema](https://support.google.com/webmasters/answer/12917991) includes anonymized-query aggregates with blank query strings, but the original query text remains unavailable.

You need a Google Cloud project with billing enabled. The first export contains data for the [day of that export](https://support.google.com/webmasters/answer/12917675), not the day you began setup, and it does not backfill earlier dates. Storage or query charges apply above BigQuery's free usage allowance.

### 4. Archive Available API Rows Continuously

A daily API sync does not bypass Google's 50,000-row-per-date ceiling. It does preserve the rows that Google makes available before they age out of the 16-month reporting window, and it makes missing or failed dates easier to retry.

## How gscdump Handles the Limit

For Pro accounts, gscdump's hosted sync queries bounded date ranges, paginates at 25,000 rows per request, and archives the returned analytics tables in Cloudflare R2 using Iceberg. The initial import targets up to 180 days. Older available dates can be backfilled separately, and recent dates are fetched again while Google finalizes them.

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.

Later analysis is no longer constrained by the UI's 1,000-row export. Google's API limits still apply, so the archive cannot reconstruct anonymized query text or detail rows Google withheld.

## Comparison

<table>
<thead>
  <tr>
    <th>
      Method
    </th>
    
    <th>
      Search Console row coverage
    </th>
    
    <th>
      History
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Search Console UI
    </td>
    
    <td>
      Up to 1,000 representative rows per report export
    </td>
    
    <td>
      Rolling 16 months
    </td>
  </tr>
  
  <tr>
    <td>
      Search Analytics API
    </td>
    
    <td>
      Up to 25,000 rows per request; up to 50,000 rows per data day, property, and search type
    </td>
    
    <td>
      Rolling 16 months
    </td>
  </tr>
  
  <tr>
    <td>
      BigQuery bulk export
    </td>
    
    <td>
      Not subject to the API's daily row limit; anonymized aggregates included with blank query strings
    </td>
    
    <td>
      From the first export; retained according to BigQuery settings
    </td>
  </tr>
  
  <tr>
    <td>
      gscdump stored sync
    </td>
    
    <td>
      Rows available from the Search Analytics API
    </td>
    
    <td>
      Pro: up to 180 days initially, optional older backfills, then daily syncs
    </td>
  </tr>
</tbody>
</table>

## Which Limit Are You Hitting?

The UI limit matters whenever a report has more than 1,000 possible rows. The API's daily data ceiling mainly affects properties with many query or URL combinations. Traffic volume alone does not determine whether a property will hit it; the selected dimensions and the diversity of the data matter too.

If an API page returns fewer than 25,000 rows, pagination for that request is complete. That does not prove that Search Console retained every possible detail row, because privacy filtering and internal truncation happen before the response is returned.

## Related Articles

- [16-Month Data Limit](/learn-google-search-console/limits/16-month-data-retention): Preserve performance data before it ages out
- [BigQuery Alternative](/learn-google-search-console/limits/bigquery-alternative): Compare BigQuery with API-based archiving
- [GSC API Rate Limits](/learn-google-search-console/api/rate-limits): Understand request and load quotas
- [GSC API Query Builder](/learn-google-search-console/api/query-builder): Build and paginate Search Analytics queries
