Skip to main content

SE::Google::KeywordPlanner - Google Keyword Planner parser


SE::Google::KeywordPlanner parser overview

SE::Google::KeywordPlannerSE::Google::KeywordPlanner is a parser for keywords and suggestions with Google Keyword Planner. It provides a variety of data, including parsing suggestion lists, evaluating competition for keywords, collecting average monthly search volumes, minimum and maximum bids, and searching for new keywords of similar topics. In parsing settings, you can specify language, region, location, and data selection period.

Thanks to A-Parser's multithreaded work, the processing speed can reach 800 requests per minute, which on average allows you to receive up to 300 search queries per minute.

A-Parser's functionality allows you to save SE::Google::KeywordPlanner parser parsing settings for further use (presets), set up a parsing schedule, and much more.

Results can be saved in the format and structure you need, thanks to the built-in powerful Template Toolkit that allows you to apply additional logic to the results and output data in various formats, including JSON, SQL, and CSV.

List of collected data

  • Average monthly search volume for the searched keyword
  • Suggestion lists
  • Keyword variations
    • Average monthly search volume
    • Competition
    • Minimum and maximum bids
  • Search volume trends

As a result, a list of keyword variations by request is displayed. Example:

coca cola  
iphone 11 pro
iphone 11 pro max
winter season
iphone 11 price
apple iphone 11
iphone 11pro
11 pro max
iphone 11 pro price
iphone 11 max
iphone pro max
iphone 11 128gb
11 pro
iphone 11 pro max price
apple iphone 11 pro
apple iphone 11 pro max
new iphone 11
iphone 11 max pro
apple 11 pro
iphone 11 deals
iphone 11 pro max 256gb
diet coke
first day of winter
iphone 11 pro 256gb
coke zero
iphone pro 11
apple 11 pro max


  • Parsing data on search volumes for each keyword monthly for the specified period ($ideas.$i.trends). The data is presented in JSON, an example of their output in the result is shown in the screenshot below:
Spoiler: Screenshot

Example of outputting data in the result of SE::Google::KeywordPlanner parser

  • It is possible to specify several keywords in the request, it is enough to list them separated by commas.

Use cases

  • Parsing suggestion lists
  • Evaluating competition for keywords
  • Collecting average monthly search volumes, minimum and maximum bids
  • Searching for new keywords of similar topics


There are two ways to set up the parser:

  • specify the email and password of the Keyword Planner account
  • log in to the browser and copy the necessary values

First option. Email and password

You need to redefine the Email and Password options, specifying the data from your Keyword Planner account. The account must have a campaign created.

Spoiler: (Solution) Login failed TypeError: Cannot read property '1' of null

If this error occurs, you need to remove your Google account from the browser and log in again.

Solution to the error in SE::Google::KeywordPlanner parser

Second option. Browser authorization

You need to log in to the browser at, create the first campaign if it has not been created before, take the following data, and specify them in the parser settings:

  • The value of the __Secure-3PSID cookie
  • The value of the SAG cookie
  • The value of the x-framework-xsrf-token header
  • The value of the ocid or uscid parameter from the URL
Spoiler: How to find the necessary parameters

What parameters are needed to set up the SE::Google::KeywordPlanner parser


If you cannot find SAG, just enter - 1 in its field.

Query examples

Depending on the value of the Query type parameter, queries can take the following form:

  • Keyword - keyword
  • Site + keyword - site and keyword separated by a space
  • Entire site - site
  • URL - link

Query substitutions

You can use built-in macros to automatically substitute subqueries from files. For example, if we want to add a list of other words to each query, we specify several main queries:

tower defense

In the query format, we specify a macro for substituting additional words from the keywords.txt file. This method allows you to increase the variability of queries many times over:

{subs:keywords} $query 

This macro will create as many additional queries as there are in the file for each original search query, which in total will give [number of original queries] x [number of queries in the Keywords file] = [total number of queries] as a result of the macro's work.

For example, if the keywords.txt file contains:


As a result, the substitution macro will turn 3 main queries into 6:

free fantasy
online fantasy
free tower defense
online tower defense
free rpg
online rpg

Output results options

A-Parser supports flexible result formatting thanks to the built-in Template Toolkit template engine, which allows it to output results in any form, as well as in structured formats such as CSV or JSON.

Output to CSV table

The general result format is:

[% FOREACH i IN p1.ideas; 
tools.CSVline(i.keyword, i.volume, i.min_bid, i.max_bid);
END; %]

File name:


Initial text:

Keyword,Volume,"Min bid","Max bid"

The Template Toolkit template engine is used in the General Result Format to output the ideas array in a FOREACH loop.
What is the general result format?

In the results file name, simply change the file extension to csv.

To make the "Initial text" option available in the Task Editor, you need to activate "More options". In the "Initial text" field, enter the column names separated by commas, and leave the second row blank.

Saving in SQL format

Result format:

[% FOREACH ideas;
"INSERT INTO ideas VALUES('" _ keyword _ "', '" _ volume _ "')\n";
END; %]

