<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DokeLab</title>
    <description>The latest articles on DEV Community by DokeLab (dokelab).</description>
    <link>https://dev.to/dokelab</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15639%2F4ced7425-fee4-49c2-84ba-4b26153d648f.png</url>
      <title>DEV Community: DokeLab</title>
      <link>https://dev.to/dokelab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dokelab"/>
    <language>en</language>
    <item>
      <title>How to Get Google Keyword Search Volume &amp; CPC Without Setting Up the Google Ads API</title>
      <dc:creator>Francesco Formisano</dc:creator>
      <pubDate>Tue, 27 Oct 2026 11:21:18 +0000</pubDate>
      <link>https://dev.to/dokelab/how-to-get-google-keyword-search-volume-cpc-without-setting-up-the-google-ads-api-3pp7</link>
      <guid>https://dev.to/dokelab/how-to-get-google-keyword-search-volume-cpc-without-setting-up-the-google-ads-api-3pp7</guid>
      <description>&lt;p&gt;If you need Google keyword data for SEO workflows, internal tools, content planning, or automation, the hard part usually isn't the metrics themselves.&lt;/p&gt;

&lt;p&gt;It's the setup.&lt;/p&gt;

&lt;p&gt;You often need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;manage a third-party API account&lt;/li&gt;
&lt;li&gt;handle authentication&lt;/li&gt;
&lt;li&gt;normalize responses&lt;/li&gt;
&lt;li&gt;add caching&lt;/li&gt;
&lt;li&gt;structure output for downstream tools&lt;/li&gt;
&lt;li&gt;make it usable for non-technical teammates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That friction is exactly why we built &lt;strong&gt;Google Keyword Search Volume &amp;amp; CPC Checker&lt;/strong&gt; on Apify.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;The Actor lets you fetch structured keyword metrics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;search volume&lt;/li&gt;
&lt;li&gt;CPC&lt;/li&gt;
&lt;li&gt;competition&lt;/li&gt;
&lt;li&gt;competition index&lt;/li&gt;
&lt;li&gt;bid estimates&lt;/li&gt;
&lt;li&gt;monthly search trends&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You provide a list of keywords, choose the location and language, and get structured results back.&lt;/p&gt;

&lt;p&gt;No separate DataForSEO account or API credentials are required.&lt;/p&gt;

&lt;h2&gt;
  
  
  A typical use case
&lt;/h2&gt;

&lt;p&gt;Imagine you already have a list of keywords:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;web hosting&lt;/li&gt;
&lt;li&gt;seo tools&lt;/li&gt;
&lt;li&gt;keyword research&lt;/li&gt;
&lt;li&gt;email marketing software&lt;/li&gt;
&lt;li&gt;crm software&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need another keyword-generation tool.&lt;/p&gt;

&lt;p&gt;You just want to know:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which of these keywords actually have search demand?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How competitive and commercially valuable are they?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's where a simple keyword-metrics workflow makes sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example input
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"keywords"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"web hosting"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"seo tools"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"keyword research"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"locationCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2840&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"languageCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"includeMonthlySearches"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"freshnessDays"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Actor can process up to &lt;strong&gt;1,000 keywords per run&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example output
&lt;/h2&gt;

&lt;p&gt;For each keyword, you can get fields such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;search_volume&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cpc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;competition&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;competition_index&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;low_top_of_page_bid&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;high_top_of_page_bid&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;monthly_searches&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cache_hit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fetched_at&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The results are structured, so they can be exported or consumed by another application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why structured output matters
&lt;/h2&gt;

&lt;p&gt;This becomes especially useful when keyword research is only one step in a larger workflow.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI generates keyword ideas → keyword metrics are fetched → low-value keywords are removed → the remaining keywords are used for content planning.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A customer uploads a keyword list → metrics are enriched automatically → the final dataset is exported to a dashboard.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is much easier when the output is predictable and machine-readable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fresh data vs cached data
&lt;/h2&gt;

&lt;p&gt;The Actor also supports cached results.&lt;/p&gt;

&lt;p&gt;If recent data for the same keyword, location, and language already exists, it can be reused instead of making another upstream request.&lt;/p&gt;

&lt;p&gt;The output tells you whether a result was served from cache through:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cache_hit: true&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can also control the acceptable cache age using &lt;code&gt;freshnessDays&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you explicitly need fresh data, set:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;freshnessDays: 0&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Missing data stays missing
&lt;/h2&gt;

&lt;p&gt;One detail that matters when building automated data pipelines: a missing value should not automatically become zero.&lt;/p&gt;

&lt;p&gt;If a provider doesn't return a metric, the Actor returns &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That makes it possible to distinguish between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an actual value of zero&lt;/li&gt;
&lt;li&gt;unavailable data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This prevents misleading downstream analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this approach makes sense
&lt;/h2&gt;

&lt;p&gt;This workflow is useful when you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;already have a keyword list&lt;/li&gt;
&lt;li&gt;need metrics for dozens or hundreds of keywords&lt;/li&gt;
&lt;li&gt;want structured JSON or dataset output&lt;/li&gt;
&lt;li&gt;are building an SEO automation&lt;/li&gt;
&lt;li&gt;want keyword data inside an AI workflow&lt;/li&gt;
&lt;li&gt;don't want to maintain another API integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not intended to replace full SEO platforms like Ahrefs or Semrush.&lt;/p&gt;

&lt;p&gt;Those products solve much broader problems.&lt;/p&gt;

&lt;p&gt;The goal here is intentionally narrower:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;keywords in → useful keyword metrics out.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on Apify
&lt;/h2&gt;

&lt;p&gt;We built &lt;strong&gt;Google Keyword Search Volume &amp;amp; CPC Checker&lt;/strong&gt; as part of DokeLab.&lt;/p&gt;

&lt;p&gt;You can try it here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apify.com/dokelab/keyword-metrics-pro" rel="noopener noreferrer"&gt;https://apify.com/dokelab/keyword-metrics-pro&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're building SEO, PPC, content, or AI automation workflows, I'm also interested in hearing what other keyword-data operations would be useful to expose in this format.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built by DokeLab.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>api</category>
      <category>automation</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
