Automate SEO Reporting with Search Console: API, Looker Studio

How to build a custom Google Search Console report and automate it: exports, Looker Studio, the API and BigQuery, with what each can and can't do.

By the MakeItFlow team Updated 12 min read
Share LinkedIn X Facebook WhatsApp
Automate SEO Reporting with Search Console: API, Looker Studio

Short answer: Search Console has no built-in custom report builder. To make a custom Google SEO report, filter and export the Performance report for one-off checks, use the free Looker Studio connector for a dashboard you design yourself, or pull raw rows through the Search Console API (or BigQuery bulk export) when you need full control and a permanent archive.

To automate SEO reporting, connect Google Search Console to something that pulls the data on a schedule. The options are the free Looker Studio connector, the Search Analytics API, the BigQuery bulk export, or a tool that emails you a summary. Archive the data as you go, because Search Console deletes anything older than 16 months.

Most small businesses don't need a data warehouse. They need a report that arrives every Monday, shows whether clicks went up or down, and points to the two or three things worth doing that week. This guide covers each automation route, what it costs, where it breaks, and how to add Bing to the same picture. If you only want the summary email, our free Search Console and Bing dashboard does that without code. It's covered further down.

If you're new to Search Console itself, start with our Search Console beginner's guide. This post assumes your property is verified and has a few weeks of data.

Key takeaways

  • Search Console keeps only 16 months of performance data, so anything you want to compare over longer periods has to be stored yourself.
  • The Search Analytics API returns up to 25,000 rows per request and Google caps performance data at 50,000 rows per day per search type per property.
  • The BigQuery bulk export is not capped at 50,000 rows a day but it does not backfill history, so start it early.
  • Bing Webmaster Tools has its own API, authenticated with OAuth or a per-user API key, and its query data updates weekly.

How to build a custom Google Search Console report

"Custom reporting" can mean three different things: a filtered view you save once, a dashboard laid out your own way, or a dataset you can slice however you like. Each route covers a different one.

Route What it can do What it can't do
Performance report filters and export Filter by query, page, country, device, search appearance and date; compare two periods; export to Google Sheets, Excel or CSV Exports stop at 1,000 rows; no saved layouts or scheduling; only 16 months of history
Looker Studio connector Free drag-and-drop dashboards with your own charts, filters, calculated fields (such as branded vs non-branded clicks) and scheduled PDF emails; can blend with Google Analytics or a Sheet Reads live from Search Console, so no archive beyond 16 months; anonymised queries are missing; large query-and-page tables can be slow
Search Console API Any combination of dimensions and filters, up to 25,000 rows per request, run on a schedule and stored wherever you like Needs code and authentication; capped at 50,000 rows per day per search type per property; no URL Inspection-style index data in the same call
BigQuery bulk export Every row Search Console has (except anonymised queries), queried with SQL, with no daily row cap Starts on the day you set it up with no backfill; BigQuery charges apply above the free tier; needs SQL skills

Which to choose:

  • One-off question ("which pages lost clicks after the update?"): filter the Performance report, compare the two date ranges and export.
  • A report someone reads every week: build it once in Looker Studio and schedule the email.
  • Long-term trends, or more rows than the interface shows: archive daily through the API, or turn on the bulk export.

A few build tips that save time whichever route you take:

  1. Separate branded and non-branded queries. In Looker Studio, a calculated field using CONTAINS_TEXT or a regular expression on your brand name splits them; in the Performance report, use a query filter with "Custom (regex)".
  2. Use fixed comparison periods, such as the last 28 days against the 28 days before, so every report is comparable.
  3. Report pages and queries separately. Totals by page and totals by query are calculated differently and won't add up to each other, which is expected rather than a bug.

The sections below go through each option in detail.

Why manual SEO reports stop working

Exporting a CSV from the Performance report each month works until it doesn't. The usual failure points:

  • The UI export is capped at 1,000 rows. On any site with a real long tail, you lose most of your queries.
  • The 16-month window. Search Console keeps 16 months of performance data. If you want to compare this November with November two years ago, you need your own copy.
  • Inconsistent filters. Someone exports "last 28 days", someone else uses calendar months, and the numbers stop being comparable.
  • Nobody opens it. A report that needs someone to remember to run it gets skipped in busy weeks.

Automation fixes all four. It pulls the same date ranges every time, keeps a permanent archive and sends the result to people without anyone having to ask.

Option 1: Looker Studio's Search Console connector

