Automate Google Search Console Reporting with n8n

Save hours each week by automating Google Search Console data export directly into Google Sheets with n8n. This workflow fetches keyword, page, and date-based search metrics, transforming raw API data into actionable insights for SEO professionals and marketers.
httpRequest
googleSheets
splitOut
+3
Workflow Identifier: 2290
NODES in Use: splitOut, set, httpRequest, scheduleTrigger, googleSheets, stickyNote

Press CTRL+F5 if the workflow didn't load.

Learn how to Build this Workflow with AI:

Visit through Desktop for Best experience

1. Opening Problem Statement

Meet Sarah, an SEO specialist managing three websites for her clients. Every week, Sarah spends hours manually downloading performance data from Google Search Console, organizing it in spreadsheets, and updating reports for her team. This process is error-prone, tedious, and time-consuming — often taking Sarah 4 to 6 hours weekly plus delays due to manual oversight.

What Sarah really needs is a reliable, hands-free way to fetch all her Search Console data — including keyword queries, page performance, and daily trends — and neatly organize it into Google Sheets for her reports. Without automation, repetitive manual exports drain her productivity and increase the risk of mistakes in SEO analysis.

2. What This Automation Does

This n8n workflow automates the retrieval and logging of Google Search Console data directly into Google Sheets. When run, it performs these key outcomes:

  • Queries Search Console for the last 30 days of keyword-level performance metrics (clicks, impressions, click-through rate, position).
  • Retrieves page-level analytics data separately for the same period.
  • Extracts daily performance data to track trends over time.
  • Transforms nested JSON responses, splitting complex arrays into individual records.
  • Organizes and appends or updates data into three separate Google Sheets tabs: Queries, Pages, and Dates.
  • Runs fully scheduled based on your preferred interval, requiring zero manual intervention after setup.

This workflow can save you 4+ hours per week, eliminate manual errors, and provide SEO teams with up-to-date, automatically refreshed reports.

3. Prerequisites ⚙️

  • An n8n account or self-hosted instance (for automation orchestration) 🔌
  • Google OAuth2 credentials with access to Google Search Console and Google Sheets APIs 🔑
  • Google Search Console property configured for your domain (with appropriate permissions) 📧
  • Google Sheets spreadsheet accessible and shared with your Google account 📊

4. Step-by-Step Guide

Step 1: Create the Workflow and Schedule Trigger

Open your n8n editor and create a new workflow. Add a Schedule Trigger node to initiate the workflow automatically based on a chosen interval (e.g., daily or weekly). Configure the interval by clicking Schedule Trigger → Rule → Interval and define your desired frequency. You should see this node trigger the workflow accordingly.

Common Mistake: Forgetting to enable the node after setting the schedule, so the workflow never runs.

Step 2: Define Your Domain and Date Range

Add a Set node named Set your domain. Here, assign a domain string and a days number value (typically 30) for how far back you want to pull data from Search Console. For example:

domain = "funautomations.io"
days = 30

This node outputs these values to be used in subsequent HTTP requests.

Common Mistake: Misspelling your domain or using the wrong domain format (should be exactly as registered in Search Console).

Step 3: Query Google Search Console Reports

Add three HTTP Request nodes named Get query Report, Get Page Report, and date. Each will POST to Search Console’s API endpoint for your domain with JSON bodies specifying different “dimensions”: “query”, “page”, and “date” respectively.

Set the request URLs dynamically using the expression:

=https://www.googleapis.com/webmasters/v3/sites/sc-domain:{{$json.domain}}/searchAnalytics/query

Use the JSON body to specify startDate as today, endDate as today minus the number of days, and dimension accordingly. For instance, in Get query Report, the body is:

{
  "startDate": "{{ $now.format('yyyy-MM-dd') }}",
  "endDate": "{{ $now.minus($json.days, 'days').format('yyyy-MM-dd') }}",
  "dimensions": ["query"]
}

Authentication: Use Google OAuth2 credentials configured with required scopes like https://www.googleapis.com/auth/webmasters.

Common Mistake: Not setting the correct OAuth scopes or credential type, leading to 403 Forbidden errors.

Step 4: Split API Response Rows for Processing

For each HTTP Request node’s response, add a Split Out node to split the “rows” array into individual JSON items for further processing. Configure to split out the rows field.

After splitting, add Set nodes (Edit Fields, Edit Fields1, Edit Fields2) to rename keys from the response and map metrics to readable fields such as “Keyword”, “clicks”, “impressions”, “ctr”, and “position” for queries; “page”, “clicks”, etc. for pages; and “date”, “clicks”, etc. for dates.

Common Mistake: Forgetting to split out rows before trying to access nested data leads to empty or incorrect data passed on.

Step 5: Append or Update Data in Google Sheets

Connect each Edit Fields node to a corresponding Google Sheets node:

  • Update queries to Sheets for keyword data
  • Update Pages to Sheets for page-level data
  • Update date report to sheets for daily trend data

Configure these nodes to your Google Sheets document URL and specify the sheet tabs (e.g., “Query”, “PAGES”, “Dates”). Use autoMapInputData to map incoming JSON fields to sheet columns. Set operation to append or update matching on unique fields (e.g., “Keyword”, “page”, or “date”) to keep your sheet fresh.

