How to Build a Keyword Research Template with Search Volume Data Using DataForSEO API
If you’ve ever done keyword research by hand, you know the grind: build your keyword list, run it through Google Keyword Planner, export the results, and merge them back into your spreadsheet. The hassle is keeping your spreadsheet up to date. Each refresh means another round of uploads, exports, and cleanup. It’s slow work, and the all-in-one tools that automate it usually cost more than a single project can justify. A keyword research template with search volume pulled straight from an API fixes both problems. You can keep the research in one place, pay only for the data you extract, and refresh the numbers whenever you want. This guide shows how to do it with the DataForSEO Keyword Data API, no monthly subscription required.
What your keyword research template should include
A useful template is a short set of columns, not a dashboard. Start with the keyword, target location and language, search volume, CPC, competition, and the monthly trend over the past year. You can add keyword difficulty and search intent later from the DataForSEO Labs API if you want to rank your keyword opportunities even more strategically, but those key columns cover most of the decisions you’ll actually make.
The keyword column is the foundation: it holds the terms you’re evaluating and gives every other metric something to attach to. Search volume is the metric you’ll probably rely on most when comparing them. It’s what you sort keywords by, and it’s usually what decides which ones you work on first. CPC tells you whether a term has commercial value. Competition hints at how contested the paid results are. The monthly trend shows whether demand holds steady or spikes with a season.
Which columns to build is the easy part. The more important decision is where the data comes from, because that determines how useful and trustworthy the template will be.
Choosing the search volume data source: Keyword Data API
Our Keyword Data API gives you two ways to pull search volume into your template. Which one you reach for depends on how granular you need the numbers to be, but both return the core metrics in a structured format that’s easy to map to your spreadsheet columns.
The first option is using the Google Ads Search Volume endpoint. It handles up to 1,000 keywords per request and pulls data straight from Google Ads: search volume, CPC, competition, and a month-by-month breakdown for each term. For workflows built around Google Keyword Planner data, this endpoint is the most direct replacement since it draws from the same source.
The second option is the DataForSEO Search Volume endpoint. It refines Google’s estimates with Bing or clickstream data for up to 1,000 keywords at a time. This matters because Google lumps similar keywords into groups and reports one shared value across the whole group. Set the use_clickstream parameter to true and you get separate numbers for close variations that Google would otherwise merge.
A simple rule of thumb: use Google Ads Search Volume for standard, PPC-aligned numbers, and switch to DataForSEO Search Volume when Google’s estimate feels too coarse for your niche.
Once you’ve picked a source, the next job is getting the data into the sheet. The simplest way to do that is by using a ready-made template – our Google Sheets Connector. It writes keyword data into a spreadsheet without you having to write a single line of code.
Using Google Sheets Connector: a ready-made search volume template
With the Google Sheets Connector, you paste keywords, pick a menu item, and the search volume lands in the next column. Here are the steps:
- Create a free account. Sign up for DataForSEO (no credit card needed) and copy your API login and password from the dashboard.
- Install the connector and open the template. Add the DataForSEO API Connector add-on to Google Sheets and make a copy of the ready-made template it links to. Your columns are already set up.
- Paste your keyword list. Drop your terms into the keyword column of the relevant sheet, up to 1,000 at a time to match the endpoint’s limit.
- Run the Search Volume tool. From the connector menu, pick the Search Volume tool, set your location and language, and run it. Volume, CPC, competition, and the monthly trend fill in automatically.
- Refresh whenever you need to. Re-run the same tool and it pulls current numbers into the existing rows, without any re-setup.
That’s it. A few clicks and a blank sheet becomes a working keyword research template.
If you’d rather automate the workflow beyond the connector, Make lets you build the same template with more flexibility and control over each step.
Building the search volume template in Google Sheets with Make
The fastest way to build the template is by connecting Google Sheets to the Keyword Data API through Make. Here are the steps in short:
- Create a free account. Sign up for DataForSEO (no credit card needed) and copy your API login and password from the dashboard.
- Prepare your sheet. Add your keywords, location, and language to a Google Sheet.
- Import the DataForSEO scenario blueprint. Download the ready-made Make blueprint and import it into a new scenario.
- Connect Google Sheets. Select your spreadsheet and set the row range you want Make to process.
- Add your DataForSEO credentials. Enter your API login and password in the HTTP module.
- Run or schedule the scenario. Test it with “Run once”, or set a schedule to refresh the data automatically. You can also re-run the same flow manually whenever you need to refresh the data for existing rows, without any re-setup.
The scenario pulls search volume, CPC, and competition from the Google Ads Keyword Data API and writes the results back to your sheet, processing up to 1,000 keywords per API request. For the complete blueprint, screenshots, and detailed setup instructions, see the full DataForSEO guide to pulling search volume into Google Sheets with Make.
Building the Keyword Data API-based template in Airtable
Another quick and no-code path is to connect the Keyword Data API to Airtable with a short ready-made script, and pull search volume directly into your table.
- Create your table. Add columns for Keyword, Location, Search Volume, CPC, and Competition.
- Add Airtable’s Scripting extension. Open Extensions, choose Scripting, and add it to your base.
- Paste and configure the script. Add your DataForSEO API login and password, then match the table and column names in the script to your Airtable setup.
- Run the script. It sends your keywords to the Google Ads Search Volume endpoint and writes search volume, CPC, and competition back to the corresponding rows.
That’s the whole build. For the complete script, screenshots, and an alternative setup instruction for updating only selected rows, see the full guide here.
If you’d rather script the pull yourself, the API gets you the same data with more room to customize.
Pulling search volume with the API directly
If you’re comfortable in code, you can call the API endpoint directly. The snippet below sends one request to the Google Ads Search Volume endpoint for a small keyword list and returns structured JSON you can map straight into your columns.
# Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
login="login"
password="password"
cred="$(printf ${login}:${password} | base64)"
curl --location --request POST "https://api.dataforseo.com/v3/keywords_data/google_ads/search_volume/live"
--header "Authorization: Basic ${cred}"
--header "Content-Type: application/json"
--data-raw '[
{
"location_code": 2840,
"keywords": [
"buy laptop",
"cheap laptops for sale",
"purchase laptop"
],
"date_from": "2021-08-01",
"search_partners": true
}
]'
See the Google Ads Search Volume docs for the full parameter list.
Here’s what comes back for that request. The fields you’ll map to your template columns are keyword, search_volume, cpc, competition, and the monthly_searches array:
{
"version": "0.1.20231117",
"status_code": 20000,
"status_message": "Ok.",
"time": "1.9903 sec.",
"cost": 0.075,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "11301935-1535-0367-0000-b44e4432f0be",
"status_code": 20000,
"status_message": "Ok.",
"time": "1.8689 sec.",
"cost": 0.075,
"result_count": 3,
"path": [
"v3",
"keywords_data",
"google_ads",
"search_volume",
"live"
],
"data": {
"api": "keywords_data",
"function": "search_volume",
"se": "google_ads",
"language_code": "en",
"location_code": 2840,
"keywords": [
"buy laptop",
"cheap laptops for sale",
"purchase laptop"
],
"date_from": "2021-08-01"
},
"result": [
{
"keyword": "buy laptop",
"spell": null,
"location_code": 2840,
"language_code": "en",
"search_partners": false,
"competition": "HIGH",
"competition_index": 100,
"search_volume": 2900,
"low_top_of_page_bid": 1.69,
"high_top_of_page_bid": 10.04,
"cpc": 7.95,
"monthly_searches": [
{
"year": 2023,
"month": 10,
"search_volume": 2400
},
{
"year": 2023,
"month": 9,
"search_volume": 2900
},
{
"year": 2023,
"month": 8,
"search_volume": 3600
},
{
"year": 2023,
"month": 7,
"search_volume": 2900
},
{
"year": 2023,
"month": 6,
"search_volume": 2400
},
{
"year": 2023,
"month": 5,
"search_volume": 2900
},
{
"year": 2023,
"month": 4,
"search_volume": 2900
},
{
"year": 2023,
"month": 3,
"search_volume": 2900
},
{
"year": 2023,
"month": 2,
"search_volume": 2900
},
{
"year": 2023,
"month": 1,
"search_volume": 3600
},
{
"year": 2022,
"month": 12,
"search_volume": 2900
},
{
"year": 2022,
"month": 11,
"search_volume": 4400
},
{
"year": 2022,
"month": 10,
"search_volume": 3600
},
{
"year": 2022,
"month": 9,
"search_volume": 3600
},
{
"year": 2022,
"month": 8,
"search_volume": 3600
},
{
"year": 2022,
"month": 7,
"search_volume": 3600
},
{
"year": 2022,
"month": 6,
"search_volume": 6600
},
{
"year": 2022,
"month": 5,
"search_volume": 5400
},
{
"year": 2022,
"month": 4,
"search_volume": 4400
},
{
"year": 2022,
"month": 3,
"search_volume": 4400
},
{
"year": 2022,
"month": 2,
"search_volume": 3600
},
{
"year": 2022,
"month": 1,
"search_volume": 3600
},
{
"year": 2021,
"month": 12,
"search_volume": 3600
},
{
"year": 2021,
"month": 11,
"search_volume": 4400
},
{
"year": 2021,
"month": 10,
"search_volume": 3600
},
{
"year": 2021,
"month": 9,
"search_volume": 3600
},
{
"year": 2021,
"month": 8,
"search_volume": 4400
}
]
},
{
"keyword": "cheap laptops for sale",
"spell": null,
"location_code": 2840,
"language_code": "en",
"search_partners": false,
"competition": "HIGH",
"competition_index": 100,
"search_volume": 6600,
"low_top_of_page_bid": 0.38,
"high_top_of_page_bid": 2.78,
"cpc": 1.25,
"monthly_searches": [
{
"year": 2023,
"month": 10,
"search_volume": 6600
},
{
"year": 2023,
"month": 9,
"search_volume": 6600
},
{
"year": 2023,
"month": 8,
"search_volume": 8100
},
{
"year": 2023,
"month": 7,
"search_volume": 6600
},
{
"year": 2023,
"month": 6,
"search_volume": 6600
},
{
"year": 2023,
"month": 5,
"search_volume": 6600
},
{
"year": 2023,
"month": 4,
"search_volume": 6600
},
{
"year": 2023,
"month": 3,
"search_volume": 8100
},
{
"year": 2023,
"month": 2,
"search_volume": 6600
},
{
"year": 2023,
"month": 1,
"search_volume": 8100
},
{
"year": 2022,
"month": 12,
"search_volume": 8100
},
{
"year": 2022,
"month": 11,
"search_volume": 8100
},
{
"year": 2022,
"month": 10,
"search_volume": 6600
},
{
"year": 2022,
"month": 9,
"search_volume": 8100
},
{
"year": 2022,
"month": 8,
"search_volume": 8100
},
{
"year": 2022,
"month": 7,
"search_volume": 8100
},
{
"year": 2022,
"month": 6,
"search_volume": 6600
},
{
"year": 2022,
"month": 5,
"search_volume": 8100
},
{
"year": 2022,
"month": 4,
"search_volume": 8100
},
{
"year": 2022,
"month": 3,
"search_volume": 9900
},
{
"year": 2022,
"month": 2,
"search_volume": 9900
},
{
"year": 2022,
"month": 1,
"search_volume": 9900
},
{
"year": 2021,
"month": 12,
"search_volume": 12100
},
{
"year": 2021,
"month": 11,
"search_volume": 12100
},
{
"year": 2021,
"month": 10,
"search_volume": 8100
},
{
"year": 2021,
"month": 9,
"search_volume": 9900
},
{
"year": 2021,
"month": 8,
"search_volume": 12100
}
]
},
{
"keyword": "purchase laptop",
"spell": null,
"location_code": 2840,
"language_code": "en",
"search_partners": false,
"competition": "HIGH",
"competition_index": 99,
"search_volume": 110,
"low_top_of_page_bid": 2.07,
"high_top_of_page_bid": 15.43,
"cpc": 12.74,
"monthly_searches": [
{
"year": 2023,
"month": 10,
"search_volume": 110
},
{
"year": 2023,
"month": 9,
"search_volume": 110
},
{
"year": 2023,
"month": 8,
"search_volume": 170
},
{
"year": 2023,
"month": 7,
"search_volume": 110
},
{
"year": 2023,
"month": 6,
"search_volume": 140
},
{
"year": 2023,
"month": 5,
"search_volume": 140
},
{
"year": 2023,
"month": 4,
"search_volume": 170
},
{
"year": 2023,
"month": 3,
"search_volume": 140
},
{
"year": 2023,
"month": 2,
"search_volume": 110
},
{
"year": 2023,
"month": 1,
"search_volume": 70
},
{
"year": 2022,
"month": 12,
"search_volume": 70
},
{
"year": 2022,
"month": 11,
"search_volume": 140
},
{
"year": 2022,
"month": 10,
"search_volume": 90
},
{
"year": 2022,
"month": 9,
"search_volume": 110
},
{
"year": 2022,
"month": 8,
"search_volume": 90
},
{
"year": 2022,
"month": 7,
"search_volume": 110
},
{
"year": 2022,
"month": 6,
"search_volume": 170
},
{
"year": 2022,
"month": 5,
"search_volume": 170
},
{
"year": 2022,
"month": 4,
"search_volume": 140
},
{
"year": 2022,
"month": 3,
"search_volume": 210
},
{
"year": 2022,
"month": 2,
"search_volume": 140
},
{
"year": 2022,
"month": 1,
"search_volume": 140
},
{
"year": 2021,
"month": 12,
"search_volume": 90
},
{
"year": 2021,
"month": 11,
"search_volume": 110
},
{
"year": 2021,
"month": 10,
"search_volume": 140
},
{
"year": 2021,
"month": 9,
"search_volume": 90
},
{
"year": 2021,
"month": 8,
"search_volume": 110
}
]
}
]
}
]
}
Turn the spreadsheet into a reusable keyword research workflow
A one-time pull goes stale fast. The point of a template is that you can run it again next month without rebuilding anything, and the options above are all designed for that. Since a single request handles up to 1,000 keywords, one scheduled run can refresh a whole research list.
Inside Google Sheets, re-running the connector on a set schedule keeps the same rows current. For bigger jobs, like pulling seed keywords and writing the results out to several sheets, you can wire the endpoints into a no-code platform like Make or n8n. Our walkthrough on automating keyword research with DataForSEO and Make shows a full scenario built without writing any code.
Either way, the manual copy-paste loop is gone and the template becomes a workflow you own outright. The last thing to get right is reading the numbers, and that’s where a few predictable issues tend to show up.
Common issues and mistakes around search volume data
Here are four problems with a search volume template you may run into, and what to do about each.
- Different keywords return the same search volume. Google Ads groups similar keywords together and reports one shared value across the group, then rounds volumes into a limited set of buckets. To split a group into per-variation numbers, pull the same keywords through DataForSEO Search Volume endpoint with
use_clickstreamset totrue. - Search volume looks wrong for my market. This usually means the location and language weren’t set, so the API fell back to a default that doesn’t match your audience. Pass
location_codeandlanguage_codethrough their equivalent columns in your template explicitly on every request so the numbers reflect the market you’re targeting. - My spreadsheet data is becoming outdated. Google Ads refreshes keyword data around the middle of each month, and the Keyword Data API follows that same cycle, so a one-time pull drifts out of date. Schedule a monthly refresh, and check the Google Ads Status endpoint first to confirm the latest data is available before you re-run.
- Some keywords have no search volume values. Google returns
nullfor very low-volume, brand-new, or misspelled terms it has no estimate for. For long-tail variations Google omits, fall back to the DataForSEO Search Volume endpoint with clickstream refinement, which can surface values Google leaves blank.
Build it once, reuse every month
A keyword research template stops being busywork the moment the search volume fills itself in. Pick the source that fits your precision (Google Ads for familiar numbers, DataForSEO Search Volume for granularity), run the ready-made template through our Google Sheets Connector, or build one with Make, Airtable or a short API call, and schedule the refresh so it stays up-to-date on its own. After that, you only pay for the data you actually pull, with no recurring subscription sitting underneath it. Ready to fill in that search volume column?