Advanced & BigQuery

How to report on Google Search Console's URL Inspection API in Data Studio (free dashboard)

My free URL Inspection API Explorer dashboard and how to set it up: what Google's URL Inspection API returns, its quotas, how to export it with Screaming Frog, the custom fields (fixed for 2026) and how to read every section.

Lazarina Stoy·

How to Report on the URL Inspection API in Data Studio

Google’s Search Console connector for Data Studio (formerly Looker Studio) doesn’t include URL Inspection data, so the way to report on it is to crawl your site with the URL Inspection API switched on (in Screaming Frog or a similar tool), export the results to Google Sheets, and connect that Sheet to a dashboard. I built a free one for exactly this, and this tutorial walks through the API, the setup and how to read every section.

This covers:

  • what the URL Inspection API returns, its quotas, and what has changed since it launched
  • the tools that pull the data for you
  • how to set up my URL Inspection API Explorer dashboard, including the custom fields, fixed for 2026
  • how to interpret each section, and how to answer the questions stakeholders actually ask

Google released the Search Console URL Inspection API on 31 January 2022, announcing it on the Google Search Central blog, and I built the dashboard in the week after. I first published this tutorial on lazarinastoy.com that February. Two things have changed since: Google retired mobile usability data in December 2023, and two of my custom fields needed fixing. Both are marked below. API details are from Google’s reference and usage limits pages, read 22 October 2026.

What the URL Inspection API gives you

The URL Inspection API returns what Search Console’s URL Inspection tool shows for a single URL: whether it’s indexed, why or why not, when Google last crawled it, which canonical Google chose, and which rich results it found. It contains a number of fields and parameters that help with the technical reporting of site health, and its JSON responses are easy to reshape for visualisation afterwards.

It uses one method, index.inspect: a POST request to https://searchconsole.googleapis.com/v1/urlInspection/index:inspect. You need two parameters: the URL you’d like to inspect, and the URL of the property as defined in Search Console. The request body looks like this:

