Skip to content

Keywords Data API Fresh

The Keywords Data API is the primary source for keyword research metrics. It pulls data directly from Google Ads and Bing's advertising infrastructure — the same numbers advertisers see in their platforms.

What It Covers

The API provides:

  • Search volume — monthly search counts for any keyword
  • CPC — cost-per-click estimates (low and high top-of-page bids)
  • Competition — advertiser competition index (0–100)
  • Monthly search trends — up to 4 years of historical data
  • Related keywords — discover new keyword opportunities
  • Keywords for a site — keywords relevant to a given domain
  • Ad traffic estimates — projected clicks, impressions, and cost

Data is returned for specific locations and languages. If no location is specified, worldwide results are returned.

Data Sources

All Endpoints (55 total)

Sub-GroupEndpointsWhat It Returns
Search Volume4Volume, CPC, competition, monthly breakdown
Keywords For Site4Keywords a domain ranks for (Google Ads index)
Keywords For Keywords4Related keyword suggestions from seeds
Ad Traffic By Keywords4Estimated clicks, impressions, cost for keyword bidding
EndpointWhat It Returns
Google Trends Explore — liveInterest over time, geographic breakdown, related queries
Google Trends Explore — task_postAsync version
Google Trends Explore — tasks_readyPoll for completed tasks
Google Trends Explore — task_getRetrieve trend data

DataForSEO's own trend index — normalized search interest data.

EndpointWhat It Returns
DataForSEO Trends — liveTrend data from DataForSEO's internal index
DataForSEO Trends — task_postAsync version
DataForSEO Trends — tasks_readyPoll for completed tasks
DataForSEO Trends — task_getRetrieve trend data

Clickstream Data (3 endpoints)

Real user behavior data — clicks, CTR, refined intent signal. More accurate than modeled estimates.

EndpointWhat It Returns
/v3/keywords_data/clickstream/search_volume/liveClickstream-based search volume
/v3/keywords_data/clickstream/bulk_search_volume/liveBulk clickstream volume (up to 1,000 keywords)
/v3/keywords_data/clickstream/locations_and_languagesSupported locations

Bing Ads (28 endpoints — 7 sub-groups × 4 endpoints each)

Sub-GroupWhat It Returns
Search VolumeBing search volume and CPC
Search Volume HistoryHistorical Bing volume trends
Keywords For SiteBing-relevant keywords for a domain
Keywords For KeywordsBing-based related keywords
Keyword PerformancePerformance metrics across Bing
Keyword Suggestions For URLKeyword ideas for a specific URL
Audience EstimationEstimated reach for keyword targeting on Bing

python
import os, requests
from requests.auth import HTTPBasicAuth

auth = HTTPBasicAuth(os.environ["DATAFORSEO_LOGIN"], os.environ["DATAFORSEO_PASSWORD"])

r = requests.post(
    "https://api.dataforseo.com/v3/keywords_data/google_trends/explore/live",
    auth=auth,
    headers={"Content-Type": "application/json"},
    json=[{
        "keywords": ["roofing contractor", "roof replacement", "metal roofing"],
        "location_code": 2840,
        "language_code": "en",
        "type": "web",
        "date_from": "2024-01-01",
        "date_to": "2025-01-01"
    }]
)
result = r.json()["tasks"][0]["result"][0]
print(result.get("items", []))

Clickstream Search Volume Example

python
r = requests.post(
    "https://api.dataforseo.com/v3/keywords_data/clickstream/search_volume/live",
    auth=auth,
    headers={"Content-Type": "application/json"},
    json=[{
        "keywords": ["roofing contractor dallas", "emergency roof repair"],
        "location_code": 2840,
        "language_code": "en"
    }]
)
for item in r.json()["tasks"][0]["result"]:
    print(f"{item['keyword']}: {item.get('search_volume', 0)}")

Bing Keyword Volume Example

python
r = requests.post(
    "https://api.dataforseo.com/v3/keywords_data/bing/search_volume/live",
    auth=auth,
    headers={"Content-Type": "application/json"},
    json=[{
        "keywords": ["roofing contractor dallas"],
        "location_code": 2840,
        "language_code": "en"
    }]
)

### Google Ads Endpoints

| Endpoint | What It Returns |
|----------|----------------|
| Search Volume | Volume, CPC, competition, monthly breakdown |
| Keywords For Site | Keywords relevant to a domain |
| Keywords For Keywords | Related keyword suggestions |
| Ad Traffic By Keywords | Traffic estimates for keywords |
| Google Trends Explore | Trend interest over time |

### Bing Endpoints

| Endpoint | What It Returns |
|----------|----------------|
| Search Volume | Bing search volume and CPC |
| Keywords For Site | Bing-relevant keywords for a domain |
| Keywords For Keywords | Bing-based related keywords |
| Keyword Performance | Performance metrics across Bing |

## Supported Search Engines and Locations

Both Google and Bing endpoints support location-specific queries. You can target by:

- `location_name` — full name (e.g., `"London,England,United Kingdom"`)
- `location_code` — numeric code (e.g., `2840` for the United States)
- `location_coordinate`GPS lat/long coordinates

A full list of supported locations is available via the `/v3/keywords_data/google_ads/locations` and `/v3/keywords_data/bing/locations` endpoints.

## Methods

### Live Method

Returns data immediately in a single request. Higher cost, instant results. Best for on-demand queries.

### Standard Method

Two-step flow: POST to set a task, GET to retrieve results. More affordable. Use when real-time response is not required.

Both methods support `pingback_url` and `postback_url` for webhook-based delivery.

## Rate Limits

- Up to **2000 API calls per minute**
- Up to **100 tasks per POST call**
- Up to **1000 keywords per task**

## Keyword Restrictions

Google Ads applies advertising policy restrictions to certain keyword categories. Categories including weapons, tobacco, drugs, and violence may return no data. If a batch contains one restricted keyword, the entire batch returns no data — submit restricted keywords in separate requests.

## Authentication

All endpoints use HTTP Basic Authentication. Encode `login:password` in Base64 and pass it in the `Authorization` header.

```bash
login="your_login"
password="your_password"
cred="$(printf ${login}:${password} | base64)"

curl --location --request POST "https://api.dataforseo.com/v3/keywords_data/google_ads/search_volume/task_post" \
  --header "Authorization: Basic ${cred}" \
  --header "Content-Type: application/json"
python
from client import RestClient

client = RestClient("your_login", "your_password")

Internal SOP reference — not affiliated with DataForSEO.