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

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
winter
iphone 11 pro max
winter season
iphone11
iphone 11 price
apple iphone 11
iphone 11pro
coke
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
Capabilities
- 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
- 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
Settings
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.
Second option. Browser authorization
You need to log in to the browser at https://ads.google.com/aw/keywordplanner/home, 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
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:
fantasy
tower defense
rpg
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:
free
online
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:
$datefile.format().csv
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;
data.push(item);
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
Parameter | Default value | Description |
---|---|---|
Query type | Keyword | Query type |
Language | English | Language |
Currency | USD | Currency |
Search networks | Search network | |
Exclude brand names in results | ☐ | Brand filter |
Exclude adult ideas | ☑ | Adult content filter |
Date from | Last 12 | months(From March 2019) Date from |
Date to | Last 12 | months(To February 2020) Date to |
- | 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) |