{"id":11699,"date":"2021-11-17T12:04:33","date_gmt":"2021-11-17T12:04:33","guid":{"rendered":"https:\/\/docs_v3.dataforseo.com\/v3\/?page_id=11699"},"modified":"2023-06-02T12:36:30","modified_gmt":"2023-06-02T12:36:30","slug":"keywords_data-google_ads-ad_traffic_by_keywords-task_get","status":"publish","type":"page","link":"https:\/\/docs.dataforseo.com\/v3\/keywords_data-google_ads-ad_traffic_by_keywords-task_get\/","title":{"rendered":"keywords_data\/google_ads\/ad_traffic_by_keywords\/task_get"},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row][vc_column][vc_column_text]<\/p>\n<h2>Get &#8216;Ads Traffic By Keywords&#8217; Results by id<\/h2>\n<p>&nbsp; <\/p>\n<h4 style=\"color: #f44336\">Please note that starting from June 1, Google Ad Traffic By Keywords returns bulk data for the entire campaign (all keywords specified when setting a task). You can learn more in <a href=\"https:\/\/dataforseo.com\/update\/changes-google-ad-traffic-by-keywords\" rel=\"noopener noreferrer\" target=\"_blank\">this update<\/a>.<\/h4>\n<p>&nbsp;<br \/>\nNote that Google Ads Keywords Data API is based on the latest version of the <a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/start\" rel=\"noopener noreferrer\" target=\"_blank\">Google Ads API<\/a> that has replaced legacy Google AdWords API. If you\u2019re using <a href=\"\/v3\/keywords_data\/google\/overview\/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">DataForSEO Google AdWords API<\/a>, you need to upgrade to <a href=\"\/v3\/keywords_data\/google_ads\/overview\/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">DataForSEO Google Ads API<\/a>.<\/p>\n<p>Using the Ad Traffic By Keywords endpoint, you can receive a set of stats for estimating impressions, CPC, and clicks. This data is really useful for estimating real demand for a specific keyword, as it is much more accurate than the regular search volume information, which shows the broad match estimation for a group of similar keywords.<br \/>\n[\/vc_column_text]    <div class=\"endpoint\">\n        <img decoding=\"async\" class=\"endpoint__icon\" src=\"https:\/\/docs.dataforseo.com\/v3\/wp-content\/themes\/dataforseo\/assets\/img\/icons\/checked-circle.svg\" alt=\"checked\">\n\n                    GET            <button class=\"btn-reset button-link copy-button\" data-href=\"https:\/\/api.dataforseo.com\/v3\/keywords_data\/google_ads\/ad_traffic_by_keywords\/task_get\/$id\">\n                https:\/\/api.dataforseo.com\/v3\/keywords_data\/google_ads\/ad_traffic_by_keywords\/task_get\/$id                <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\n                    <use href=\"https:\/\/docs.dataforseo.com\/v3\/wp-content\/themes\/dataforseo\/assets\/img\/icons\/sprite.svg#layers\"><\/use>\n                <\/svg>\n            <\/button>\n            <\/div>\n    \t<article class=\"info-card info-card--yellow\">\n\t\t<header class=\"info-card__header\">\n\t\t\t<div class=\"info-card__icon\">\n\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\n\t\t\t\t\t<use href=\"https:\/\/docs.dataforseo.com\/v3\/wp-content\/themes\/dataforseo\/assets\/img\/icons\/sprite.svg#label\"><\/use>\n\t\t\t\t<\/svg>\n\t\t\t<\/div>\n\t\t\t<div class=\"info-card__title\">Pricing<\/div>\n\t\t<\/header>\n\t\t<div class=\"info-card__content\">\n\t\t\t<p> Your account will be charged only for posting a task. You can get the results of the task within the next 30 days for free.<br \/>\nThe cost can be calculated on the <a title=\"Pricing\" href=\"https:\/\/dataforseo.com\/pricing\/keywords-data\/google-ads\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing<\/a> page.<\/p>\n\t\t<\/div>\n\t<\/article>\n\t[vc_column_text]<\/p>\n<p><strong>Description of the fields for sending a request:<\/strong><\/p>\n<table style=\"width: 86.0726%; height: 34px;\">\n<thead>\n<tr style=\"height: 24px;\">\n<th style=\"width: 12.4003%; height: 24px;\">Field name<\/th>\n<th style=\"width: 3.91588%; height: 24px;\">Type<\/th>\n<th style=\"width: 82.9587%; height: 24px;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"height: 192px;\">\n<td style=\"width: 12.4003%; height: 10px;\"><code>id<\/code><\/td>\n<td style=\"width: 3.91588%; height: 10px;\">string<\/td>\n<td style=\"width: 82.9587%; height: 10px;\"><em>task identifier<\/em><br \/>\n<strong>unique task identifier in our system in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier\">UUID<\/a> format<\/strong><br \/>\nyou will be able to use it within <strong>30 days<\/strong> to request the results of the task at any time<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u200c\u200c\u200c<br \/>\n\u200c\u200cAs a response of the API server, you will receive <a href=\"https:\/\/en.wikipedia.org\/wiki\/JSON\">JSON<\/a>-encoded data containing a <code>tasks<\/code> array with the information specific to the set tasks.<\/p>\n<p><strong>Description of the fields in the result array:<\/strong><\/p>\n<table style=\"width: 77.3646%; height: 552px;\">\n<tbody>\n<tr style=\"height: 48px;\">\n<td style=\"width: 24.3517%; height: 48px;\"><code>version<\/code><\/td>\n<td style=\"width: 6.19209%; height: 48px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 48px;\"><em>the current version of the API<\/em><\/td>\n<\/tr>\n<tr style=\"height: 48px;\">\n<td style=\"width: 38.423%; height: 48px;\"><code>status_code<\/code><\/td>\n<td style=\"width: 1.75219%; height: 48px;\">integer<\/td>\n<td style=\"width: 61.2015%; height: 48px;\"><i>general status code<\/i><br \/>\nyou can find the full list of the response codes <a href=\"\/v3\/appendix\/errors\">here<\/a><br \/>\n<strong>Note:<\/strong> we strongly recommend designing a necessary system for handling related exceptional or error conditions<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\"><code>status_message<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>general informational message<\/em><br \/>\nyou can find the full list of general informational messages <a href=\"\/v3\/appendix\/errors\">here<\/a><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\"><code>time<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>execution time, seconds<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\"><code>cost<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">float<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>total <i>tasks<\/i> cost, USD<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\"><code>tasks_count<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">integer<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>the number of tasks in the <strong><code>tasks<\/code><\/strong> array<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\"><code>tasks_error<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">integer<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>the number of tasks in the <strong><code>tasks<\/code><\/strong> array returned with an error<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\"><strong><code>tasks<\/code><\/strong><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">array<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>array of tasks<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 <code>id<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>task identifier<\/em><br \/>\n<strong>unique task identifier in our system in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier\">UUID<\/a> format<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 48px;\">\n<td style=\"width: 24.3517%; height: 48px;\">\u00a0 \u00a0 \u00a0 \u00a0 <code>status_code<\/code><\/td>\n<td style=\"width: 6.19209%; height: 48px;\">integer<\/td>\n<td style=\"width: 79.8065%; height: 48px;\"><em>status code of the task<\/em><br \/>\ngenerated by DataForSEO; can be within the following range: 10000-60000<br \/>\nyou can find the full list of response codes <a href=\"\/v3\/appendix-errors\/\">here<\/a><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 <code>status_message<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>informational message of the task<\/em><br \/>\nyou can find the full list of general informational messages <a href=\"\/v3\/appendix-errors\/\">here<\/a><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 <code>time<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>execution time, seconds<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 <code>cost<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">float<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>cost of the task, USD<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 <code>result_count<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">integer<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>number of elements in the <code>result<\/code> array<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 <code>path<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">array<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>URL path<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 <code>data<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">object<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>contains the same parameters that you specified in the POST request<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 <strong><code>result<\/code><\/strong><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">array<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>array of results<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>keyword<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>keyword in a POST array<\/em><br \/>\nmetrics are provided for all the keywords specified in the POST array<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>location_code<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">integer<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>location code in a POST array<\/em><br \/>\nif there is no data, then the value is\u00a0<code>null<\/code><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>language_code<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>language code in a POST array<\/em><br \/>\nif there is no data, then the value is\u00a0<code>null<\/code><\/td>\n<\/tr>\n<tr style=\"height: 48px;\">\n<td style=\"width: 12.4003%; height: 48px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>date_interval<\/code><\/td>\n<td style=\"width: 3.91588%; height: 48px;\">string<\/td>\n<td style=\"width: 82.9587%; height: 48px;\"><em>forecasting date interval in a POST array<\/em><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>search_partners<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">boolean<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>include Google search partners<\/em><br \/>\nthe value you specified when setting the task<br \/>\nif <code class=\"prettyprint\">true<\/code>, the results are returned for owned, operated, and syndicated networks across Google and partner sites that host Google search;<br \/>\nif <code>false<\/code>, the results are returned for Google search sites only<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>bid<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">float<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>the maximum custom bid<\/em><br \/>\nthe bid you have specified when setting the task<br \/>\nrepresents the price you are willing to pay for an ad<br \/>\nthe higher value you have specified, the higher metrics and cost you receive in response<br \/>\nlearn more in <a href=\"https:\/\/dataforseo.com\/help-center\/configuring-bid\">this help center article<\/a><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 24.3517%; height: 24px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>match<\/code><\/td>\n<td style=\"width: 6.19209%; height: 24px;\">string<\/td>\n<td style=\"width: 79.8065%; height: 24px;\"><em>keywords match-type<\/em><br \/>\ncan take the following values: <code>exact<\/code>, <code>broad<\/code>, <code>phrase<\/code><\/td>\n<\/tr>\n<tr style=\"height: 72px;\">\n<td style=\"height: 72px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>impressions<\/code><\/td>\n<td style=\"height: 72px;\">float<\/td>\n<td style=\"height: 72px;\"><em>projected number of ad impressions<\/em><br \/>\nnumber of impressions an ad is projected to get within the specified time period<br \/>\nif there is no data, then the value is\u00a0<code>null<\/code><br \/>\nlearn more about impressions in <a href=\"https:\/\/dataforseo.com\/help-center\/using-impressions\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article<\/a><\/td>\n<\/tr>\n<tr style=\"height: 72px;\">\n<td style=\"height: 72px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>ctr<\/code><\/td>\n<td style=\"height: 72px;\">float<\/td>\n<td style=\"height: 72px;\"><em>projected clickthrough rate (CTR) of the advertisement<\/em><br \/>\nnumber of clicks an ad is projected to receive divided by the number of ad impressions; the CTR is projected for the specified time period<br \/>\nif there is no data, then the value is\u00a0<code>null<\/code><\/td>\n<\/tr>\n<tr style=\"height: 72px;\">\n<td style=\"height: 72px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>average_cpc<\/code><\/td>\n<td style=\"height: 72px;\">float<\/td>\n<td style=\"height: 72px;\"><em>the average cost-per-click value<\/em><br \/>\nrepresents the cost-per-click (USD) estimated for a keyword based on the specified time period and historical data;<br \/>\nif there is no data, then the value is\u00a0<code>null<\/code><\/td>\n<\/tr>\n<tr style=\"height: 72px;\">\n<td style=\"height: 72px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>cost<\/code><\/td>\n<td style=\"height: 72px;\">float<\/td>\n<td style=\"height: 72px;\"><em>charge for an ad<\/em><br \/>\namount that will be charged for running an ad within the specified time period<br \/>\nif there is no data, then the value is\u00a0<code>null<\/code><\/td>\n<\/tr>\n<tr style=\"height: 72px;\">\n<td style=\"height: 72px;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <code>clicks<\/code><\/td>\n<td style=\"height: 72px;\">float<\/td>\n<td style=\"height: 72px;\"><em>number of clicks on an ad<\/em><br \/>\nnumber of clicks an ad is projected to get within the specified time period<br \/>\nif there is no data, then the value is\u00a0<code>null<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u200c\u200c[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<blockquote><p>Instead of \u2018login\u2019 and \u2018password\u2019 use your credentials from https:\/\/app.dataforseo.com\/api-access<\/p><\/blockquote><div id=\"curl\" class=\"tab-content example__content\"><div class=\"example__code\"><pre><code class=\"language-bash hljs\"># Instead of &#039;login&#039; and &#039;password&#039; use your credentials from https:\/\/app.dataforseo.com\/api-access \r\nlogin=&quot;login&quot; \r\npassword=&quot;password&quot; \r\ncred=&quot;$(printf ${login}:${password} | base64)&quot; \r\nid=&quot;02031634-0696-0111-0000-61c2471b87fc&quot; \r\ncurl --location --request GET &quot;https:\/\/api.dataforseo.com\/v3\/keywords_data\/google_ads\/ad_traffic_by_keywords\/task_get\/${id}&quot; \r\n--header &quot;Authorization: Basic ${cred}&quot;  \r\n--header &quot;Content-Type: application\/json&quot; \r\n--data-raw &quot;&quot;<\/code><\/pre><\/div><\/div><div id=\"php\" class=\"tab-content example__content\"><div class=\"example__code\"><pre><code class=\"language-php hljs\">&lt;?php\r\n\/\/ You can download this file from here https:\/\/cdn.dataforseo.com\/v3\/examples\/php\/php_RestClient.zip\r\nrequire(&#039;RestClient.php&#039;);\r\n$api_url = &#039;https:\/\/api.dataforseo.com\/&#039;;\r\ntry {\r\n\t\/\/ Instead of &#039;login&#039; and &#039;password&#039; use your credentials from https:\/\/app.dataforseo.com\/api-access\r\n\t$client = new RestClient($api_url, null, &#039;login&#039;, &#039;password&#039;);\r\n} catch (RestClientException $e) {\r\n\techo &quot;n&quot;;\r\n\tprint &quot;HTTP code: {$e-&gt;getHttpCode()}n&quot;;\r\n\tprint &quot;Error code: {$e-&gt;getCode()}n&quot;;\r\n\tprint &quot;Message: {$e-&gt;getMessage()}n&quot;;\r\n\tprint  $e-&gt;getTraceAsString();\r\n\techo &quot;n&quot;;\r\n\texit();\r\n}\r\ntry {\r\n\t$result = array();\r\n\t\/\/ #1 - using this method you can get a list of completed tasks\r\n\t\/\/ the full list of possible parameters is available in documentation\r\n\t\/\/ GET \/v3\/keywords_data\/google_ads\/v2\/tasks_ready\r\n\t$tasks_ready = $client-&gt;get(&#039;\/v3\/keywords_data\/google_ads\/v2\/tasks_ready&#039;);\r\n\t\/\/ you can find the full list of the response codes here https:\/\/docs.dataforseo.com\/v3\/appendix\/errors\r\n\tif (isset($tasks_ready[&#039;status_code&#039;]) AND $tasks_ready[&#039;status_code&#039;] === 20000) {\r\n\t\tforeach ($tasks_ready[&#039;tasks&#039;] as $task) {\r\n\t\t\tif (isset($task[&#039;result&#039;])) {\r\n\t\t\t\tforeach ($task[&#039;result&#039;] as $task_ready) {\r\n\t\t\t\t\t\/\/ #2 - using this method you can get results of each completed task\r\n\t\t\t\t\t\/\/ GET \/v3\/keywords_data\/google_ads\/v2\/task_get\/$id\r\n\t\t\t\t\tif (isset($task_ready[&#039;endpoint&#039;])) {\r\n\t\t\t\t\t\t$result[] = $client-&gt;get($task_ready[&#039;endpoint&#039;]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\/\/ #3 - another way to get the task results by id\r\n\t\t\t\t\t\/\/ GET \/v3\/keywords_data\/google_ads\/v2\/task_get\/$id\r\n\t\t\t\t\t\/*\r\n\t\t\t\t\tif (isset($task_ready[&#039;id&#039;])) {\r\n\t\t\t\t\t\t$result[] = $client-&gt;get(&#039;\/v3\/keywords_data\/google_ads\/v2\/task_get\/&#039; . $task_ready[&#039;id&#039;]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t*\/\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tprint_r($result);\r\n\t\/\/ do something with result\r\n} catch (RestClientException $e) {\r\n\techo &quot;n&quot;;\r\n\tprint &quot;HTTP code: {$e-&gt;getHttpCode()}n&quot;;\r\n\tprint &quot;Error code: {$e-&gt;getCode()}n&quot;;\r\n\tprint &quot;Message: {$e-&gt;getMessage()}n&quot;;\r\n\tprint  $e-&gt;getTraceAsString();\r\n\techo &quot;n&quot;;\r\n}\r\n$client = null;\r\n?&gt;<\/code><\/pre><\/div><\/div><div id=\"javascript\" class=\"tab-content example__content\"><div class=\"example__code\"><pre><code class=\"language-javascript hljs\">const task_id = &#039;02231934-2604-0066-2000-570459f04879&#039;;\r\n\r\nconst axios = require(&#039;axios&#039;);\r\n\r\naxios({\r\n    method: &#039;get&#039;,\r\n    url: &#039;https:\/\/api.dataforseo.com\/v3\/keywords_data\/google_ads\/ad_traffic_by_keywords\/task_get\/&#039; + task_id,\r\n    auth: {\r\n        username: &#039;login&#039;,\r\n        password: &#039;password&#039;\r\n    },\r\n    headers: {\r\n        &#039;content-type&#039;: &#039;application\/json&#039;\r\n    }\r\n}).then(function (response) {\r\n    var result = response[&#039;data&#039;][&#039;tasks&#039;];\r\n    \/\/ Result data\r\n    console.log(result);\r\n}).catch(function (error) {\r\n    console.log(error);\r\n});<\/code><\/pre><\/div><\/div><div id=\"python\" class=\"tab-content example__content\"><div class=\"example__code\"><pre><code class=\"language-python hljs\">from client import RestClient\r\n# You can download this file from here https:\/\/cdn.dataforseo.com\/v3\/examples\/python\/python_Client.zip\r\nclient = RestClient(&quot;login&quot;, &quot;password&quot;)\r\n# 1 - using this method you can get a list of completed tasks\r\n# in addition to &#039;v2&#039; you can also set other parameters\r\n# the full list of possible parameters is available in documentation\r\n# GET \/v3\/keywords_data\/google_ads\/v2\/tasks_ready\r\nresponse = client.get(&quot;\/v3\/keywords_data\/google_ads\/v2\/tasks_ready&quot;)\r\n# you can find the full list of the response codes here https:\/\/docs.dataforseo.com\/v3\/appendix\/errors\r\nif response[&#039;status_code&#039;] == 20000:\r\n    results = []\r\n    for task in response[&#039;tasks&#039;]:\r\n        if (task[&#039;result&#039;] and (len(task[&#039;result&#039;]) &gt; 0)):\r\n            for resultTaskInfo in task[&#039;result&#039;]:\r\n                # 2 - using this method you can get results of each completed task\r\n\t\t\t\t# GET \/v3\/keywords_data\/google_ads\/v2\/task_get\/$id\r\n                if(resultTaskInfo[&#039;endpoint&#039;]):\r\n                    results.append(client.get(resultTaskInfo[&#039;endpoint&#039;]))\r\n                &#039;&#039;&#039;\r\n                # 3 - another way to get the task results by id\r\n                # GET \/v3\/keywords_data\/google_ads\/v2\/task_get\/$id              \r\n                if(resultTaskInfo[&#039;id&#039;]):\r\n                    results.append(client.get(&quot;\/v3\/keywords_data\/google_ads\/v2\/task_get\/&quot; + resultTaskInfo[&#039;id&#039;]))\r\n                &#039;&#039;&#039;\r\n    print(results)\r\n    # do something with result\r\nelse:\r\n    print(&quot;error. Code: %d Message: %s&quot; % (response[&quot;status_code&quot;], response[&quot;status_message&quot;]))<\/code><\/pre><\/div><\/div><div id=\"csharp\" class=\"tab-content example__content\"><div class=\"example__code\"><pre><code class=\"language-csharp hljs\">using Newtonsoft.Json;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Net.Http;\r\nusing System.Net.Http.Headers;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace DataForSeoDemos\r\n{\r\n    public static partial class Demos\r\n    {\r\n        public static async Task keywords_data_task_get()\r\n        {\r\n            var httpClient = new HttpClient\r\n            {\r\n                BaseAddress = new Uri(&quot;https:\/\/api.dataforseo.com\/&quot;),\r\n                \/\/ Instead of &#039;login&#039; and &#039;password&#039; use your credentials from https:\/\/app.dataforseo.com\/api-access\r\n                DefaultRequestHeaders = { Authorization = new AuthenticationHeaderValue(&quot;Basic&quot;, Convert.ToBase64String(Encoding.ASCII.GetBytes(&quot;login:password&quot;))) }\r\n            };\r\n            \/\/ #1 - using this method you can get a list of completed tasks\r\n            \/\/ in addition to &#039;v2&#039; you can also set other parameters\r\n            \/\/ the full list of possible parameters is available in documentation\r\n            \/\/ GET \/v3\/keywords_data\/google_ads\/v2\/tasks_ready\r\n            var response = await httpClient.GetAsync(&quot;\/v3\/keywords_data\/google_ads\/v2\/tasks_ready&quot;);\r\n            var tasksInfo = JsonConvert.DeserializeObject&lt;dynamic&gt;(await response.Content.ReadAsStringAsync());\r\n            var tasksResponses = new List&lt;object&gt;();\r\n            \/\/ you can find the full list of the response codes here https:\/\/docs.dataforseo.com\/v3\/appendix\/errors\r\n            if (tasksInfo.status_code == 20000)\r\n            {\r\n                if (tasksInfo.tasks != null)\r\n                {\r\n                    foreach (var tasks in tasksInfo.tasks)\r\n                    {\r\n                        if (tasks.result != null)\r\n                        {\r\n                            foreach (var task in tasks.result)\r\n                            {\r\n                                if (task.endpoint != null)\r\n                                {\r\n                                    \/\/ #2 - using this method you can get results of each completed task\r\n                                    \/\/ GET \/v3\/keywords_data\/google_ads\/v2\/task_get\/$id\r\n                                    var taskGetResponse = await httpClient.GetAsync((string)task.endpoint);\r\n                                    var taskResultObj = JsonConvert.DeserializeObject&lt;dynamic&gt;(await taskGetResponse.Content.ReadAsStringAsync());\r\n                                    if (taskResultObj.tasks != null)\r\n                                    {\r\n                                        var fst = taskResultObj.tasks.First;\r\n                                        \/\/ you can find the full list of the response codes here https:\/\/docs.dataforseo.com\/v3\/appendix\/errors\r\n                                        if (fst.status_code &gt;= 40000 || fst.result == null)\r\n                                            Console.WriteLine($&quot;error. Code: {fst.status_code} Message: {fst.status_message}&quot;);\r\n                                        else\r\n                                            tasksResponses.Add(fst.result);\r\n                                    }\r\n                                    \/\/ #3 - another way to get the task results by id\r\n                                    \/\/ GET \/v3\/keywords_data\/google_ads\/v2\/task_get\/$id\r\n                                    \/*\r\n                                    var tasksGetResponse = await httpClient.GetAsync(&quot;\/v3\/keywords_data\/google_ads\/v2\/task_get\/&quot; + (string)task.id);\r\n                                    var taskResultObj = JsonConvert.DeserializeObject&lt;dynamic&gt;(await tasksGetResponse.Content.ReadAsStringAsync());\r\n                                    if (taskResultObj.tasks != null)\r\n                                    {\r\n                                        var fst = taskResultObj.tasks.First;\r\n                                        \/\/ you can find the full list of the response codes here https:\/\/docs.dataforseo.com\/v3\/appendix\/errors\r\n                                        if (fst.status_code &gt;= 40000 || fst.result == null)\r\n                                            Console.WriteLine($&quot;error. Code: {fst.status_code} Message: {fst.status_message}&quot;);\r\n                                        else\r\n                                            tasksResponses.Add(fst.result);\r\n                                    }\r\n                                    *\/\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                if (tasksResponses.Count &gt; 0)\r\n                    \/\/ do something with result\r\n                    Console.WriteLine(String.Join(Environment.NewLine, tasksResponses));\r\n                else\r\n                    Console.WriteLine(&quot;No completed tasks&quot;);\r\n            }\r\n            else\r\n                Console.WriteLine($&quot;error. Code: {tasksInfo.status_code} Message: {tasksInfo.status_message}&quot;);\r\n        }\r\n    }\r\n}<\/code><\/pre><\/div><\/div><blockquote><p>The above command returns JSON structured like this:<\/p><\/blockquote><div class=\"example example--json\"><div class=\"example__content\"><div class=\"example__code example__code-json\"><pre><code class=\"language-json hljs\">{\r\n  &quot;version&quot;: &quot;0.1.20221214&quot;,\r\n  &quot;status_code&quot;: 20000,\r\n  &quot;status_message&quot;: &quot;Ok.&quot;,\r\n  &quot;time&quot;: &quot;0 sec.&quot;,\r\n  &quot;cost&quot;: 0,\r\n  &quot;tasks_count&quot;: 1,\r\n  &quot;tasks_error&quot;: 0,\r\n  &quot;tasks&quot;: [\r\n    {\r\n      &quot;id&quot;: &quot;06021415-1535-0111-0000-76d1e6dff5bc&quot;,\r\n      &quot;status_code&quot;: 20000,\r\n      &quot;status_message&quot;: &quot;Ok.&quot;,\r\n      &quot;time&quot;: &quot;0 sec.&quot;,\r\n      &quot;cost&quot;: 0,\r\n      &quot;result_count&quot;: 1,\r\n      &quot;path&quot;: [\r\n        &quot;v3&quot;,\r\n        &quot;keywords_data&quot;,\r\n        &quot;google_ads&quot;,\r\n        &quot;ad_traffic_by_keywords&quot;,\r\n        &quot;task_get&quot;,\r\n        &quot;06021415-1535-0111-0000-76d1e6dff5bc&quot;\r\n      ],\r\n      &quot;data&quot;: {\r\n        &quot;api&quot;: &quot;keywords_data&quot;,\r\n        &quot;function&quot;: &quot;ad_traffic_by_keywords&quot;,\r\n        &quot;se&quot;: &quot;google_ads&quot;,\r\n        &quot;id&quot;: &quot;06021415-1535-0111-0000-76d1e6dff5bc&quot;,\r\n        &quot;language_code&quot;: &quot;en&quot;,\r\n        &quot;location_code&quot;: 2840,\r\n        &quot;bid&quot;: 999,\r\n        &quot;match&quot;: &quot;exact&quot;,\r\n        &quot;keywords&quot;: [\r\n          &quot;buy laptop&quot;,\r\n          &quot;cheap laptops for sale&quot;,\r\n          &quot;purchase laptop&quot;\r\n        ]\r\n      },\r\n      &quot;result&quot;: [\r\n        {\r\n          &quot;keyword&quot;: null,\r\n          &quot;location_code&quot;: 2840,\r\n          &quot;language_code&quot;: &quot;en&quot;,\r\n          &quot;date_interval&quot;: &quot;next_month&quot;,\r\n          &quot;search_partners&quot;: false,\r\n          &quot;bid&quot;: 999,\r\n          &quot;match&quot;: &quot;exact&quot;,\r\n          &quot;impressions&quot;: 5332.73,\r\n          &quot;ctr&quot;: 0.0788,\r\n          &quot;average_cpc&quot;: 6.1,\r\n          &quot;cost&quot;: 2561.06,\r\n          &quot;clicks&quot;: 420.19\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}<\/code><\/pre><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row][vc_column][vc_column_text] Get &#8216;Ads Traffic By Keywords&#8217; Results by id &nbsp; Please note that starting from June 1, Google Ad Traffic By Keywords returns bulk data for the entire campaign (all keywords specified when setting a task). You can learn more in this update. &nbsp; Note that Google Ads Keywords Data API is based on the [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template.php","meta":{"apibase_doc_request_yaml":"","apibase_doc_request_additional_yaml":"","apibase_doc_response_yaml":"","footnotes":""},"class_list":["post-11699","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/pages\/11699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/comments?post=11699"}],"version-history":[{"count":16,"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/pages\/11699\/revisions"}],"predecessor-version":[{"id":17111,"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/pages\/11699\/revisions\/17111"}],"wp:attachment":[{"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/media?parent=11699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}