Common Mistake: Not sharing the spreadsheet with your service account or omitting permissions, leading to write failures.

5. Customizations ✏️

1. Adjust Date Range

Change the value of days in the Set your domain node to fetch more or fewer days of data. For example, set it to 7 to only get the last week’s data.

2. Add Additional Dimensions

Modify the JSON body in the HTTP Request nodes to add more dimensions like “country” or “device” to analyze segmented metrics. You would also need to handle the new structure downstream.

3. Customize Sheets Tabs and Columns

Change target sheets or add new columns in Google Sheets nodes to capture additional fields such as “device” or “query category” for deeper analysis.

4. Change Scheduling Frequency

Modify the Schedule Trigger node to a custom frequency such as hourly or monthly as per reporting needs.

5. Domain Parameter Automation

Instead of hardcoding the domain, use an input node or external API call to dynamically select domains, supporting multi-domain reports.

6. Troubleshooting 🔧

Problem: “403 Forbidden” Error on HTTP Requests

Cause: Invalid OAuth credentials or missing scopes.

Solution: Go to Credentials in n8n, verify your Google OAuth2 credentials include the required scopes for Search Console API, and reauthorize if needed.

Problem: No Data Appended in Google Sheets

Cause: Unauthorized spreadsheet access or incorrect sheet/tab configuration.

Solution: Ensure your Google Sheets is shared with your automation service account email. Double-check the documentId and sheetName in the Google Sheets nodes.

Problem: Empty or Missing Data After Split Out Node

Cause: Wrong field specified to split or API returning no results.

Solution: Confirm “rows” exist in the API response by checking via manual API call or activation of debug mode in n8n. Verify Split Out node is configured with fieldToSplitOut=rows.

7. Pre-Production Checklist ✅

  • Confirm Google OAuth2 credentials have correct scopes and are authorized.
  • Verify domain matches exactly in Search Console and in your workflow.
  • Ensure Google Sheets URLs and tabs match existing spreadsheets you have access to.
  • Run test executions via manual trigger to observe data flow and validate transformations.
  • Backup Google Sheets or create a copy before first automated writes to prevent data loss.

8. Deployment Guide

Activate the Schedule Trigger node to enable automated runs. Monitor execution logs regularly from the n8n dashboard for any errors related to API requests or sheet updates.

Set up notifications in n8n (optional) to alert if workflow failures occur for timely resolutions.

9. FAQs

Can I use this workflow with multiple domains?

Yes, with customization to set domain dynamically or duplicate the workflow per domain.

Does this workflow consume Google API quota?

Yes, each HTTP request counts towards your Google Search Console API limits. Use reasonable scheduling to avoid quota exhaustion.

Is my data secure using OAuth2?

OAuth2 is a secure standard for authentication. Keep your credentials private and restrict scopes to minimum necessary.

10. Conclusion

By implementing this n8n workflow, you’ve automated the extraction of critical SEO data from Google Search Console into Google Sheets. This saves you hours weekly, reduces errors, and delivers fresh, actionable insights to your SEO or marketing team without lifting a finger.

Consider expanding this workflow by integrating email alerts for significant performance changes or linking it with data visualization tools for richer analytics dashboards.

You’re now equipped to transform your SEO reporting with powerful automation — congratulations on this upgrade!

Promoted by BULDRR AI

Related Workflows

Automate Viral UGC Video Creation Using n8n + Degaus (Beginner-Friendly Guide)

Learn how to automate viral UGC video creation using n8n, AI prompts, and Degaus. This beginner-friendly guide shows how to import, configure, and run the workflow without technical complexity.
Form Trigger
Google Sheets
Gmail
+37
Free

AI SEO Blog Writer Automation in n8n (Beginner Guide)

A complete beginner guide to building an AI-powered SEO blog writer automation using n8n.
AI Agent
Google Sheets
httpRequest
+5
Free

Automate CrowdStrike Alerts with VirusTotal, Jira & Slack

This workflow automates processing of CrowdStrike detections by enriching threat data via VirusTotal, creating Jira tickets for incident tracking, and notifying teams on Slack for quick response. Save hours daily by transforming complex threat data into actionable alerts effortlessly.
scheduleTrigger
httpRequest
jira
+5
Free

Automate Telegram Invoices to Notion with AI Summaries & Reports

Save hours on financial tracking by automating invoice extraction from Telegram photos to Notion using Google Gemini AI. This workflow extracts data, records transactions, and generates detailed spending reports with charts sent on schedule via Telegram.
lmChatGoogleGemini
telegramTrigger
notion
+9
Free

Automate Email Replies with n8n and AI-Powered Summarization

Save hours managing your inbox with this n8n workflow that uses IMAP email triggers, AI summarization, and vector search to draft concise replies requiring minimal review. Automate business email processing efficiently with AI guidance and Gmail integration.
emailReadImap
vectorStoreQdrant
emailSend
+12
Free

Automate Email Campaigns Using n8n with Gmail & Google Sheets

This n8n workflow automates personalized email outreach campaigns by integrating Gmail and Google Sheets, saving hours of manual follow-up work and reducing errors in email sequences. It ensures timely follow-ups based on previous email interactions, optimizing communication efficiency.
googleSheets
gmail
code
+5
Free