All posts
REGEXGoogle Search ConsoleReporting

How to Bulk-Filter a Keyword List in Google Search Console

Published 27 July 2026·7 min read
Peter Claridge
Founder, KeywordHistory · Fractional CMO at Riverforge

The setup is familiar to anyone running SEO inside a company: management has a list of 20 keywords they care about, and you need to report on those specific keywords every month. GSC's standard filter requires you to add each keyword individually — slow and error-prone for any list longer than 3-4 terms. The fix is a pipelined regex with anchors on both ends.

Paste this into the GSC query filter, set to Custom (regex):

^(keyword one|keyword two|keyword three|keyword four)$

That returns clicks, impressions, CTR, and average position only for those exact queries. Add or remove terms by editing what's between the pipes. The ^ and $ anchors force an exact match — without them, "keyword one" would also match "best keyword one for SEO," which is usually not what you want when reporting on a specific target list.

How to Apply It

  1. Open GSC → Performance → Search Results
  2. Click "+ New" → Query
  3. Change the dropdown to "Custom (regex)" with "Matches regex" selected
  4. Paste your pipelined regex
  5. Click Apply

For a real example — say your target list is "search console export," "bigquery seo," "keyword history," and "gsc data retention":

^(search console export|bigquery seo|keyword history|gsc data retention)$

The Character Limit Problem

GSC's regex filter input has a character limit of approximately 4,096 characters. For a list of 20 keywords averaging 25 characters each, you'll use roughly 530-600 characters — well under the limit. For a list of 200+ keywords, especially long-tail keywords, you'll hit the ceiling.

When you exceed the limit, GSC silently truncates the regex, which means some of your keywords will be missing from the filtered results without any warning. If you're not sure whether you've hit the limit, count the characters of your regex string before pasting (most code editors show character counts).

Workarounds for Long Lists

  • Split into batches: Run the filter twice with two halves of the list; combine the results in a spreadsheet
  • Use the GSC API: Programmatic queries don't have the same filter length restriction
  • Use a BigQuery export: SQL handles arbitrary list lengths trivially via WHERE query IN (...)

Pattern Variations

Partial Match Instead of Exact

If you want to catch variations of each keyword (plural, possessive, slight rephrasing), drop the anchors:

(search console export|bigquery seo|keyword history)

This matches "how to do search console export," "bigquery seo guide," "what is keyword history" — broader, more inclusive, but also includes queries you may not have intended.

Anchored at the Start Only

For long-tail keywords where the target phrase always begins the query but might have trailing variations:

^(google search console|how to export gsc|bigquery setup)

Escape Special Characters

If your keywords contain regex special characters, escape them with a backslash. The characters to watch for: . * + ? ( ) [ ] { } ^ $ | \\

For example, if your target list includes a keyword with a period (e.g., "node.js tutorial"):

^(node\.js tutorial|other keyword)$

Why This Workflow Gets Fragile

The pattern works. The problem is what happens around it. A few common failure modes:

  • The regex doesn't persist: Every time you log out and back in, you're pasting the list again. If your team has 5 people who need to check this report, the regex needs to be shared, copied, and pasted by each of them every time.
  • Adding keywords means updating multiple regex strings: If you have the same target list embedded in reports, dashboards, and team documents, every addition or removal needs to be propagated to every copy.
  • No history beyond 16 months: If management wants to see how the target keyword list has performed over 3 years, native GSC doesn't have the data — and the regex doesn't help you with data that no longer exists.
  • No annotations: Marking when you launched specific optimizations to this target list, so future analysis can correlate intervention dates with performance shifts, isn't possible in native GSC.

The Done-For-You Version

Keyword History lets you upload a list of target keywords once, tag them permanently, and track their historical performance against your full BigQuery archive — without having to maintain regex strings. You can also add annotations to the chart (e.g., "Internal link campaign launched," "Title tags rewritten on Mar 12") so that future analysis can connect interventions to performance changes directly.

The functional shift: from "the regex is the list" to "the list is the list." Upload a CSV of 200 target keywords, name the group "Q2 Priorities," and that group becomes a permanent dimension in your analysis. Add a keyword by editing the group. Remove one the same way. Compare Q2 Priorities to Q3 Priorities. Compare both to the unfiltered site total. The regex was a workaround; the list itself is the actual data structure you wanted to work with.

One More Use Case Worth Mentioning

If you're running competitive intelligence — tracking how often competitor names appear in your GSC query data — the same pattern works for a list of competitor terms:

(competitor-a|competitor-b|competitor-c|alternative-x)

This surfaces queries where users are mentioning competitors alongside your brand or topic. High-impression queries like "your-brand vs competitor-a" are typically high- intent comparison searches worth optimizing for. Same regex pattern, different strategic angle.

The pipelined regex is the right tool for one-off filtering of a specific keyword list. For anything that needs to persist, scale, or be shared — which is most of the actual work — it's a workaround that hides the fact that the underlying data structure should be a tagged group, not a string to keep pasting.

Peter Claridge

Written by

Peter Claridge

Founder, KeywordHistory · Fractional CMO at Riverforge

Led organic growth at Unmetric, eG Innovations, and StreamAlive over 13+ years. Built KeywordHistory after rebuilding the same Google Data Studio dashboards one too many times.

Connect on LinkedIn

Keep your keyword history forever.

Every day you wait, Google deletes another day of your GSC data. KeywordHistory backs up to BigQuery automatically and surfaces the insights that matter.

Start free