Looker Studio is Google's free dashboard tool, and it includes an official Search Console connector. You pick a property and choose one of two tables:

  • Site Impression aggregates by property. Use it for headline totals of clicks, impressions, CTR and position.
  • URL Impression aggregates by page. Use it for page-level reports. Its position and click figures are counted differently, so totals won't match the Site table exactly.

Once it's built, Looker Studio can email a PDF of the report on a schedule (Share, then Schedule delivery). For many small businesses that's the whole job: a one-page dashboard emailed to the owner every Monday at 8am.

Limits to know:

  • Data still comes live from Search Console, so you still only see 16 months.
  • Queries Google anonymises for privacy are missing, so query totals will be lower than page totals.
  • Large date ranges with query and page dimensions together can get slow.

Looker Studio is good for presentation. It doesn't archive anything, so pair it with one of the options below if history matters to you.

Option 2: the Search Analytics API

The Search Console API gives you the same performance data as raw rows. Key facts from Google's documentation:

Limit Value
Rows per request Up to 25,000 (default 1,000), paged with startRow
Data available Top rows only, capped at 50,000 rows per day per search type per property
Fresh data dataState: "all" includes incomplete recent days
Dimensions date, hour, query, page, country, device, searchAppearance
Query quota 1,200 queries per minute per site and per user (usage limits)

A minimal request looks like this (using an OAuth access token with the webmasters.readonly scope):

curl -X POST \
  "https://www.googleapis.com/webmasters/v3/sites/sc-domain%3Aexample.com/searchAnalytics/query" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startDate": "2026-10-01",
    "endDate": "2026-10-14",
    "dimensions": ["date", "query"],
    "rowLimit": 25000,
    "startRow": 0
  }'

For a domain property the site URL is sc-domain:example.com, URL-encoded. For a URL-prefix property it's the full prefix, such as https://www.example.com/.

A sensible archive pattern

The most useful thing an API script can do is store one day at a time, every day:

  1. Each morning, request the day that is three days old. Google's final data typically lags by two to three days.
  2. Request ["date", "query", "page"] with paging until a page returns fewer rows than rowLimit.
  3. Append the rows to a database table, a Google Sheet, or dated CSV files in cloud storage.
  4. Never overwrite. If you re-run a day, replace that day only.

Run this from a cron job on a server you already have, or from a scheduled GitHub Actions workflow. After a year you'll have a permanent archive that outlives the 16-month window. You can then query it for year-on-year comparisons, seasonal patterns and the slow effect of core updates.

Authentication without the pain

For a script that runs unattended, the simplest route is a service account. Create one in Google Cloud, enable the Search Console API, then add the service account's email address as a user on the property in Search Console (Settings, then Users and permissions). Restricted permission is enough for reading performance data. Keep the JSON key outside your code repository and out of anything public.

Option 3: BigQuery bulk data export

Search Console can export performance data to BigQuery every day. According to Google's help page:

  • The export contains all the performance data available to Search Console except anonymised queries, and it isn't subject to the 50,000-rows-per-day cap the API has.
  • The first export arrives up to 48 hours after setup.
  • It doesn't backfill. You get data from the setup date onwards. For anything earlier you need the API or the UI.
  • BigQuery storage and query costs apply above Google Cloud's free usage tier.

For a small site the free tier usually covers it, but set a partition expiration and a budget alert in Google Cloud so a careless query can't run up a bill. The bulk export makes most sense for large sites, where the 50,000-row daily cap actually hides data. For a typical local business site, the API archive in Option 2 is simpler.

Whichever you choose, turn it on now. Neither method can recover data Search Console has already deleted.

Adding Bing Webmaster Tools

Bing powers results in more places than Bing.com, including Copilot and partner engines that use its index. Its data deserves a place in the report. Set up the account first using our Bing Webmaster Tools setup guide.

The Bing Webmaster Tools API accepts OAuth 2.0 (recommended) or an API key. The key is generated in Settings, then API Access. There's one key per user, and it works for every site that user has verified. A query-stats request looks like this:

curl "https://ssl.bing.com/webmaster/api.svc/json/GetQueryStats?siteUrl=https://www.example.com/&apikey=$BING_KEY"

The response lists queries with clicks, impressions and average positions. Microsoft's documentation notes that this data is updated weekly, so a daily Bing pull adds nothing. Fetch it once a week and store it next to your Google data. Treat the key like a password: if it leaks, delete it in Bing Webmaster Tools and generate a new one.

What a useful automated report contains

