How to Combine GSC Regex Filters With Page-Level Analysis to Find SEO Opportunities

Sep 24, 2026 • 8 min read
W
Weblinkbuzz Editorial Team
How to Combine GSC Regex Filters With Page-Level Analysis to Find SEO Opportunities

Most regex work in Google Search Console stops at the Query filter — pull long-tail phrases, isolate question queries, strip out branded traffic. That tells you what people are searching for. It doesn't tell you which page is winning that demand, which page is losing it, or how many pages are quietly splitting it between them. Stacking a Page regex filter on top of a Query regex filter closes that gap. Instead of a list of keywords, you get a list of pages with a specific, diagnosable problem attached  : pages competing against themselves, pages decaying without anyone noticing, pages one CTR fix away from page one. If you haven't set up the query-side filters yet. This piece picks up where they leave off and adds the Page dimension, because a keyword list without a page attached to it is only half an audit.

Why Query-Only Filtering Misses Half the Picture

A Query filter answers “what are people searching for.” It doesn't answer “where is that traffic landing” or “is more than one page fighting over it.” Two pages can both show up for the same long-tail phrase you flagged last month — one sitting at position 6, one at position 14, and a Query-only view shows a single blended row for that phrase, not two competing pages.

The Page dimension fixes that by letting you filter on the URL itself: a folder, a template pattern, a single page- using the same RE2 regex syntax GSC already applies to queries. Add a filter for Page and a filter for Query in the same view, and Search Console treats them as AND conditions: what's left is queries matching your pattern, on pages matching your pattern, at the same time. That combination is what turns a keyword list into an opportunity list.

A Quick Refresher: The Two Dimensions You Can Filter

The Performance report's Custom (regex) option is available on two dimensions — Query and Page — both run on Google's RE2 syntax. A few defaults, per Google's own filtering documentation, catch people out often enough to be worth restating:

•     Matching is partial by default. A pattern matches anywhere in the string unless anchored with ^ (start) or $ (end).

•     Matching is not case-sensitive by default. Prepend (?-i) if a case-sensitive match is genuinely needed — this mostly matters on Page filters, since query text is already stored in lowercase.

•     RE2 doesn't support lookaheads, lookbehinds, or backreferences. A pattern copied from a JavaScript or Python tutorial will often fail silently rather than throw an error.

•     An invalid expression returns zero rows, not an error message — worth remembering the first time a filter suddenly shows “no data.”

 

Dimension

Filters On

Example Regex

What It Reveals

Query

The search term typed by the user

^(who|what|why|how)

Which questions are driving impressions

Query

Brand vs. non-brand traffic

weblinkbuzz|web link buzz

How much demand is brand-independent

Page

A URL folder or template

/blogs/

Performance across one content type

Page

A single, anchored path

^https://example\.com/guides/

Isolates one section from the rest of the site

 

The Core Technique: Stacking Page and Query Filters

1.   Open Performance > Search results and set the date range — three to six months gives regex filters enough volume to be meaningful.

2.   Click + Add filter, choose Query, select Custom (regex), and enter the pattern for the topic or intent you're isolating.

3.   Click + Add filter again, choose Page, select Custom (regex), and enter the URL pattern for the section or template you want to check.

4.   Apply both. The table now only shows rows where both conditions hold true.

5.   Switch between the Queries and Pages tabs on the same filtered view — the Queries tab shows which search terms matched; the Pages tab shows which URLs absorbed that demand, aggregated by clicks, impressions, CTR, and average position.

6.   Drop the Page filter and keep the Query filter to check whether the same demand is landing on pages outside the section you scoped — that's often where cannibalization is hiding.

Five Page-Level Opportunities This Combination Surfaces

Each of these starts from the same two filters above; only the pattern and the tab you're reading change.

Opportunity

Filter Setup

Signal to Look For

Action

Keyword cannibalization

Query regex on one topic; check the Pages tab (no Page filter yet)

More than one URL earning clicks or impressions for the same filtered query set

Consolidate the weaker page or clearly differentiate the two

Content decay

Page regex on a folder/template; use Compare mode against the prior period

Clicks or impressions trending down over 3–6 months

Refresh, re-optimize, or fold into a stronger page

Quick-win pages

Page regex on a section; sort by impressions

High impressions, average position 5–15, CTR below what's typical for that position

Rewrite title/meta, add internal links, strengthen with an external link

Underperforming templates

Page regex matching an entire URL pattern (e.g., a programmatic template)

Near-zero impressions across the whole pattern, while a handful of pages in it do get traffic

Check indexing, internal linking, and whether the template renders content crawlers can see

Intent mismatch

Query regex on commercial-intent terms + Page regex on an informational section

Commercial queries landing on blog/informational pages instead of transactional ones

Add stronger internal links from those posts to the matching commercial page

 

A Worked Example

Take a site with a large programmatic template  a domain-level pricing page that exists for thousands of URLs following the same pattern, the way WeblinkBuzz's own /marketplace/websites/{domain}/ pages do. A Page regex like ^https://www\.weblinkbuzz\.com/marketplace/websites/ isolates that entire template in one filter, with no need to check pages individually.

If impressions sit near zero across most of that pattern while a handful of individual pages get consistent traffic, that's a template-level problem, not a set of unrelated one-off issues — thin content, weak internal linking, or, as it's turned out on programmatic pages before, a rendering issue that keeps crawlers from seeing content JavaScript is supposed to deliver. The same Page regex, layered with a Query filter for commercial terms like (buy|price|cost|compare), also shows whether that demand is landing on the pricing template at all or getting absorbed by blog content instead — a fast way to check whether informational posts are quietly out-competing the transactional pages they're supposed to feed.

