Automating GSC Data to Google Sheets (Step-by-Step)
Connect Google Search Console to Sheets for automated reporting. Two methods: Google's add-on and Apps Script.
Manually exporting GSC data every week gets old fast. Connecting GSC to Google Sheets automates the process: your data updates automatically, and you can build dashboards on top of it.
Which method to choose:
- Use the add-on if you need occasional reports, don’t want to write code, and 25,000 rows is enough.
- Use Apps Script if you need automated scheduled pulls, more than 25,000 rows (via pagination), or custom data transformations.
When in doubt, start with the add-on. You can always migrate to Apps Script if you hit its limits.
Two main approaches: Use an official add-on (easier) or write Apps Script (more control). Here’s how to do both.
Method 1: Google’s Search Console add-on
Google offers a free Sheets add-on that pulls GSC data directly:
- Open Google Sheets and create a new spreadsheet
- Go to Extensions → Add-ons → Get add-ons
- Search for “Search Console” and install the official Google add-on
- Authorize the add-on to access your Search Console data
- Go to Extensions → Search Console → Open sidebar
- Configure your query:
- Select your property
- Choose date range
- Select dimensions (queries, pages, countries, devices)
- Select metrics (clicks, impressions, CTR, position)
- Click “Request Data”
Limitations:
- 25,000 row limit (better than web UI’s 1,000)
- Still not all your data if you have more rows
- Manual refresh required (no auto-scheduling)
Method 2: Apps Script (more control)
For automated, scheduled data pulls with full control:
- Open Google Sheets → Extensions → Apps Script
- Enable the Search Console API in your Google Cloud project
- Write script to query the API and populate sheets
- Set a trigger to run daily/weekly
Basic script structure:
function getSearchConsoleData() {
var siteUrl = 'https://yoursite.com';
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var request = {
startDate: '2026-03-01',
endDate: '2026-03-27',
dimensions: ['query'],
rowLimit: 5000
};
var response = SearchConsole.SearchAnalytics.query(request, siteUrl);
// Write data to sheet
var rows = response.rows || [];
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
sheet.getRange(i + 2, 1, 1, 5).setValues([[
row.keys[0], row.clicks, row.impressions, row.ctr, row.position
]]);
}
}
Setting up the trigger:
- In Apps Script, go to Triggers (clock icon)
- Add trigger → Select function → Time-driven → Weekly/Daily
- Your data updates automatically
Which method to choose
| Factor | Add-on | Apps Script |
|---|---|---|
| Setup difficulty | Easy | Medium |
| Row limit | 25,000 | 25,000 per request (can paginate) |
| Auto-scheduling | No | Yes |
| Customization | Limited | Full control |
| Best for | Quick reports | Automated dashboards |
For occasional reporting, use the add-on. For production dashboards, invest in Apps Script.
Working around row limits
Even with the API, you’re limited to 25,000 rows per request. Workarounds:
- Filter by date: pull smaller date ranges and combine
- Filter by dimension: pull queries separately from pages
- Use multiple requests: paginate through results
See getting past the 1,000-row limit for more strategies.
Alternatives to building yourself
If Apps Script feels like too much work:
- Looker Studio: connects directly to GSC for visualizations
- Third-party add-ons: various quality, some paid
- Dedicated tools: SerpDelta connects to GSC and tracks changes automatically without spreadsheet setup
Building your own gives control but requires maintenance. Choose based on your time and technical comfort.
Related articles
On this page