{
  "inspectionUrl": "https://www.example.com/blog/post/",
  "siteUrl": "https://www.example.com/",
  "languageCode": "en-US"
}
  • siteUrl takes a URL-prefix property with its trailing slash (https://www.example.com/) or a Domain property (sc-domain:example.com). The inspected URL must sit under it.
  • languageCode is optional and only changes the language of issue messages. The default is en-US.
  • The request needs OAuth with the webmasters or webmasters.readonly scope, and the account needs access to the property.

What comes back

Part of the response What it tells you Fields you’ll report on
indexStatusResult Index status of the version in Google’s index verdict, coverageState, robotsTxtState, indexingState, pageFetchState, lastCrawlTime, crawledAs, googleCanonical, userCanonical, sitemap, referringUrls
richResultsResult Structured data Google detected, and its issues (absent if none) verdict, detected items by type, issues with severity
ampResult AMP validity (absent if the page isn’t AMP) verdict, issues, AMP index status
mobileUsabilityResult Deprecated: see below verdict, issues (legacy)
inspectionResultLink A link to the same URL in Search Console’s inspection tool handy as a clickable column

From Google’s UrlInspectionResult reference, read 22 October 2026.

A few values are worth knowing by name. verdict is PASS (valid), NEUTRAL (excluded), FAIL (error) or, in older data, PARTIAL, which Google says is no longer used. pageFetchState separates a soft 404, a real 404, a 401, a 403, a server error and a redirect error. crawledAs is DESKTOP or MOBILE.

Exclusion: presently only the status of the version in the Google index is available; you can’t test the indexability of a live URL through the API.

Quota limits

The quota is enforced per Search Console website property (calls querying the same site), and per Google Cloud project:

Quota Per day Per minute
Per site (calls inspecting the same property) 2,000 600
Per project (calls made with the same Cloud project key) 10,000,000 15,000

From Google’s Search Console API usage limits, read 22 October 2026. Unchanged per site since launch.

In practice it’s the 2,000 a day per property that shapes your crawl. If you have more URLs than that, inspect the templates and sections that matter most, spread the work over several days, or (where they exist) use more specific properties: a URL-prefix property for a subfolder has its own quota.

What changed since 2022: mobile usability is gone

In April 2023 Google announced that, starting 1 December 2023, it would retire Search Console’s Mobile Usability report, the Mobile-Friendly Test tool and the Mobile-Friendly Test API. The API reference now marks mobileUsabilityResult as deprecated.

For a dashboard built in 2022, that means two things:

  • Some crawlers still list mobile usability columns in their URL Inspection output (Screaming Frog’s guide still describes them). Treat them as legacy: don’t read an empty or unchanged column as “no issues”.
  • My dashboard’s Mobile Usability section is now best used on crawls from before December 2023, or repurposed (I suggest a Core Web Vitals or PageSpeed view below).

Google was clear that mobile usability still matters for users; it pointed to other tools, including Chrome’s Lighthouse. If you crawl with Screaming Frog, its PageSpeed Insights integration pulls Lighthouse data during the same crawl.

Ways to pull the data from the URL Inspection API

If you have already read Aleyda Solis’ article on the tools you can use with this API, feel free to skip this section. Here’s a summary of the free tools I listed in 2022, rechecked in October 2026, but do check Aleyda’s article for a detailed review of all of these tools (and more!):

Tool By What it is Gets data into a Sheet?
Google Bulk Inspect URLs Valentin Pletzer Free online tool Download, then import
MyDomain.Dev Lino Uruñuela Free online tool; now a wider set of Search Console data tools Download, then import
URL Inspection API in Sheets Mike Richardson Google Sheets template using Apps Script Yes, directly: connect it straight to Data Studio
Screaming Frog SEO Spider Screaming Frog Crawler; URL Inspection alongside the crawl Yes, export to Google Sheets
Sitebulb Sitebulb Another SEO crawler Export
Google Index Inspection API Node.js script Jose Luis Hernando A JavaScript script CSV output, then import
Google URL Inspection API with Python Jean-Christophe Chouinard A Python script Your own export

All pages loaded on 22 October 2026. MyDomain.Dev’s signed-out page no longer names URL Inspection, so check it still offers the export before you rely on it.

One newer route: some Search Console MCP servers include a URL inspection tool (see my guide to Search Console MCP servers). For a dashboard, a crawl export is still simpler, because it brings the crawl data along with it.

How to set up Data Studio reporting for the URL Inspection API (free dashboard)

Here’s the dashboard, the Google Search Console URL Inspection API Explorer. It’s free to copy, two pages long, and built on a Screaming Frog export. The sections are Coverage Overview, Mobile Usability Issues, Rich Result Snippet Issues, Google Status, Crawling, and Canonical Tags.

The Google URL Inspection API Data Studio dashboard — a Data Studio dashboard by Lazarina Stoy
My URL Inspection API Explorer: index status, crawling and canonicals from a crawl export. Open the template · by Lazarina Stoy
Four steps from crawl to report (crawl, inspect at 2,000 calls a day and 600 a minute per property, export the Search Console tab to a Google Sheet, connect the Sheet) feeding six dashboard sections, with Mobile usability marked legacy since 1 December 2023
The data’s route into the dashboard, and the questions each section answers.

1. Crawl your website with URL Inspection switched on

For my dashboard, I used an export from my beloved tool Screaming Frog. To replicate my data source, run a crawl of your site with URL Inspection enabled:

  1. Go to Configuration → API Access → Google Search Console and connect the Google account that has access to the property.
  2. Choose the property, then open the URL Inspection tab and tick Enable URL Inspection.
  3. Optional: tick Ignore Non-Indexable URLs for URL Inspection to save quota for pages you want indexed, and Use Multiple Properties if you’ve verified several properties for the domain (Screaming Frog then uses the most specific one for each URL, which can take you past 2,000 URLs in one crawl).
The Enable URL Inspection checkbox, ticked, in Screaming Frog's Google Search Console API settings
Tick Enable URL Inspection in the URL Inspection tab. View full size

Screaming Frog queries the first 2,000 HTML URLs it discovers, and it crawls breadth-first, so on a big site focus the crawl on the sections you care about, or use list mode with your key URLs.

2. Export the Search Console tab to Google Sheets

Run the crawl, go to the Search Console tab and click Export. Export the file as a Google Sheet in your connected Google Drive account. Export only this tab: it holds the URL Inspection columns alongside clicks and impressions from the Search Analytics API, and it’s the input the dashboard expects.

Screaming Frog's tab bar with the Search Console tab selected and the Export button highlighted, above the Coverage, Last Crawl and Crawled As columns
Export the Search Console tab only, as the input for the dashboard. View full size

3. Copy the dashboard and connect your export

Open the template, make a copy, and when Data Studio asks for a data source, choose your exported Sheet through the Google Sheets connector (how to connect a Sheet). Keep the column headers exactly as Screaming Frog exported them, because the dashboard’s fields expect those names.

If you’re using a different tool, map its columns to Screaming Frog’s names (Address, Summary, Coverage, Last Crawl, Crawled As, Crawl Allowed, Page Fetch, Indexing Allowed, User-Declared Canonical, Google-Selected Canonical, Rich Results, Clicks) before you connect.

Notes on setting up: the custom fields and filters

Sometimes Data Studio malfunctions when a report is copied, specifically with custom fields, filters, or where filters are applied. I’ve written about the limitations of Data Studio before; to spare you, here is a summary of the custom fields and filters, and where they’re applied, to help you set up the dashboard.

Custom field What it does Used in
Canonical Mismatch? (Y/N) Flags URLs where Google chose a different canonical from the one you declared Canonical Tags
Page Section Groups URLs by site section, from patterns in the address Coverage Overview, Canonical Tags
Pages with / without clicks Splits URLs by whether they had any Search Console clicks Coverage Overview, Google Status, Crawling
Crawl Frequency Bands URLs by how long ago Google last crawled them Crawling

Canonical Mismatch? (Y/N), fixed

My 2022 version compared the two canonical columns and returned “NO” when they matched, “YES” otherwise. The catch: when either column is empty (no declared canonical, or a URL Google hasn’t indexed, so it has no Google-selected canonical), the comparison isn’t true, so the row fell through to “YES”. On my sample crawl, hundreds of URLs with two empty canonicals were flagged as mismatches. This version labels those separately:

The Canonical Tags section with the Canonical Mismatch (Y/N) filter set to YES (809 pages); the first rows show null in both the User-Declared and Google-Selected Canonical columns
The 2022 field on YES: rows with two empty canonicals count as mismatches. View full size
CASE
  WHEN Google-Selected Canonical IS NULL OR Google-Selected Canonical = "" THEN "No Google canonical (not indexed)"
  WHEN User-Declared Canonical IS NULL OR User-Declared Canonical = "" THEN "No declared canonical"
  WHEN User-Declared Canonical = Google-Selected Canonical THEN "NO"
  ELSE "YES"
END

If your site mixes http and https, or trailing and non-trailing slashes, compare normalised versions (for example with LOWER and REGEXP_REPLACE on both sides) so a formatting difference doesn’t read as a mismatch.

Page Section

A CASE statement with REGEXP_CONTAINS on the Address, one line per section of your site (blog, white papers, careers, tag pages, pagination), with an “Unclassified” ELSE. Your sections will differ from mine, so the pattern to copy is in the page-section formula in my custom dimension formulas guide:

CASE
  WHEN REGEXP_CONTAINS(Address, "/blog/") THEN "Blog posts"
  WHEN REGEXP_CONTAINS(Address, "/tag/") THEN "Tag pages"
  WHEN REGEXP_CONTAINS(Address, "/page/[0-9]+") THEN "Paginated"
  ELSE "Unclassified"
END
The calculated field editor with a field named Page Section: a CASE statement with six REGEXP_CONTAINS lines on Address mapping URL patterns to Blog Posts, White papers, Branded Pages, Services Pages, Tag Pages and Paginated, and an Unclassified ELSE
My 2022 Page Section field for the sample site: one REGEXP_CONTAINS line per section. View full size

Pages with / without clicks

CASE
  WHEN Clicks > 0 THEN "pages with clicks"
  ELSE "pages without clicks"
END

URLs with no Search Analytics data have an empty Clicks value, which lands in “pages without clicks”. That’s usually what you want.

Crawl Frequency, updated

CASE
  WHEN DATETIME_DIFF(TODAY(), Last Crawl, DAY) < 30 THEN "Crawled Last 30 days"
  WHEN DATETIME_DIFF(TODAY(), Last Crawl, DAY) < 60 THEN "Crawled Last 60 days"
  WHEN DATETIME_DIFF(TODAY(), Last Crawl, DAY) < 90 THEN "Crawled Last 90 days"
  WHEN DATETIME_DIFF(TODAY(), Last Crawl, DAY) < 180 THEN "Crawled Last 180 days"
  ELSE "Crawled Last 180+ Days"
END

My 2022 field used DATE_DIFF, which Google now documents for old compatibility-mode dates only. DATETIME_DIFF needs Last Crawl to be a Date or Date & Time field, so check its type in the data source after connecting the export (crawl exports often arrive as text). Two more things: a URL Google never crawled has no Last Crawl, so it lands in the last band, and TODAY() uses UTC unless you pass a time zone. More on this formula in the frequency-bands formula.

Filters added in the report

  • Exclude pages with no mobile usability issues (legacy: see above)
  • Exclude pages with 0 clicks
  • Exclude URLs with no summary
  • Exclude rows where Inspection Status is null
  • Crawling not allowed pages
  • Indexing not allowed
  • Page fetch unsuccessful
  • Status code = 404

If a chart in your copy shows everything or nothing, check that its filter survived the copy and is pointed at your data source.

Data interpretation: Google’s disclaimers

Before I get to how to read the dashboard, here are a few important notes on interpreting URL Inspection data, from Google:

  • This is not a live test. The data reflects the most recent crawl, not the live page. However, the information shown is what Google uses to evaluate Search results.
  • “URL is on Google” doesn’t actually mean that your page is appearing in Search results. Appearing requires the page and its structured data to meet Google’s guidelines. The URL Inspection tool doesn’t take into account manual actions, content removals, or temporarily blocked URLs.
  • URL not showing on Google, but the tool says it’s indexed? Explore this resource to find out why.
  • The Last Crawl date shows when the information was retrieved (if the page was crawled successfully). It’s the primary crawler’s last visit.

Section breakdown: what each part of the dashboard shows

Now, on with the fun stuff: using the dashboard! Below, I go through what each section contains, with a few use cases.

Coverage Overview

In the Coverage Overview section, you get:

  • how many pages were crawled, and the distribution of pages per section
  • how many pages have a coverage status from the Inspection API, and the distribution of pages per status
  • how many pages receive clicks
  • how many pages have rich result issues, and the error breakdown
  • how many pages have mobile usability issues (legacy, see above)
  • a summary of index status (URL is on Google; URL is on Google, but has issues; URL is not on Google)
  • a summary of crawl user agent: is your site crawled mostly by the mobile, desktop or an unknown agent?
  • a summary of page fetch status: have the pages in the crawl been fetched successfully by Google?
  • a summary of URL Inspection status: did any inspection calls return errors?
The Coverage Overview section: scorecards for pages crawled, pages with coverage, pages with clicks, mobile usability issues and rich result errors, a bar chart of pages by section with the Page Section filter open, and four pie charts for Google index status, crawl user agent, page fetch status and URL inspection status
Coverage Overview, from my 2022 sample crawl (the site is anonymised). View full size

Mobile Usability Issues (legacy)

In 2022 this section gave an overview of whether pages were mobile-friendly, the main types of errors and how many pages triggered each, with filters for error type, indexability and Google index status to help prioritise fixes. With Google’s mobile usability data retired, I’d use this space for a Core Web Vitals or PageSpeed Insights view from the same crawl, or keep it only for crawls from before December 2023.

The Mobile Usability Issues section from 2022: a pie chart of mobile-friendly versus not mobile-friendly pages, a bar chart of issue types such as text too small to read and clickable elements too close together, and a filterable table of URLs with indexability and clicks
Mobile Usability on my 2022 crawl, before Google retired the data. View full size

Rich Result Snippet Issues

In the Rich Result Snippet Issues section, you can:

  • get an overview of the main errors related to rich results
  • see the number of pages that are valid for rich results
  • see the main schema types implemented
  • filter and explore URLs by indexability, clicks and Google index status, to help with prioritising fixes
The Rich Result Snippet Issues section: filter tables for errors and rich result status, a stacked bar of rich result types (Sitelinks searchbox, Breadcrumbs, Review snippets) by validity, and a table of URLs with rich result status, error type, indexability and clicks
Rich Result Snippet Issues: one invalid Breadcrumbs item stands out on the homepage, which also has the most clicks. View full size

Google Status (page 2)

Page 2 of the dashboard covers indexability, canonicalisation and crawl behaviour. In the Google Status section you can:

  • filter and explore URLs by URL Inspection status, summary, pages with or without clicks, and coverage, to get an idea of what kind of pages are on Google
  • see the relationship between indexability and status code: are all the pages you declared indexable returning a 200?
  • see the relationship between Google index status and clicks: are pages with issues receiving clicks? Prioritise their optimisation.
  • see the relationship between inspection status and the error breakdown: when an inspection returns an error, what’s the reason? A read timeout, a connect timeout? Investigate.
The Google Status section: filter tables for URL Inspection status, summary, pages with or without clicks and coverage, a table of URLs with title, summary, coverage, clicks and impressions, and three bar charts splitting indexability by status code, index status by clicks, and inspection status by error
Google Status on page 2: summaries coloured by verdict, with clicks and errors below. View full size

Crawling

In the Crawling section, you can:

  • get summary stats on the number of pages where crawling isn’t allowed, where indexing isn’t allowed, where the page fetch was unsuccessful, and the number of 404s
  • filter URLs by the agent that crawled them (mobile, desktop, unknown) and look for patterns
  • filter by last crawl date, with the date range control
  • filter by page fetch status and by status code
  • get an overview of crawling behaviour on the site: how recently were URLs crawled?
The Crawling section: scorecards for pages where crawling or indexing isn't allowed, unsuccessful page fetches and 404s, filter tables for Crawled As, Page Fetch and Status Code, a bar chart of pages by crawl frequency band, and a table of URLs with last crawl date and clicks
Crawling: frequency bands, and each URL’s last crawl next to its clicks. View full size

Canonical Tags

In the Canonical Tags section, you can check for mismatches between the canonical tags you declared and the ones Google selected. Combine it with the filters above the table (Page Section, Canonical Mismatch) to find patterns in any mistakes you might have made in declaring canonicals. With the fixed field, “YES” now means a real disagreement, not two empty cells.

The Canonical Tags section: filters for Address, Page Section and Canonical Mismatch, and a table of URLs with their user-declared canonical, Google-selected canonical and a YES or NO mismatch column
Canonical Tags: declared and Google-selected canonicals side by side. View full size

Executive Q&A: answering stakeholder questions from the dashboard

In part inspired by Aleyda’s thread on the questions the URL Inspection API answers, this section shows where to find each answer in the dashboard, so you can handle these questions on client calls.

Question Where to look How
For which pages is Google not using my canonical, and what is it using instead? Page 2, Canonical Tags Set the Canonical Mismatch? (Y/N) filter to YES and review the table, which shows both canonicals side by side
Which ranked pages attracting clicks haven’t been crawled lately? Page 2, Google Status, then Crawling Set Pages with/without clicks to pages with clicks, then use the date range control in Crawling to pick the time frame. The table lists URL, Last Crawl and clicks
When did Google last crawl our URLs, and how? Page 2, Crawling The crawl frequency chart, Last Crawl column and Crawled As filter
Which indexable URLs attracting clicks have rich result issues? Page 1, Rich Result Snippet Issues Use the indexability and clicks filters (in 2022, the same worked for mobile usability)

For the second question, also check whether those URLs are in your XML sitemap: the API’s sitemap field lists the sitemaps Google found a URL in, though Google says the list isn’t guaranteed to be complete.

What the answers look like

The Canonical Tags table filtered to Canonical Mismatch YES, showing five URLs where the Google-selected canonical differs from the user-declared one, for example a blog post whose declared canonical points to a different path
Canonical mismatches, filtered to YES: five URLs where Google picked a different canonical. View full size
Pages with clicks that haven’t been crawled lately: filter to pages with clicks, then check their last crawl dates.
Page 1 with the Indexability filter open (Indexable 2.6K, Non-Indexable 86) above the mobile usability issues table and the Rich Result Snippet Issues section with its URL table sorted by clicks
Indexable URLs with issues: the Indexability filter on page 1. View full size

Summary

The URL Inspection API has had lots of love from the industry since it launched. There are limits on quota, and it only reports the indexed version of a page, but it’s still a much-needed extension of the data SEOs work with.

There are several ways to export the data, and most of them can feed the dashboard. Its sections (Coverage Overview, Rich Result Snippet Issues, Google Status, Crawling and Canonical Tags, plus the legacy Mobile Usability section) will help you answer a ton of questions about the sites you report on. Feel free to let me know how I can improve it, or how you’d use it.

The dashboard, and more Search Console templates

Copy my URL Inspection API Explorer dashboard, connect your crawl export, and apply the two fixed fields above. For Search Console performance reporting next to it, these free templates use Google’s own connector.

Where to go next

Frequently asked questions

What is the Google Search Console URL Inspection API?

An API Google released on 31 January 2022 that returns what the URL Inspection tool shows for a URL: index status and coverage, robots and noindex checks, last crawl, the crawler used, declared and Google-selected canonicals, and rich result and AMP results. It reports the version in Google’s index, not the live page.

Does the URL Inspection API have a Data Studio connector?

No. Google’s Search Console connector doesn’t include URL Inspection data. Export it with a crawler such as Screaming Frog, a Sheets template or a script, and connect the export to a dashboard such as my free URL Inspection API Explorer.

How many URLs can I inspect per day?

2,000 per Search Console property per day, and 600 per minute. The per-project limits are much higher (10,000,000 a day), so the property quota is the one you’ll hit.

Does the URL Inspection API still return mobile usability?

Google retired its mobile usability report and tools from 1 December 2023, and the API marks mobile usability results as deprecated. Treat any mobile usability columns in a crawl export as legacy.

Can the API test a live URL?

No. Only the indexed version is available through the API. The live test is in Search Console’s own URL Inspection tool.

Shopping Cart
Scroll to Top