# Which Countries Are Supported for Keyword Difficulty and Search Intent in Open SEO?

> Discover which countries Open SEO supports for keyword difficulty and search intent. Access comprehensive data for DataForSEO Labs markets, excluding Google Ads-only regions.

- Repository: [Every App/open-seo](https://github.com/every-app/open-seo)
- Tags: api-reference
- Published: 2026-09-09

---

**Keyword difficulty and search intent data is available for all DataForSEO Labs-supported markets, but is explicitly disabled for Google Ads-only countries such as Iceland (location code 2352) where these fields return null.**

Open SEO retrieves keyword difficulty (KD) and search intent metrics through the DataForSEO Labs service. While the majority of global markets support these advanced features, certain countries served exclusively by Google Ads lack analytical depth for these specific metrics. Understanding this distinction is critical when interpreting keyword data across different regions.

## Understanding the Data Provider Architecture

The library maintains a strict mapping between location codes and their respective data providers in [`src/shared/keyword-locations.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/keyword-locations.ts). This central configuration distinguishes between markets served by **DataForSEO Labs** (which provide full KD and intent data) and those limited to **Google Ads** data (which omit these metrics).

The `getKeywordDataProvider` function serves as the authoritative source for determining capability. It accepts a numeric location code and returns either `"labs"` or `"google_ads"` as the provider identifier. This utility is used throughout the codebase to conditionally route keyword metric requests.

Key files governing this logic include:

- [`src/shared/keyword-locations.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/keyword-locations.ts) – Contains the central mapping of DataForSEO location codes to data providers.
- [`src/shared/keyword-locations.test.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/keyword-locations.test.ts) – Validates the provider mapping, including edge cases like Iceland.
- [`src/server/lib/dataforseo/keyword-metrics.ts`](https://github.com/every-app/open-seo/blob/main/src/server/lib/dataforseo/keyword-metrics.ts) – Implements the conditional logic that skips KD/intent retrieval when the provider is `"google_ads"`.
- [`src/server/mcp/tools/dataforseo-research-tools.ts`](https://github.com/every-app/open-seo/blob/main/src/server/mcp/tools/dataforseo-research-tools.ts) – Documents the limitation for Google Ads-only markets in the tool definitions.

## How to Verify Country Support Programmatically

To determine whether a specific market supplies keyword difficulty and search intent, use the `getKeywordDataProvider` utility. This function returns `"labs"` for markets with full metrics and `"google_ads"` for markets that lack KD and intent support.

```typescript
import { getKeywordDataProvider } from '@/shared/keyword-locations';

// Example: Check support for United States (location code 2840)
const locationCode = 2840;
const provider = getKeywordDataProvider(locationCode);

if (provider === 'labs') {
  console.log('Keyword difficulty and search intent are available for this country.');
} else {
  console.log('Only volume and CPC data available; KD and intent are null.');
}

```

When the provider returns `"google_ads"`, the system deliberately omits KD and intent API calls, optimizing both performance and cost for markets where these metrics are unavailable.

## Google Ads-Only Markets Without KD and Intent

Countries served exclusively by Google Ads represent the primary limitation for keyword difficulty and search intent coverage. **Iceland (location code 2352)** serves as the canonical example of a Google Ads-only market within the Open SEO codebase.

In [`src/server/lib/dataforseo/keyword-metrics.ts`](https://github.com/every-app/open-seo/blob/main/src/server/lib/dataforseo/keyword-metrics.ts), the retrieval logic explicitly checks the provider type before requesting Labs-specific endpoints. For Iceland and similar markets, the code bypasses KD and intent calculations, returning `null` values for these fields while preserving available metrics like search volume and cost-per-click (CPC).

This architectural decision prevents unnecessary API calls to DataForSEO Labs for endpoints that would return empty datasets, ensuring efficient resource utilization across all supported geographies.

## Summary

- **Full Support:** All DataForSEO Labs markets (the majority of countries) return complete keyword difficulty and search intent data.
- **Limited Support:** Google Ads-only markets (e.g., Iceland, location code 2352) return `null` for KD and intent fields.
- **Verification Method:** Use `getKeywordDataProvider(locationCode)` from [`src/shared/keyword-locations.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/keyword-locations.ts) to programmatically check support status.
- **Implementation Logic:** The system conditionally routes requests based on provider type in [`src/server/lib/dataforseo/keyword-metrics.ts`](https://github.com/every-app/open-seo/blob/main/src/server/lib/dataforseo/keyword-metrics.ts).

## Frequently Asked Questions

### Which specific countries do not support keyword difficulty and search intent?

Iceland (location code 2352) is explicitly identified as a Google Ads-only market that lacks KD and intent support. Any country mapped to the `"google_ads"` provider in [`src/shared/keyword-locations.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/keyword-locations.ts) shares this limitation, though Iceland remains the primary documented example in the source code and test files.

### How can I check if my target country supports these metrics before making API calls?

Import the `getKeywordDataProvider` function from [`src/shared/keyword-locations.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/keyword-locations.ts) and pass your target location code as an argument. If the function returns `"labs"`, both keyword difficulty and search intent are available. A return value of `"google_ads"` indicates these metrics are not supported for that region.

### What values are returned for keyword difficulty and search intent in unsupported countries?

For Google Ads-only markets, the system returns `null` for both keyword difficulty and search intent fields. This behavior is hardcoded in [`src/server/lib/dataforseo/keyword-metrics.ts`](https://github.com/every-app/open-seo/blob/main/src/server/lib/dataforseo/keyword-metrics.ts) to ensure consistent API responses regardless of the underlying data provider limitations.

### Where is the logic that determines which data provider to use for each country?

The provider determination logic resides in [`src/shared/keyword-locations.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/keyword-locations.ts), which exports the `getKeywordDataProvider` function. This mapping is extensively tested in [`src/shared/keyword-locations.test.ts`](https://github.com/every-app/open-seo/blob/main/src/shared/keyword-locations.test.ts), ensuring accurate provider assignment across all supported location codes.