Regex Mistakes That Quietly Skew Page-Level Analysis

•     Anchoring too tightly. ^backlink price matches only queries that start with that exact phrase — “compare backlink price” won't show up. Drop the anchor unless you specifically need start-of-string matching.

•     Forgetting query data is anonymised below a certain volume. Google withholds queries used by very few unique searchers over the report window, so a filtered Query view will always undercount true long-tail demand — treat it as a sample, not a full list.

•     Reading page-level conclusions from a query-only filter. Without switching to the Pages tab (or adding a Page filter), it's easy to assume one page owns a topic when two or three are actually splitting it.

•     Copying regex from a JavaScript or Python source. Lookaheads, lookbehinds, and backreferences aren't supported in RE2 — the filter won't error; it'll just return nothing, which reads as “no data” rather than “broken pattern.”

•     Not escaping literal periods in domain patterns. example.com in a Page regex matches “exampleXcom” for any character X, not just a dot — escape it as example\.com.

•     Hitting the 1,000-row cap without noticing. The Performance report table stops at 1,000 rows per view. A broad Query filter on a large site can hit that ceiling before showing the pages that matter — narrowing with a Page regex first keeps each pull small enough to read.

Turning Page-Level Opportunities Into an Action Plan at Scale

A regex sweep like this usually doesn't return one opportunity page — it returns a list. A cannibalised cluster that needs consolidating and a stronger backlink profile on the page that survives. A handful of quick-win pages sitting at position 8 that would likely move with one more authoritative link. An underperforming template that needs a content and linking fix across dozens of URLs at once.

Pricing that fixes one page at a time doesn't hold up once the list gets long, especially for agencies running this audit across several client domains in the same week. That's the point where a bulk backlink checker earns its keep — paste the opportunity-page domains from the audit and compare guest post pricing across marketplaces in one pass instead of opening each platform separately. An SEO bulk domain checker or agency backlink price tool does the same thing across client accounts, so the research step that used to take an afternoon per domain takes minutes, and comparing backlink prices in bulk keeps what you spend on each opportunity proportional to what the page is actually worth recovering.

WeblinkBuzz's bulk guest post price checker works this way: paste the domain list a regex audit surfaces and see side-by-side pricing across 23+ marketplaces in one search at weblinkbuzz.com/backlink-price-checker instead of checking each one manually.

Whichever tool handles that step, two things still apply regardless of scale: keep the anchor text pointed at any opportunity page in proportion to what's already linking there rather than repeating an exact-match phrase, and check each prospective site's spam score and penalty history before buying. A cheap link from a site that's already taken a manual action isn't a bargain — it's a second problem attached to the one you just fixed.

The Bottom Line

Query regex filters tell you what people are searching for. Page regex filters tell you where that demand is landing, and stacking both turns a keyword list into a list of pages with a specific problem attached to each one — which is the difference between an interesting export and an actual to-do list. Once that list exists, the bottleneck usually isn't finding more opportunities  it's checking pricing and building at the pace the list demands. WeblinkBuzz's bulk backlink price checker is built for exactly that step: paste the domains a page-level audit turns up and get every guest post price back in one search instead of ten. Compare Backlink Prices in Bulk →

 

FAQs

What's the difference between the Query and Page filters in Search Console's Performance report?

Query filters match the search terms people typed before landing on your site; Page filters match the URL that received the click or impression. Filtering by Query alone tells you what demand exists; filtering by Page tells you where it's landing. Combining both tells you both at once.

 

Can you stack a Query regex filter and a Page regex filter at the same time?

Yes. Add a filter for Query, choose Custom (regex), then add a second filter for Page and choose Custom (regex) again. Search Console applies both as AND conditions, so the table only shows rows that satisfy both patterns simultaneously.

 

Why does my Search Console regex filter return zero rows?

Four usual suspects: an anchor (^ or $) placed too strictly, an unsupported RE2 feature like a lookahead or backreference (which invalidates the whole pattern and returns nothing rather than an error), an unescaped special character such as a literal period in a domain, or a forced case-sensitive flag applied against data that doesn't match the case you expect.

 

Is Google Search Console's regex matching case-sensitive?

No, not by default. Matching is case-insensitive unless you prepend (?-i) to the expression, which forces a case-sensitive match — mainly relevant for Page URL filters, since Google stores query text in lowercase already.

 

How do I check for keyword cannibalization using regex filters?

Filter Query with a regex that isolates one topic, then switch to the Pages tab in that filtered view. If more than one URL shows meaningful clicks or impressions for that filtered query set, you likely have two or more pages competing for the same demand. Add a Page regex filter if you want to scope the check to one section or template rather than the whole site.

 

What's the 1,000-row limit, and how does page-level filtering help with it?

The Performance report UI caps the table at 1,000 rows per view. On a large site, a broad Query filter can hit that ceiling before you've seen the pages that matter. Narrowing with a Page regex filter first,  auditing one template or folder at a time keeps each pull under the cap and makes the results easier to act on.

 

How often should this page-level regex audit be repeated?

Monthly is reasonable for most sites — often enough to catch decay and cannibalization before they compound, without re-auditing pages that haven't had time to move. Large or fast-changing sites (frequent publishing, seasonal content, programmatic templates) benefit from a lighter version of this check every two weeks, scoped to whichever sections change most.

 

Can these regex filters be used outside the Search Console UI, through the API?

Yes. The Search Analytics API supports the same regex filtering through two dimension-filter operators, includingRegex and excludingRegex, on the query and page dimensions. That makes it possible to run this same Query + Page combination programmatically across many properties at once, rather than repeating the UI steps for each site — useful for agencies auditing several client accounts on a schedule.

 

✓
Site added
View Cart