---
title: "Setting Live ‘Keywords For Keywords’ Tasks"
url: "https://docs.dataforseo.com/v3/keywords_data/google_ads/keywords_for_keywords/live/"
date: "2026-06-06"
---

## Setting Live ‘Keywords For Keywords’ Tasks

Note that Google Ads Keywords Data API is based on the latest version of the [Google Ads API](https://developers.google.com/google-ads/api/docs/start) that has replaced legacy Google AdWords API. If you’re using [DataForSEO Google AdWords API](https://docs.dataforseo.com/v3/keywords_data/google/overview.md), you need to upgrade to [DataForSEO Google Ads API](https://docs.dataforseo.com/v3/keywords_data/google_ads/overview.md).  
  
This endpoint will provide relevant keywords for the specified terms. Set up to 20 keywords in the `keywords` array and get keyword suggestions from Google Ads.

**Note: you can send no more than 12 requests per minute per account using Google Ads Live endpoints.**

Historical data is available for 4 years.

 

 

 ![checked](https://docs.dataforseo.com/v3/wp-content/themes/dataforseo/assets/img/icons/checked-circle.svg) POST  https://api.dataforseo.com/v3/keywords\_data/google\_ads/keywords\_for\_keywords/live     

      

Pricing

 Your account will be charged for each request.  
The cost can be calculated on the [Pricing](https://dataforseo.com/pricing/keywords-data/google-ads "Pricing") page.

 

 All POST data should be sent in the [JSON](https://en.wikipedia.org/wiki/JSON) format (UTF-8 encoding). The task setting is done using the POST method. When setting a task, you should send all task parameters in the task array of the generic POST array. You can send up to 2000 API calls per minute. Visit [DataForSEO Help Center](https://dataforseo.com/help-center/best-practices-for-handling-keywords-data-api-requests) to get practical tips for request handling depending on your Keyword Data API payload volume.

You can get up to 20,000 keyword suggestions with all essential keyword data in response to one request. Your account will be charged for each request, no matter what number of keywords you receive in the result.

Below you will find a detailed description of the fields you can use for setting a task.

**Description of the fields for setting a task:**

optional field

| Field name | Type | Description |
|---|---|---|
| `keywords` | array | *keywords*   **required field**   The maximum number of keywords you can specify: 20   The maximum number of characters for each keyword: 80   the keywords you specify will be converted to a lowercase format   **Note:** Google Ads may return no data for certain groups of keywords   [visit our Help Center to learn more](https://dataforseo.com/help-center/no-search-volume-data-for-some-keywords)   **Also note** that Google Ads doesn’t allow using certain symbols and characters (e.g., UTF symbols, emojis), so you can’t use them when setting a task;   to learn more about which symbols and characters can be used, please refer to [this article](https://dataforseo.com/help-center/using-symbols-in-keywords-when-setting-a-google-ads-task)learn more about rules and limitations of `keyword` and `keywords` fields in DataForSEO APIs in this [Help Center article](https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis) |
| `location_name` | string | *full name of search engine location*   optional field   if you do not indicate the location, you will receive worldwide results, i.e., for all available locations;   **if you use this field, you don’t need to specify `location_code` or `location_coordinate`**   you can receive the list of available locations of the search engine with their `location_name` by making a separate request to `https://api.dataforseo.com/v3/keywords_data/google_ads/locations`   example:   `London,England,United Kingdom` |
| `location_code` | integer | *search engine location code*   optional field   if you do not indicate the location, you will receive worldwide results, i.e., for all available locations;   **if you use this field, you don’t need to specify `location_name` or `location_coordinate`**;   you can receive the list of available locations of the search engines with their `location_code` by making a separate request to `https://api.dataforseo.com/v3/keywords_data/google_ads/locations`   example:   `2840` |
| `location_coordinate` | string | *GPS coordinates of a location*   optional field   if you do not indicate the location, you will receive worldwide results, i.e., for all available locations;   **if you use this field, you don’t need to specify `location_name` or `location_code`**;   `location_coordinate` parameter should be specified in the *“latitude,longitude”* format;   **the data will be provided for the country the specified coordinates belong to**;   example:   `52.6178549,-155.352142` |
| `language_name` | string | *full name of search engine language*   optional field   you can receive the list of available languages of the search engine with their `language_name` by making a separate request to `https://api.dataforseo.com/v3/keywords_data/google_ads/languages`   example:   `English` |
| `language_code` | string | *search engine language code*   optional field   you can receive the list of available languages of the search engine with their `language_code` by making a separate request to `https://api.dataforseo.com/v3/keywords_data/google_ads/languages`   example:   `en` |
| `search_partners` | boolean | *include Google search partners*   optional field   if you specify `true`, the results will be delivered for owned, operated, and syndicated networks across [Google and partner sites](https://support.google.com/google-ads/answer/1722047?hl=en) that host Google search;   default value: `false` – results are returned for Google search sites |
| `date_from` | string | *starting date of the time range*   optional field   date format: `"yyyy-mm-dd"`   minimal value: 4 years from the current date   by default, data is returned for the past 12 months;   **Note**: the indicated date cannot be greater than that specified in `date_to` and/or yesterday’s date;if [Status endpoint](https://docs.dataforseo.com/v3/keywords_data/google_ads/status.md) returns `false` in the `actual_data` field, `date_from` can be set to the month before last and prior;   if [Status endpoint](https://docs.dataforseo.com/v3/keywords_data/google_ads/status.md) returns `true` in the `actual_data` field, `date_from` can be set to the last month and prior |
| `date_to` | string | *ending date of the time range*   optional field   **Note:** the indicated date cannot be greater than yesterday’s date;   if you don’t specify this field, yesterday’s date will be used by default   date format: `"yyyy-mm-dd"`   example:   `"2022-11-30"` |
| `sort_by` | string | *results sorting parameters*   optional field   Use these parameters to sort the results by `relevance`, `search_volume`, `competition_index`, `low_top_of_page_bid`, or `high_top_of_page_bid` in descending order   default value: `relevance` |
| `include_adult_keywords` | boolean | *include keywords associated with adult content*   optional field   if set to `true`, adult keywords will be included in the response   default value: `false`   **note** that the API may return no data for such keywords due to [Google Ads restrictions](https://support.google.com/adspolicy/answer/6008942?hl=en) |
| `tag` | string | *user-defined task identifier*   optional field   *the character limit is 255*   you can use this parameter to identify the task and match it with the result   you will find the specified `tag` value in the `data` object of the response |

  
As a response of the API server, you will receive [JSON](https://en.wikipedia.org/wiki/JSON)-encoded data containing a `tasks` array with the information specific to the set tasks.

**Description of the fields in the result array:**

| `version` | string | *the current version of the API* |
|---|---|---|
| `status_code` | integer | *general status code*   you can find the full list of the response codes [here](https://docs.dataforseo.com/v3/appendix/errors.md)   **Note:** we strongly recommend designing a necessary system for handling related exceptional or error conditions |
| `status_message` | string | *general informational message*   you can find the full list of general informational messages [here](https://docs.dataforseo.com/v3/appendix/errors.md) |
| `time` | string | *execution time, seconds* |
| `cost` | float | *total *tasks* cost, USD* |
| `tasks_count` | integer | *the number of tasks in the **`tasks`** array* |
| `tasks_error` | integer | *the number of tasks in the **`tasks`** array returned with an error* |
| **`tasks`** | array | *array of tasks* |
| `id` | string | *task identifier*   **unique task identifier in our system in the [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) format** |
| `status_code` | integer | *status code of the task*   generated by DataForSEO; can be within the following range: 10000-60000   you can find the full list of response codes [here](https://docs.dataforseo.com/v3/appendix-errors.md) |
| `status_message` | string | *informational message of the task*   you can find the full list of general informational messages [here](https://docs.dataforseo.com/v3/appendix-errors.md) |
| `time` | string | *execution time, seconds* |
| `cost` | float | *cost of the task, USD* |
| `result_count` | integer | *number of elements in the `result` array* |
| `path` | array | *URL path* |
| `data` | object | *contains the same parameters that you specified in the POST request* |
| **`result`** | array | *array of results* |
| `keyword` | string | *keyword in a POST array* |
| `location_code` | integer | *location code in a POST array*   if there is no data, the value is `null` |
| `language_code` | string | *language code in a POST array*   if there is no data, the value is `null` |
| `search_partners` | boolean | *include Google search partners*   the value you specified when setting the task   if `true`, the results are returned for owned, operated, and syndicated networks across Google and partner sites that host Google search;   if `false`, the results are returned for Google search sites only |
| `competition` | string | *competition*   represents the relative level of competition associated with the given keyword in paid SERP only   possible values: `LOW`, `MEDIUM`, `HIGH`   if competition level is unknown, the value is `null`;   learn more about the metric in [this help center article](https://dataforseo.com/help-center/what-is-competition) |
| `competition_index` | integer | *competition index*   the competition index for the query indicating how competitive ad placement is for the keyword   can take values from 0 to 100   the level of competition from 0 to 100 is determined by the number of ad slots filled divided by the total number of ad slots available   if not enough data is available, the value is `null`;   learn more about the metric in [this help center article](https://dataforseo.com/help-center/what-is-competition) |
| `search_volume` | integer | *monthly average search volume rate*   represents the (approximate) number of searches for the given keyword idea either on google.com or google.com and partners, depending on the user’s targeting   if there is no data, the value is `null` |
| `low_top_of_page_bid` | float | *minimum bid for the ad to be displayed at the top of the first page*   indicates the value greater than about 20% of the lowest bids for which ads were displayed (based on Google Ads statistics for advertisers)   the value may differ depending on the location specified in a POST request |
| `high_top_of_page_bid` | float | *maximum bid for the ad to be displayed at the top of the first page*   indicates the value greater than about 80% of the lowest bids for which ads were displayed (based on Google Ads statistics for advertisers)   the value may differ depending on the location specified in a POST request |
| `cpc` | float | *cost per click*   indicates the amount paid (USD) for each click on the ad displayed for a given keyword |
| `monthly_searches` | array | *monthly searches*   represents the (approximate) number of searches on this keyword idea (as available for the past twelve months), targeted to the specified geographic locations   if there is no data, the value is `null` |
| `year` | integer | *year* |
| `month` | integer | *month* |
| `search_volume` | integer | *monthly average search volume rate* |
| `keyword_annotations` | object | *the annotations for the keyword* |
| `concepts` | array | *the list of concepts for the keyword* |
| `name` | string | *the concept name for the keyword in the concept\_group* |
| `concept_group` | object | *the concept group of the concept details* |
| `name` | string | *the concept group name* |
| `type` | string | *the concept group type* |



 

 









> Instead of ‘login’ and ‘password’ use your credentials from https://app.dataforseo.com/api-access

```
# 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/keywords_for_keywords/live" 
--header "Authorization: Basic ${cred}"  
--header "Content-Type: application/json" 
--data-raw '[
    {
        "location_code": 2840,
        "keywords": ["phone", "cellphone"]

    }
]'
```





```php
<?php
// You can download this file from here https://cdn.dataforseo.com/v3/examples/php/php_RestClient.zip
require('RestClient.php');
$api_url = 'https://api.dataforseo.com/';
try {
	// Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
	$client = new RestClient($api_url, null, 'login', 'password');
} catch (RestClientException $e) {
	echo "n";
	print "HTTP code: {$e->getHttpCode()}n";
	print "Error code: {$e->getCode()}n";
	print "Message: {$e->getMessage()}n";
	print  $e->getTraceAsString();
	echo "n";
	exit();
}
$post_array = array();
// simple way to set a task
$post_array[] = array(
	"location_name" => "United States",
	"keywords" => ["phone", "cellphone"]
);
try {
	// POST /v3/keywords_data/google_ads/keywords_for_keywords/live
	// the full list of possible parameters is available in documentation
	$result = $client->post('/v3/keywords_data/google_ads/keywords_for_keywords/live', $post_array);
	print_r($result);
	// do something with post result
} catch (RestClientException $e) {
	echo "n";
	print "HTTP code: {$e->getHttpCode()}n";
	print "Error code: {$e->getCode()}n";
	print "Message: {$e->getMessage()}n";
	print  $e->getTraceAsString();
	echo "n";
}
$client = null;
?>
```





```js
const post_array = [];

post_array.push({
  "location_name": "United States",
  "keywords": ["phone", "cellphone"]
});

const axios = require('axios');

axios({
  method: 'post',
  url: 'https://api.dataforseo.com/v3/keywords_data/google_ads/keywords_for_keywords/live',
  auth: {
    username: 'login',
    password: 'password'
  },
  data: post_array,
  headers: {
    'content-type': 'application/json'
  }
}).then(function (response) {
  var result = response['data']['tasks'];
  // Result data
  console.log(result);
}).catch(function (error) {
  console.log(error);
});
```





```python
from client import RestClient
# You can download this file from here https://cdn.dataforseo.com/v3/examples/python/python_Client.zip
client = RestClient("login", "password")
post_data = dict()
# simple way to set a task
post_data[len(post_data)] = dict(
    location_name="United States",
    keywords=["phone", "cellphone"]
)
# POST /v3/keywords_data/google_ads/keywords_for_keywords/live
# the full list of possible parameters is available in documentation
response = client.post("/v3/keywords_data/google_ads/keywords_for_keywords/live", post_data)
# you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
if response["status_code"] == 20000:
    print(response)
    # do something with result
else:
    print("error. Code: %d Message: %s" % (response["status_code"], response["status_message"]))
```





```csharp
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace DataForSeoDemos
{
    public static partial class Demos
    {
        public static async Task keywords_data_keywords_for_keywords_live()
        {
            var httpClient = new HttpClient
            {
                BaseAddress = new Uri("https://api.dataforseo.com/"),
                // Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
                DefaultRequestHeaders = { Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes("login:password"))) }
            };
            var postData = new List<object>();
            postData.Add(new
            {
                location_name = "United States",
                keywords = ["phone", "cellphone"]
            });
            // POST /v3/keywords_data/google_ads/keywords_for_keywords/live
            // the full list of possible parameters is available in documentation
            var taskPostResponse = await httpClient.PostAsync("/v3/keywords_data/google_ads/keywords_for_keywords/live", new StringContent(JsonConvert.SerializeObject(postData)));
            var result = JsonConvert.DeserializeObject<dynamic&gt(await taskPostResponse.Content.ReadAsStringAsync());
            // you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
            if (result.status_code == 20000)
            {
                // do something with result
                Console.WriteLine(result);
            }
            else
                Console.WriteLine($"error. Code: {result.status_code} Message: {result.status_message}");
        }
    }
}
```





> The above command returns JSON structured like this:

```
{
  "version": "0.1.20231117",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "1.8776 sec.",
  "cost": 0.075,
  "tasks_count": 1,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "11302008-1535-0368-0000-2bcb13ca4efb",
      "status_code": 20000,
      "status_message": "Ok.",
      "time": "1.8181 sec.",
      "cost": 0.075,
      "result_count": 2,
      "path": [
        "v3",
        "keywords_data",
        "google_ads",
        "keywords_for_keywords",
        "live"
      ],
      "data": {
        "api": "keywords_data",
        "function": "keywords_for_keywords",
        "se": "google_ads",
        "location_code": 2840,
        "keywords": [
          "average page rpm adsense"
        ]
      },
      "result": [
        {
          "keyword": "average page rpm adsense",
          "location_code": 2840,
          "language_code": null,
          "search_partners": false,
          "competition": "LOW",
          "competition_index": 0,
          "search_volume": 10,
          "low_top_of_page_bid": null,
          "high_top_of_page_bid": null,
          "cpc": null,
          "monthly_searches": [
            {
              "year": 2023,
              "month": 10,
              "search_volume": 10
            },
            {
              "year": 2023,
              "month": 9,
              "search_volume": 10
            },
            {
              "year": 2023,
              "month": 8,
              "search_volume": 0
            },
            {
              "year": 2023,
              "month": 7,
              "search_volume": 0
            },
            {
              "year": 2023,
              "month": 6,
              "search_volume": 0
            },
            {
              "year": 2023,
              "month": 5,
              "search_volume": 10
            },
            {
              "year": 2023,
              "month": 4,
              "search_volume": 10
            },
            {
              "year": 2023,
              "month": 3,
              "search_volume": 0
            },
            {
              "year": 2023,
              "month": 2,
              "search_volume": 10
            },
            {
              "year": 2023,
              "month": 1,
              "search_volume": 10
            },
            {
              "year": 2022,
              "month": 12,
              "search_volume": 10
            },
            {
              "year": 2022,
              "month": 11,
              "search_volume": 0
            }
          ],
          "keyword_annotations": {
            "concepts": null
          }
        },
        {
          "keyword": "adsense rpm average",
          "location_code": 2840,
          "language_code": null,
          "search_partners": false,
          "competition": "LOW",
          "competition_index": 0,
          "search_volume": 20,
          "low_top_of_page_bid": null,
          "high_top_of_page_bid": null,
          "cpc": null,
          "monthly_searches": [
            {
              "year": 2023,
              "month": 10,
              "search_volume": 20
            },
            {
              "year": 2023,
              "month": 9,
              "search_volume": 20
            },
            {
              "year": 2023,
              "month": 8,
              "search_volume": 20
            },
            {
              "year": 2023,
              "month": 7,
              "search_volume": 20
            },
            {
              "year": 2023,
              "month": 6,
              "search_volume": 20
            },
            {
              "year": 2023,
              "month": 5,
              "search_volume": 20
            },
            {
              "year": 2023,
              "month": 4,
              "search_volume": 20
            },
            {
              "year": 2023,
              "month": 3,
              "search_volume": 30
            },
            {
              "year": 2023,
              "month": 2,
              "search_volume": 20
            },
            {
              "year": 2023,
              "month": 1,
              "search_volume": 30
            },
            {
              "year": 2022,
              "month": 12,
              "search_volume": 30
            },
            {
              "year": 2022,
              "month": 11,
              "search_volume": 30
            }
          ],
          "keyword_annotations": {
            "concepts": null
          }
        }
      ]
    }
  ]
}
```









 

  cURL   php   Node.js   Python   cSharp