Automation makes it easy to send too much. A report people actually read usually has:

  1. Clicks and impressions this week vs last week, and vs the same week last year if you've archived it.
  2. Tracked keywords that moved by more than a couple of positions. For how to read Search Console positions honestly, see free rank tracking with Search Console.
  3. Quick wins: queries in positions 8 to 20 with meaningful impressions.
  4. Pages losing clicks, so a drop is noticed in days rather than months. Our guide on recovering from a traffic drop covers what to do next.
  5. One line on indexing or technical problems, if any appeared.

Leave out vanity totals that never lead to a decision.

The no-code option: our free dashboard and weekly email

If you'd rather not maintain scripts, the MakeItFlow Search Console dashboard is free on every plan, including the free account. It connects with read-only access (webmasters.readonly). It can't change anything in your Search Console. It gives you:

  • Clicks, impressions, CTR and position for the last 7, 28 or 90 days, compared with the previous period.
  • A free rank tracker for up to 50 keywords per site, recording Google's own daily average position and backfilled three months on the first day.
  • Quick wins (positions 8 to 20) and page-one titles with unusually low CTR.
  • A weekly email every Monday with clicks against the week before, the tracked keywords that moved, and that week's quick wins.
  • Bing clicks, impressions, keywords and pages next to Google once you add your free Bing API key.

It's a reporting layer, not a data warehouse. If you need years of raw rows for your own analysis, use the API archive or BigQuery as well. Many teams run both: the email for the weekly glance, and the archive for the quarterly deep dive.

Keep the technical side in the report

Search performance often drops for technical reasons that the Performance report only shows after the fact: a sitemap pointing at redirected URLs, a robots.txt change, or a template that removed titles. It's worth adding a technical check to the same weekly routine. Run the XML sitemap checker after deployments. On paid plans, MakeItFlow website monitoring re-runs a full site audit (speed, SEO, security, DNS and email) daily or weekly and emails the score change after each scan. It doesn't use Search Console data and isn't uptime monitoring, but it catches technical regressions that the Performance report would only show weeks later as lost clicks. If you want audits to run on a schedule too, our guide to automating website audits covers Lighthouse CI, the PageSpeed Insights API and webhooks.

FAQ

Can you create custom reports in Google Search Console itself?

Not in the sense of a saved, scheduled layout. You can filter, compare periods and export the Performance report, but each view has to be set up again. For a reusable custom report, connect Search Console to Looker Studio or pull the data through the API.

How far back does Google Search Console data go?

Search Console keeps 16 months of performance data. Anything older is deleted, and neither the API nor the BigQuery export can recover it. To compare longer periods, archive the data yourself, starting as soon as possible.

Why doesn't my Looker Studio report match the Search Console interface?

The Site Impression and URL Impression tables count position and clicks differently, and anonymised queries are left out of query-level views. Date ranges and time zones also matter, because Search Console reports in Pacific Time. Compare like with like: the same table, dimension and dates.

Is the Search Console API free?

Yes. There's no charge for the API itself, within Google's usage limits of 1,200 queries per minute per site and per user. The BigQuery bulk export is different: storage and queries are billed above Google Cloud's free usage tier.

How do I get more than 1,000 rows out of Search Console?

The UI export stops at 1,000 rows. Use the API with rowLimit set to 25,000 and page through results with startRow, or set up the BigQuery bulk export. Google still caps the API at 50,000 rows per day per search type per property, which only affects larger sites.

Can I automate Bing Webmaster Tools reports too?

Yes. Generate an API key in Bing Webmaster Tools under Settings, then API Access, or use OAuth 2.0, and call methods such as GetQueryStats. Bing's query data updates weekly, so a weekly pull is enough.

Does connecting a reporting tool give it control of my Search Console?

Only if you grant more than read access. Tools that request the webmasters.readonly scope can read performance data but can't submit sitemaps, remove URLs or change settings. Check the scope on Google's consent screen before you approve it.

#search console #seo reporting #looker studio #bing webmaster tools

More guides for your industry

Free checklist (PDF)

Free marketing agencies website checklist

31 practical checks for marketing agencies: website speed and mobile, Google Business Profile and reviews, email security, booking and enquiry handling, and AI search visibility. Each one says why it matters, and many link to a free tool that checks it.

We email you the PDF and nothing else unless you tick the box. See the privacy policy.

Written by the MakeItFlow team

We build the website audit these guides are based on. Every fact is checked against the primary sources listed above and this guide was last reviewed on 31 October 2026 . How we research and check

Share LinkedIn X Facebook WhatsApp

Check your own site in 30 seconds

Run a free audit covering speed, SEO, DNS, email authentication and security headers — and get a prioritised fix list.

Weekly newsletter

One practical website fix, every week

New guides on speed, SEO, email deliverability and security — straight to your inbox. No spam, unsubscribe in one click.

Keep reading