{"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":"2026-08-07T16:27:09","modified_gmt":"2026-08-07T16:27:09","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 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><br \/>\n<div class=\"dfs-doc-container dfs-doc-request\"><table><thead><tr><th>Field name<\/th><th>Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr data-doc-id=\"id\"><td><code>id<\/code><\/td><td>string<\/td><td><p><em>task identifier<\/em><br><strong>unique task identifier in our system in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier\">UUID<\/a> format<\/strong><br>you will be able to use it within <strong>30 days<\/strong> to request the results of the task at any time<\/p><\/td><\/tr><\/tbody><\/table><\/div><br \/>\n\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><br \/>\n<div class=\"dfs-doc-container dfs-doc-response\"><div class=\"api-block-main\"><div class=\"api-section\"><table><thead><tr><th>Field name<\/th><th>Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr data-doc-id=\"version\"><td><code>version<\/code><\/td><td>string<\/td><td><p><em>the current version of the API<\/em><\/p><\/td><\/tr><tr data-doc-id=\"status_code\"><td><code>status_code<\/code><\/td><td>integer<\/td><td><p><i>general status code<\/i><br>you can find the full list of the response codes <a href=\"\/v3\/appendix\/errors\">here<\/a><br><strong>Note:<\/strong> we strongly recommend designing a necessary system for handling related exceptional or error conditions<\/p><\/td><\/tr><tr data-doc-id=\"status_message\"><td><code>status_message<\/code><\/td><td>string<\/td><td><p><em>general informational message<\/em><br>you can find the full list of general informational messages <a href=\"\/v3\/appendix\/errors\">here<\/a><\/p><\/td><\/tr><tr data-doc-id=\"time\"><td><code>time<\/code><\/td><td>string<\/td><td><p><em>execution time, seconds<\/em><\/p><\/td><\/tr><tr data-doc-id=\"cost\"><td><code>cost<\/code><\/td><td>float<\/td><td><p><em>total <i>tasks<\/i> cost, USD<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks_count\"><td><code>tasks_count<\/code><\/td><td>integer<\/td><td><p><em>the number of tasks in the <strong><code>tasks<\/code><\/strong> array<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks_error\"><td><code>tasks_error<\/code><\/td><td>integer<\/td><td><p><em>the number of tasks in the <strong><code>tasks<\/code><\/strong> array returned with an error<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks\"><td><strong><code>tasks<\/code><\/strong><\/td><td>array<\/td><td><p><em>array of tasks<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks-id\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<code>id<\/code><\/td><td>string<\/td><td><p><em>task identifier<\/em><br><strong>unique task identifier in our system in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier\">UUID<\/a> format<\/strong><\/p><\/td><\/tr><tr data-doc-id=\"tasks-status_code\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<code>status_code<\/code><\/td><td>integer<\/td><td><p><em>status code of the task<\/em><br>generated by DataForSEO; can be within the following range: 10000-60000<br>you can find the full list of response codes <a href=\"\/v3\/appendix-errors\/\">here<\/a><\/p><\/td><\/tr><tr data-doc-id=\"tasks-status_message\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<code>status_message<\/code><\/td><td>string<\/td><td><p><em>informational message of the task<\/em><br>you can find the full list of general informational messages <a href=\"\/v3\/appendix-errors\/\">here<\/a><\/p><\/td><\/tr><tr data-doc-id=\"tasks-time\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<code>time<\/code><\/td><td>string<\/td><td><p><em>execution time, seconds<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks-cost\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<code>cost<\/code><\/td><td>float<\/td><td><p><em>cost of the task, USD<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks-result_count\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<code>result_count<\/code><\/td><td>integer<\/td><td><p><em>number of elements in the <code>result<\/code> array<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks-path\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<code>path<\/code><\/td><td>array<\/td><td><p><em>URL path<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks-data\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<code>data<\/code><\/td><td>object<\/td><td><p><em>contains the same parameters that you specified in the POST request<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks-result\"><td>&nbsp;&nbsp;&nbsp;&nbsp;<strong><code>result<\/code><\/strong><\/td><td>array<\/td><td><p><em>array of results<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-keyword\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>keyword<\/code><\/td><td>string<\/td><td><p><em>keyword in a POST array<\/em><br>metrics are provided for all the keywords specified in the POST array<\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-location_code\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>location_code<\/code><\/td><td>integer<\/td><td><p><em>location code in a POST array<\/em><br>if there is no data, then the value is_<code>null<\/code>n<\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-language_code\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>language_code<\/code><\/td><td>string<\/td><td><p><em>language code in a POST array<\/em><br>if there is no data, then the value is_<code>null<\/code>n<\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-date_interval\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>date_interval<\/code><\/td><td>string<\/td><td><p><em>forecasting date interval in a POST array<\/em><\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-search_partners\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>search_partners<\/code><\/td><td>boolean<\/td><td><p><em>include Google search partners<\/em><br>the value is always <code>false<\/code><\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-bid\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>bid<\/code><\/td><td>float<\/td><td><p><em>the maximum custom bid<\/em><br>the bid you have specified when setting the task<br>represents the price you are willing to pay for an ad<br>the higher value you have specified, the higher metrics and cost you receive in response<br>learn more in <a href=\"https:\/\/dataforseo.com\/help-center\/configuring-bid\">this help center article<\/a><\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-match\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>match<\/code><\/td><td>string<\/td><td><p><em>keywords match-type<\/em><br>can take the following values: <code>exact<\/code>, <code>broad<\/code>, <code>phrase<\/code><\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-impressions\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>impressions<\/code><\/td><td>float<\/td><td><p><em>projected number of ad impressions<\/em><br>number of impressions an ad is projected to get within the specified time period<br><strong>Note:<\/strong> parameter deprecated, the value is always_<code>null<\/code>n<\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-ctr\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>ctr<\/code><\/td><td>float<\/td><td><p><em>projected clickthrough rate (CTR) of the advertisement<\/em><br>number of clicks an ad is projected to receive divided by the number of ad impressions;<br><strong>Note:<\/strong> parameter deprecated, the value is always <code>null<\/code><\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-average_cpc\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>average_cpc<\/code><\/td><td>float<\/td><td><p><em>the average cost-per-click value<\/em><br>represents the cost-per-click (USD) estimated for a keyword based on the specified time period and historical data;<br>if there is no data, then the value is_<code>null<\/code>n<\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-cost\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>cost<\/code><\/td><td>float<\/td><td><p><em>charge for an ad<\/em><br>amount that will be charged for running an ad within the specified time period<br>if there is no data, then the value is_<code>null<\/code>n<\/p><\/td><\/tr><tr data-doc-id=\"tasks-result-clicks\"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>clicks<\/code><\/td><td>float<\/td><td><p><em>number of clicks on an ad<\/em><br>number of clicks an ad is projected to get within the specified time period<br>if there is no data, then the value is_<code>null<\/code>n<\/p><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><br \/>\n\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;: null,\r\n          &quot;ctr&quot;: null,\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":"parameters:\n  - name: id\n    type: string\n    description: |\n      <em>task identifier<\/em><br><strong>unique task identifier in our system in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier\">UUID<\/a> format<\/strong><br>you will be able to use it within <strong>30 days<\/strong> to request the results of the task at any time","apibase_doc_request_additional_yaml":"","apibase_doc_response_yaml":"parameters:\n  - name: version\n    type: string\n    description: |\n      <em>the current version of the API<\/em>\n  - name: status_code\n    type: integer\n    description: |\n      <i>general status code<\/i><br>you can find the full list of the response codes <a href=\"\/v3\/appendix\/errors\">here<\/a><br><strong>Note:<\/strong> we strongly recommend designing a necessary system for handling related exceptional or error conditions\n  - name: status_message\n    type: string\n    description: |\n      <em>general informational message<\/em><br>you can find the full list of general informational messages <a href=\"\/v3\/appendix\/errors\">here<\/a>\n  - name: time\n    type: string\n    description: |\n      <em>execution time, seconds<\/em>\n  - name: cost\n    type: float\n    description: |\n      <em>total <i>tasks<\/i> cost, USD<\/em>\n  - name: tasks_count\n    type: integer\n    description: |\n      <em>the number of tasks in the <strong><code>tasks<\/code><\/strong> array<\/em>\n  - name: tasks_error\n    type: integer\n    description: |\n      <em>the number of tasks in the <strong><code>tasks<\/code><\/strong> array returned with an error<\/em>\n  - name: tasks\n    type: array\n    description: |\n      <em>array of tasks<\/em>\n    items:\n      children:\n        - name: id\n          type: string\n          description: |\n            <em>task identifier<\/em><br><strong>unique task identifier in our system in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier\">UUID<\/a> format<\/strong>\n        - name: status_code\n          type: integer\n          description: |\n            <em>status code of the task<\/em><br>generated by DataForSEO; can be within the following range: 10000-60000<br>you can find the full list of response codes <a href=\"\/v3\/appendix-errors\/\">here<\/a>\n        - name: status_message\n          type: string\n          description: |\n            <em>informational message of the task<\/em><br>you can find the full list of general informational messages <a href=\"\/v3\/appendix-errors\/\">here<\/a>\n        - name: time\n          type: string\n          description: |\n            <em>execution time, seconds<\/em>\n        - name: cost\n          type: float\n          description: |\n            <em>cost of the task, USD<\/em>\n        - name: result_count\n          type: integer\n          description: |\n            <em>number of elements in the <code>result<\/code> array<\/em>\n        - name: path\n          type: array\n          description: |\n            <em>URL path<\/em>\n        - name: data\n          type: object\n          description: |\n            <em>contains the same parameters that you specified in the POST request<\/em>\n        - name: result\n          type: array\n          description: |\n            <em>array of results<\/em>\n          items:\n            children:\n              - name: keyword\n                type: string\n                description: |\n                  <em>keyword in a POST array<\/em><br>metrics are provided for all the keywords specified in the POST array\n              - name: location_code\n                type: integer\n                description: \"<em>location code in a POST array<\/em><br>if there is no data, then the value is_<code>null<\/code>n\"\n              - name: language_code\n                type: string\n                description: \"<em>language code in a POST array<\/em><br>if there is no data, then the value is_<code>null<\/code>n\"\n              - name: date_interval\n                type: string\n                description: |\n                  <em>forecasting date interval in a POST array<\/em>\n              - name: search_partners\n                type: boolean\n                description: |\n                  <em>include Google search partners<\/em><br>the value is always <code>false<\/code>\n              - name: bid\n                type: float\n                description: |\n                  <em>the maximum custom bid<\/em><br>the bid you have specified when setting the task<br>represents the price you are willing to pay for an ad<br>the higher value you have specified, the higher metrics and cost you receive in response<br>learn more in <a href=\"https:\/\/dataforseo.com\/help-center\/configuring-bid\">this help center article<\/a>\n              - name: match\n                type: string\n                description: |\n                  <em>keywords match-type<\/em><br>can take the following values: <code>exact<\/code>, <code>broad<\/code>, <code>phrase<\/code>\n              - name: impressions\n                type: float\n                description: \"<em>projected number of ad impressions<\/em><br>number of impressions an ad is projected to get within the specified time period<br><strong>Note:<\/strong> parameter deprecated, the value is always_<code>null<\/code>n\"\n              - name: ctr\n                type: float\n                description: |\n                  <em>projected clickthrough rate (CTR) of the advertisement<\/em><br>number of clicks an ad is projected to receive divided by the number of ad impressions;<br><strong>Note:<\/strong> parameter deprecated, the value is always <code>null<\/code>\n              - name: average_cpc\n                type: float\n                description: \"<em>the average cost-per-click value<\/em><br>represents the cost-per-click (USD) estimated for a keyword based on the specified time period and historical data;<br>if there is no data, then the value is_<code>null<\/code>n\"\n              - name: cost\n                type: float\n                description: \"<em>charge for an ad<\/em><br>amount that will be charged for running an ad within the specified time period<br>if there is no data, then the value is_<code>null<\/code>n\"\n              - name: clicks\n                type: float\n                description: \"<em>number of clicks on an ad<\/em><br>number of clicks an ad is projected to get within the specified time period<br>if there is no data, then the value is_<code>null<\/code>n\"","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":18,"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/pages\/11699\/revisions"}],"predecessor-version":[{"id":26311,"href":"https:\/\/docs.dataforseo.com\/v3\/wp-json\/wp\/v2\/pages\/11699\/revisions\/26311"}],"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}]}}