Example result:

INSERT INTO ideas VALUES('духи', '50000')
INSERT INTO ideas VALUES('eyfel perfume', '5000')
INSERT INTO ideas VALUES('memo marfa', '5000')
INSERT INTO ideas VALUES('duxi', '5000')
INSERT INTO ideas VALUES('kenzo intense', '5000')
INSERT INTO ideas VALUES('climat lancome', '5000')
INSERT INTO ideas VALUES('v canto', '5000')
INSERT INTO ideas VALUES('majda bekkali', '5000')
INSERT INTO ideas VALUES('v canto ricina', '500')
INSERT INTO ideas VALUES('v canto stramonio', '5000')
INSERT INTO ideas VALUES('terenzi kirke', '500')
INSERT INTO ideas VALUES('duhi', '500')
INSERT INTO ideas VALUES('max mara le parfum', '500')
INSERT INTO ideas VALUES('stramonio v canto', '500')
INSERT INTO ideas VALUES('sheikh parfum', '500')
INSERT INTO ideas VALUES('jacques zolty', '500')
INSERT INTO ideas VALUES('aj arabia', '500')
INSERT INTO ideas VALUES('christian lacroix bazar', '500')
INSERT INTO ideas VALUES('juliette has a gun romantina', '500')
INSERT INTO ideas VALUES('vilhelm parfumerie mango skin', '500')
INSERT INTO ideas VALUES('v canto mirabile', '500')
INSERT INTO ideas VALUES('donna karan dkny be delicious', '500')
INSERT INTO ideas VALUES('arteolfatto', '500')
INSERT INTO ideas VALUES('aquawoman rochas', '500')
INSERT INTO ideas VALUES('angel and demon givenchy', '500')
INSERT INTO ideas VALUES('venenum kiss', '500')
INSERT INTO ideas VALUES('v canto mandragola', '500')
INSERT INTO ideas VALUES('angel demon givenchy', '500')
INSERT INTO ideas VALUES('hugo boss boss ma vie pour femme', '500')
INSERT INTO ideas VALUES('nina ricci mademoiselle ricci', '500')

Dump results to JSON

Result format:

[% data = [];
FOREACH p1.ideas;
item = {};
item.keyword = keyword;
item.volume = volume;
END; %]$data.json\n

Example result:

[{"keyword":"духи","volume":"50000"},{"keyword":"eyfel perfume","volume":"5000"},{"keyword":"memo marfa","volume":"5000"},{"keyword":"duxi","volume":"5000"},{"keyword":"kenzo intense","volume":"5000"},{"keyword":"climat lancome","volume":"5000"},{"keyword":"v canto","volume":"5000"},{"keyword":"majda bekkali","volume":"5000"},{"keyword":"v canto ricina","volume":"500"},{"keyword":"v canto stramonio","volume":"5000"},{"keyword":"terenzi kirke","volume":"500"},{"keyword":"duhi","volume":"500"},{"keyword":"max mara le parfum","volume":"500"},{"keyword":"stramonio v canto","volume":"500"},{"keyword":"sheikh parfum","volume":"500"},{"keyword":"jacques zolty","volume":"500"},{"keyword":"aj arabia","volume":"500"},{"keyword":"christian lacroix bazar","volume":"500"},{"keyword":"juliette has a gun romantina","volume":"500"},{"keyword":"vilhelm parfumerie mango skin","volume":"500"},{"keyword":"v canto mirabile","volume":"500"},{"keyword":"donna karan dkny be delicious","volume":"500"},{"keyword":"arteolfatto","volume":"500"},{"keyword":"aquawoman rochas","volume":"500"},{"keyword":"angel and demon givenchy","volume":"500"},{"keyword":"venenum kiss","volume":"500"},{"keyword":"v canto mandragola","volume":"500"},{"keyword":"angel demon givenchy","volume":"500"},{"keyword":"hugo boss boss ma vie pour femme","volume":"500"},{"keyword":"nina ricci mademoiselle ricci","volume":"500"},{"keyword":"mmmm juliette has a gun","volume":"500"},{"keyword":"v canto lucrethia","volume":"500"},{"keyword":"mango skin vilhelm parfumerie","volume":"500"},{"keyword":"dalissime salvador dali","volume":"500"},{"keyword":"molecula 02","volume":"50000"},{"keyword":"lucia parfum","volume":"500"},{"keyword":"boadicea pure narcotic","volume":"500"},{"keyword":"terenzi andromeda","volume":"500"}]

Possible settings

ParameterDefault valueDescription
Query typeKeywordQuery type
Search networksGoogleSearch network
Exclude brand names in resultsBrand filter
Exclude adult ideasAdult content filter
Date fromLast 12months(From March 2019) Date from
Date toLast 12months(To February 2020) Date to
E-mail-Data for authorization in Keyword Planner
Password-Data for authorization in Keyword Planner
Location code-Location (here you need to specify the location id, which can be taken from the first column of this table)