# DataForSEO - Keyword Ideas, Search Volume & Backlinks (`clearpath/dataforseo`) Actor

Use DataForSEO without an account or $50 top-up: keyword ideas, search volume, CPC, difficulty, search intent, AI search volume, Google Trends, ranked keywords, competitors and backlinks. One row per keyword, domain or backlink, every field. Any other DataForSEO endpoint runs too. Billed per call.

- **URL**: https://apify.com/clearpath/dataforseo.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 6 total users, 4 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.69 / 1,000 credits

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![DataForSEO. No account needed. Keyword ideas, search volume and backlinks, one row per result.](https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/dataforseo-readme-hero-keywords-v2-8576a23558ff.png)](https://console.apify.com/actors/fVz6tfmTCAkBxvBbF/input)

From **Clearpath**, creators of [Google AI Overview Scraper](https://apify.com/clearpath/google-ai-overview), [SpyFu Domain Intelligence Scraper](https://apify.com/clearpath/spyfu-scraper) and [Brave Search API](https://apify.com/clearpath/brave-search-api). **11,000+ combined lifetime runs** across these three search and SEO actors.

### DataForSEO keyword data without the account

**No account, no key, no $50 top-up.** Keyword ideas, search volume, keyword difficulty, search intent, AI search volume, Google Trends, the keywords any domain ranks for, its competitors and its backlinks, straight from DataForSEO's databases. Pick the job, enter keywords or domains and a country.

**One row per keyword, every field.** Each keyword, domain or backlink becomes its own row with every field DataForSEO returns: volume, CPC, competition, difficulty, intent, 12-month trend, plus readable location, language and category names. Prefer the raw response? Rows per call keep DataForSEO's `result` exactly as returned.

**Billed by what each call returns.** 1,000 keyword ideas cost about 268 credits ($0.27), search volume for up to 1,000 keywords 184 credits ($0.18). A call that returns no rows costs nothing. Every other DataForSEO endpoint works too: type its path.

<a href="https://console.apify.com/actors/fVz6tfmTCAkBxvBbF/input" data-demo-cta="true"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/dataforseo-readme-cta-no-account-v1-fbb313d33612.png" width="248" height="52" alt="Run a DataForSEO call" /></a>

### Quick input

Up to 1,000 keyword ideas for "crm software" in the United States, about 268 credits ($0.27):

```json
{
  "path": "dataforseo_labs/google/keyword_ideas/live",
  "keywords": ["crm software"],
  "location": "United States",
  "limit": 1000
}
```

[Open actor input](https://console.apify.com/actors/fVz6tfmTCAkBxvBbF/input) to pick another job. Location takes any country, region or city; the main language there is chosen for you.

<table>
<tr>
<td style="background:#9EDE39;color:#0F1933;padding:10px 14px;font-size:13px;font-weight:700;border-radius:4px 4px 0 0">Clearpath · Search &amp; SEO Data</td>
</tr>
<tr>
<td style="padding:6px;border:1px solid #CFE8A6;border-top:none;border-radius:0 0 4px 4px;background:#F2FAE6">
<span style="display:inline-block;vertical-align:top;margin:3px;padding:8px 8px;border:1px solid #CFE8A6;border-radius:4px;background:#E3F3C8"><span style="white-space:nowrap"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/dataforseo-readme-nav-icon-v1-b46bf715cf44.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://console.apify.com/actors/fVz6tfmTCAkBxvBbF/input" style="color:#0F1933;text-decoration:none;font-weight:700;font-size:13px">DataForSEO</a></span><br><span style="color:#3D5216;font-size:12px;white-space:nowrap">You are here</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:8px 8px;border:1px solid #CFE8A6;border-radius:4px;background:#F2FAE6"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-oK9eSdSqGJk9kJUQf-XcZUFyzJxs-google-ai-summary-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/clearpath/google-ai-overview" style="color:#0F1933;text-decoration:none;font-weight:700;font-size:13px">AI Overview</a></span><br><span style="color:#3D5216;font-size:12px;white-space:nowrap">Google AI answers &amp; sources</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:8px 8px;border:1px solid #CFE8A6;border-radius:4px;background:#F2FAE6"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-7Fs85gfq1XtijG7IC-y9u1RUdU14-spyfu-logo.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/clearpath/spyfu-scraper" style="color:#0F1933;text-decoration:none;font-weight:700;font-size:13px">SpyFu</a></span><br><span style="color:#3D5216;font-size:12px;white-space:nowrap">Domain keywords &amp; ads</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:8px 8px;border:1px solid #CFE8A6;border-radius:4px;background:#F2FAE6"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-VHU8FUyEga22BNETx-irbNgcPHFQ-brave-search-api-logo.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/clearpath/brave-search-api" style="color:#0F1933;text-decoration:none;font-weight:700;font-size:13px">Brave Search</a></span><br><span style="color:#3D5216;font-size:12px;white-space:nowrap">Web, image &amp; video results</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:8px 8px;border:1px solid #CFE8A6;border-radius:4px;background:#F2FAE6"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-94IAdoWZXpv3cHXzD-V6dJa2yC7K-google-ads-transparency-scraper.png" width="20" height="20" alt="" style="vertical-align:middle"/>&nbsp;&nbsp;<a href="https://apify.com/clearpath/google-ads-transparency-scraper" style="color:#0F1933;text-decoration:none;font-weight:700;font-size:13px">Google Ads</a></span><br><span style="color:#3D5216;font-size:12px;white-space:nowrap">Advertiser ad library</span></span>
</td>
</tr>
</table>

#### Copy to your AI assistant

```text
clearpath/dataforseo on Apify returns DataForSEO keyword data with no DataForSEO account: keyword ideas, long-tail suggestions, related keywords, Google Ads search volume with CPC and competition, keyword overview, keyword difficulty, search intent, AI search volume, Google Trends, the keywords a domain ranks for, competitors of a domain and backlinks; every other DataForSEO v3 data endpoint also runs by its path. Input: path (a job such as dataforseo_labs/google/keyword_ideas/live or any endpoint path as in https://docs.dataforseo.com/v3/), keywords (jobs that take a keyword list get batches of up to 200 for ideas, 700 for overview, 1,000 for volume, difficulty, intent and AI volume, 5 for Trends; other jobs run once per keyword) or targets (domains, one call each; domain jobs also accept domains under keywords), location (country, region or city name, two-letter country code or location code; an ambiguous name stops the run listing the exact names; per-country jobs use a city's country), language (empty: the location's main language), limit (results per call, up to 1,000, on jobs that have it), payload (any further DataForSEO parameters, which win over location, language and limit), requests (several calls, each with its own path and fields, up to 10,000 per run), maxItems (caps total rows, runs calls one at a time and bills each started call in full). Output: outputFormat "items" (default) gives one row per keyword, domain or backlink with DataForSEO's field names unchanged plus endpoint, query, request_index, task_params, result_info, location_name, language_name and category_names; "tasks" gives one row per call with DataForSEO's result exactly as returned; a result too large for one row is saved whole in the key-value store, its row carrying oversized, record_key and record_url. task_post paths work for SERP, Merchant, Business Data and App Data and are waited for; account and task paths are refused. Each call's status and DataForSEO message are in the SUMMARY record and log. Pricing: 4 credits per call plus credits in proportion to its data (1,000 keyword ideas about 268, up to 1,000 keyword volumes 184, 1,000 backlinks 124), $0.99 per 1,000 credits on the Free plan down to $0.69 on Gold, nothing for calls that return no rows, plus Apify's platform start fee. Every input and output field: the Input and Output tabs at https://apify.com/clearpath/dataforseo. Current pricing: https://apify.com/clearpath/dataforseo To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

### How to get DataForSEO keyword data on Apify

1. **Job**: pick one from the list, such as keyword ideas or search volume. Any other DataForSEO endpoint works too: type its path.
2. **Keywords or domains**: the keywords to look up, or the domains for domain jobs.
3. **Location**: a country, region or city. Language and results per request are optional.
4. Press **Start**. Each keyword, domain or backlink arrives as its own row.

#### The keyword jobs

| Job | You enter | One row is |
|---|---|---|
| Keyword ideas from seed keywords | up to 200 seed keywords per call | a keyword with search volume, CPC, competition, difficulty, intent, 12-month trend and category names |
| Long-tail suggestions for a keyword | a keyword, one call each | a longer keyword containing it, with the same metrics |
| Related keywords | a keyword, one call each | a keyword from Google's related searches, with the same metrics |
| Search volume, CPC and competition (Google Ads) | up to 1,000 keywords per call | a keyword with monthly searches, CPC, top-of-page bids, competition and 12-month history |
| Keyword overview: volume, difficulty and intent | up to 700 keywords per call | a keyword with volume, difficulty, intent and the search features it shows |
| Keyword difficulty | up to 1,000 keywords per call | a keyword with difficulty from 0 to 100 |
| Search intent | up to 1,000 keywords per call | a keyword with its main intent and the likelihood of each |
| AI search volume (ChatGPT and other assistants) | up to 1,000 keywords per call | a keyword with how often it is asked in AI assistants, by month |
| Google Trends | up to 5 keywords per call | a Trends graph, map or topic item |
| Keywords a domain ranks for | a domain, one call each | a keyword with the domain's position, ranking URL, previous position, estimated traffic and traffic share |
| Competitors of a domain | a domain, one call each | a competing domain with shared keywords and estimated traffic |
| Backlinks of a domain | a domain, one call each | a backlink with anchor, source page and link attributes |

Longer keyword lists are split into calls of that size and run in parallel.

#### Location and language

- **Location** takes a country (`United States`), a two-letter country code (`DE`), a region or city (`Munich, Germany`), a full DataForSEO location name (`London,England,United Kingdom`) or a location code (`2840`).
- A name that fits several places, such as `London`, stops the run before anything is charged and lists the exact names to use.
- Most keyword jobs have data per country. Enter a city and they use its country; the log says so. Search volume from Google Ads works down to city level.
- **Language** is optional. Empty, it is the location's main language: the one with the most keyword data there, for example Dutch for Belgium. A language the location does not offer stops the run and lists the ones it does.

#### Several jobs in one run

`requests` is a list of calls, each with its own job and fields; fields set at the top apply to every request that does not set its own. They run in parallel, up to 10,000 calls per run:

```json
{
  "location": "United States",
  "requests": [
    {"path": "keywords_data/google_ads/search_volume/live", "keywords": ["crm software", "email marketing"]},
    {"path": "dataforseo_labs/google/ranked_keywords/live", "targets": ["hubspot.com"], "limit": 1000},
    {"path": "backlinks/backlinks/live", "targets": ["hubspot.com"]}
  ]
}
```

#### Any other DataForSEO endpoint

Type the endpoint's path as written in DataForSEO's documentation, and put any parameters the fields above do not cover in `payload`, exactly as DataForSEO documents them. Values in `payload` win over location, language and results per request:

```json
{
  "path": "dataforseo_labs/google/historical_search_volume/live",
  "keywords": ["crm software"],
  "location": "United States",
  "payload": {"include_clickstream_data": true}
}
```

#### Input options

| Parameter | Type | Default | Meaning |
|---|---|---|---|
| `path` | string | none | The keyword job, or any DataForSEO endpoint path. `task_post` paths of SERP, Merchant, Business Data and App Data are waited for, so their results arrive in this run; other families: use the `live` path. |
| `keywords` | list | none | Keywords for the job. List jobs get batches; other jobs run once per keyword. Domain jobs also accept domains here. |
| `targets` | list | none | Domains or URLs, one call each. Use keywords or targets, not both. |
| `location` | string | none | Country, region, city, two-letter country code or location code. Required for most keyword jobs. |
| `language` | string | the location's main language | A language name or code. |
| `limit` | integer | DataForSEO's default | Results per call, up to 1,000, on jobs that have a result count. |
| `payload` | object | none | Any further DataForSEO parameters; they win over the fields above. A list of objects runs one call each. |
| `maxItems` | integer | none (every row) | Stops after this many rows. With a limit, calls run one at a time and each call that ran is billed in full. |
| `requests` | list | none | Several calls, each with `path` and any of the fields above. |
| `method` | POST or GET | chosen for you | POST when there are parameters, GET for lists without them. |
| `outputFormat` | items or tasks | items | `items`: one row per result. `tasks`: one row per call with DataForSEO's `result` exactly as returned. |

Every option is also described on the Input tab. Search results, Maps, News, Merchant, App, Business and On-Page endpoints work the same way by their path.

#### Example row

One keyword idea for "crm software" in the United States, rows per result. It carries every field DataForSEO returned for the keyword, the call's parameters in `task_params`, and readable location, language and category names (the paging token `offset_token` is shortened here; rows carry it in full, so `payload` can continue the list):

```json
{
  "endpoint": "dataforseo_labs/google/keyword_ideas/live",
  "method": "POST",
  "status_code": 20000,
  "status_message": "Ok.",
  "task_id": "10091013-2752-0400-0000-6e4da91ee5fc",
  "request_index": 1,
  "query": "crm software",
  "location_code": 2840,
  "location_name": "United States",
  "language_code": "en",
  "language_name": "English",
  "task_params": {
    "se_type": "google",
    "keywords": [
      "crm software"
    ],
    "location_code": 2840,
    "language_code": "en",
    "limit": 5
  },
  "fetched_at": "2026-10-09T10:13:19Z",
  "result_index": 0,
  "result_info": {
    "se_type": "google",
    "seed_keywords": [
      "crm software"
    ],
    "location_code": 2840,
    "language_code": "en",
    "total_count": 251621,
    "items_count": 5,
    "offset": 0,
    "offset_token": "eyJDdXJyZW50T2Zmc2V0Ijo1..."
  },
  "item_index": 1,
  "se_type": "google",
  "keyword": "crm system",
  "keyword_info": {
    "se_type": "google",
    "last_updated_time": "2026-09-15 20:09:32 +00:00",
    "competition": 0.49,
    "competition_level": "MEDIUM",
    "cpc": 36.98,
    "search_volume": 33100,
    "low_top_of_page_bid": 6.18,
    "high_top_of_page_bid": 45.6,
    "categories": [
      10019,
      10168,
      10296,
      10885,
      11270,
      12209,
      12578
    ],
    "monthly_searches": [
      {
        "year": 2026,
        "month": 8,
        "search_volume": 22200
      },
      {
        "year": 2026,
        "month": 7,
        "search_volume": 22200
      },
      {
        "year": 2026,
        "month": 6,
        "search_volume": 27100
      },
      {
        "year": 2026,
        "month": 5,
        "search_volume": 27100
      },
      {
        "year": 2026,
        "month": 4,
        "search_volume": 33100
      },
      {
        "year": 2026,
        "month": 3,
        "search_volume": 40500
      },
      {
        "year": 2026,
        "month": 2,
        "search_volume": 33100
      },
      {
        "year": 2026,
        "month": 1,
        "search_volume": 40500
      },
      {
        "year": 2025,
        "month": 12,
        "search_volume": 33100
      },
      {
        "year": 2025,
        "month": 11,
        "search_volume": 33100
      },
      {
        "year": 2025,
        "month": 10,
        "search_volume": 40500
      },
      {
        "year": 2025,
        "month": 9,
        "search_volume": 49500
      }
    ],
    "search_volume_trend": {
      "monthly": 0,
      "quarterly": -18,
      "yearly": -18
    },
    "category_names": [
      "Computers & Consumer Electronics",
      "Computers & Consumer Electronics > Computers",
      "Computers & Consumer Electronics > Computers > Software > Business & Productivity Software > Business Management Software",
      "Computers & Consumer Electronics > Computers > Software",
      "Computers & Consumer Electronics > Computers > Software > Business & Productivity Software > Business Management Software > Project Management Software",
      "Computers & Consumer Electronics > Computers > Software > Business & Productivity Software",
      "Computers & Consumer Electronics > Computers > Software > Business & Productivity Software > Business Management Software > Project Management Software > Enterprise Resource Planning Software"
    ]
  },
  "keyword_info_normalized_with_bing": null,
  "keyword_info_normalized_with_clickstream": null,
  "clickstream_keyword_info": null,
  "keyword_properties": {
    "se_type": "google",
    "core_keyword": "crm systems",
    "synonym_clustering_algorithm": "text_processing",
    "keyword_difficulty": 56,
    "detected_language": "en",
    "is_another_language": false,
    "words_count": 2
  },
  "serp_info": null,
  "avg_backlinks_info": {
    "se_type": "google",
    "backlinks": 3258.7,
    "dofollow": 2478.3,
    "referring_pages": 2983.6,
    "referring_domains": 1044.2,
    "referring_main_domains": 931.5,
    "rank": 278.8,
    "main_domain_rank": 676.6,
    "last_updated_time": "2026-07-30 05:44:21 +00:00"
  },
  "search_intent_info": {
    "se_type": "google",
    "main_intent": "commercial",
    "foreign_intent": null,
    "last_updated_time": "2026-04-29 08:20:12 +00:00"
  }
}
```

Other jobs carry their own DataForSEO fields next to the same request columns. A Google Ads search volume row:

```json
{
  "endpoint": "keywords_data/google_ads/search_volume/live",
  "method": "POST",
  "status_code": 20000,
  "status_message": "Ok.",
  "task_id": "10090852-2752-0367-0000-6244c5199973",
  "request_index": 4,
  "query": "crm software, technical seo",
  "location_code": 2840,
  "location_name": "United States",
  "language_code": "en",
  "language_name": "English",
  "task_params": {
    "se": "google_ads",
    "keywords": [
      "crm software",
      "technical seo"
    ],
    "location_code": 2840,
    "language_code": "en"
  },
  "fetched_at": "2026-10-09T08:52:36Z",
  "result_index": 0,
  "item_index": 1,
  "keyword": "crm software",
  "spell": null,
  "search_partners": false,
  "competition": "LOW",
  "competition_index": 8,
  "search_volume": 165000,
  "low_top_of_page_bid": 6.18,
  "high_top_of_page_bid": 51.72,
  "cpc": 38.64,
  "monthly_searches": [
    {
      "year": 2026,
      "month": 8,
      "search_volume": 201000
    },
    {
      "year": 2026,
      "month": 7,
      "search_volume": 201000
    },
    {
      "year": 2026,
      "month": 6,
      "search_volume": 246000
    },
    {
      "year": 2026,
      "month": 5,
      "search_volume": 550000
    },
    {
      "year": 2026,
      "month": 4,
      "search_volume": 110000
    },
    {
      "year": 2026,
      "month": 3,
      "search_volume": 74000
    },
    {
      "year": 2026,
      "month": 2,
      "search_volume": 74000
    },
    {
      "year": 2026,
      "month": 1,
      "search_volume": 135000
    },
    {
      "year": 2025,
      "month": 12,
      "search_volume": 90500
    },
    {
      "year": 2025,
      "month": 11,
      "search_volume": 110000
    },
    {
      "year": 2025,
      "month": 10,
      "search_volume": 165000
    },
    {
      "year": 2025,
      "month": 9,
      "search_volume": 165000
    }
  ]
}
```

Rows also carry `keyword_info.category_names` next to Google's numeric `categories`, and rows of keywords a domain ranks for add `rank_difference` (previous position minus current) and `etv_share_percent` (the keyword's share of the domain's estimated traffic).

JSON export keeps every nested field. CSV and Excel flatten nested fields into columns.

### Pricing

Each call is billed in credits by what it returns: 4 credits per call plus credits for its data, in proportion to how much the call returns. A call that returns no rows costs nothing.

| Plan | Price per 1,000 credits |
|---|---|
| Free | $0.99 |
| Bronze | $0.89 |
| Silver | $0.79 |
| Gold and above | $0.69 |

Typical calls on the Free plan:

| Job | Size | Credits | Price |
|---|---|---|---|
| Keyword ideas | 1,000 ideas | 268 | $0.27 |
| Long-tail suggestions or related keywords | 100 keywords | 52 | $0.05 |
| Search volume, CPC and competition (Google Ads) | up to 1,000 keywords | 184 | $0.18 |
| Keyword overview, difficulty or intent | 100 keywords | 52 | $0.05 |
| AI search volume | 100 keywords | 44 | $0.04 |
| Google Trends | up to 5 keywords | 26 | $0.03 |
| Keywords a domain ranks for | 1,000 keywords | 268 | $0.27 |
| Competitors of a domain | 100 domains | 52 | $0.05 |
| Backlinks of a domain | 1,000 backlinks | 124 | $0.12 |

Apify's standard actor start charge applies to every run. There is no separate start fee from this actor. Set a spending limit on the run to cap the total: a call is never started once the limit cannot cover it, and a call the limit only partly covers delivers the share of its rows that was paid for.

### Use it from AI agents, n8n and Make

- **Claude, ChatGPT and other AI agents**: add the actor to [Apify's MCP server](https://mcp.apify.com/?actors=clearpath/dataforseo). The agent picks the job and passes keywords and a location; rows come back ready to read.
- **n8n, Make and Zapier**: use Apify's official integrations to run the actor and read its dataset.
- **Code**: call it with the Apify client for Python or JavaScript, or the Apify API, and read the default dataset.

Every run also saves a `SUMMARY` record listing each call with its status, message, row count and credits.

### FAQ

**Do I need a DataForSEO account or a DataForSEO API key?**
No. Calls run on this actor's own access. You need only an Apify account.

**How does the price compare with buying DataForSEO directly?**
DataForSEO's own pay-as-you-go accounts have a $50 minimum payment. Here you pay per call from your Apify balance, starting with a single keyword lookup.

**Which locations and languages work?**
Any location DataForSEO knows, by name or code; most keyword jobs have data for 94 countries, Google Ads search volume down to city level. An ambiguous place name stops the run with the exact names to use, and the main language of the location is used unless you set one.

**Which endpoints work?**
The 12 keyword jobs in the list, and DataForSEO's other data endpoints by their path: SERP, Keywords Data, Labs, Backlinks, On-Page instant pages, content parsing and Lighthouse, Merchant, App Data, Business Data, Domain Analytics, Content Analysis and AI Optimization. Account pages, task lists and multi-call site crawls are not available, because every caller shares this actor's access.

**Is the data the same as DataForSEO's?**
Yes. Rows per result keep DataForSEO's field names and values unchanged and add the request columns; when a result nested in a SERP block shares a field with its block, the block's value is kept as `parent_<field>`. Rows per call (`"outputFormat": "tasks"`) return DataForSEO's `result` exactly as it comes. A single result too large for a dataset row (above about 8.5 MB) is saved whole in the run's key-value store, and its row links to it with `record_url`.

**What about `task_post` endpoints?**
For SERP, Merchant, Business Data and App Data, the actor submits the task and waits for it, then saves the results in the same run; each task needs at least 10 minutes left in the run (2 with `"priority": 2`). Other families' `task_post` paths, such as Google Ads or LLM responses, can take hours on DataForSEO's side, so they are refused; their `live` paths return the same data within the run.

**Why did a call return nothing, and am I charged?**
The run log and the `SUMMARY` record say why: DataForSEO's own message for a wrong parameter (for example an invalid `location_code`), no results for the query, or a call that could not be completed right now. None of these is charged. Re-run the calls marked as not completed.

**Can I schedule it?**
Yes. Save the input as a task and schedule it on Apify to track search volumes, rankings or backlinks over time.

### Support

Open an issue on the Issues tab, or email max@mapa.slmail.me. Include the run link and the endpoint you called.

This actor is independent and is not affiliated with or endorsed by DataForSEO.

# Actor input Schema

## `path` (type: `string`):

Pick a keyword job, or type any other DataForSEO endpoint path as written in DataForSEO's documentation (a leading <code>/v3/</code> or the full documentation URL also works). <code>task_post</code> paths of SERP, Merchant, Business Data and App Data are waited for, so their results arrive in this run; for other families use the <code>live</code> path. Leave empty when you use the request list below.

## `keywords` (type: `array`):

Keywords for the job above. Jobs that take a keyword list (keyword ideas, volume, overview, difficulty, intent, AI search volume, Trends) send them in batches of up to 200 to 1,000 per call (5 for Trends); other jobs run once per keyword. Domain jobs also accept domains here.

## `targets` (type: `array`):

Optional. Domains or URLs; runs the job once per domain (keywords a domain ranks for, competitors, backlinks). Use either keywords or domains, not both.

## `location` (type: `string`):

Pick a country or type any location: a country, region or city name (narrow it with commas, for example <code>London, United Kingdom</code>), a two-letter country code, or a DataForSEO location code. A name that fits several places stops the run with the exact names to use. Jobs whose data is per country use the country of a city you enter.

## `language` (type: `string`):

Optional. A language name or code. Empty: the location's main language, the one with the most keyword data there.

## `limit` (type: `integer`):

Optional. How many results each call returns on jobs that have a result count (keyword ideas, suggestions, related keywords, domain keywords, competitors, backlinks), up to 1,000. Empty: DataForSEO's default (700 for keyword ideas, 100 for the others). Credits follow the rows returned.

## `payload` (type: `object`):

Optional. Any further parameters as one JSON object, exactly as DataForSEO documents them for the job, for example <code>{"include_serp_info": true}</code>. Values here win over location, language and results per request.

## `maxItems` (type: `integer`):

Optional. Stops the run once this many rows are saved. Empty: every result is saved. With a limit set, calls run one at a time and no new call starts once the limit is reached. Each call that ran is billed in full; to pay less per call, lower the endpoint's own <code>depth</code> or <code>limit</code> in the parameters.

## `requests` (type: `array`):

Optional. Several requests in one run, each an object with <code>path</code> and <code>payload</code>, and optionally <code>keywords</code>, <code>targets</code> or <code>method</code>, for example <code>\[{"path": "serp/google/maps/live/advanced", "payload": {"keyword": "pizza new york", "location_code": 2840}}, {"path": "backlinks/summary/live", "payload": {"target": "hubspot.com"}}]</code>. A <code>payload</code> here may also be a list of parameter objects, one call each. Requests run in parallel and run together with the endpoint above. Up to 10,000 calls per run.

## `method` (type: `string`):

Optional. Chosen for you: POST when there are parameters, GET for lists without parameters such as locations and languages.

## `outputFormat` (type: `string`):

Rows per result (default): one row per result item, such as each search result, keyword or backlink, with DataForSEO's own field names plus the request it came from. Ready for spreadsheets and filtering. Rows per call: one row per call with DataForSEO's <code>result</code> exactly as it returns it. A call too large for one row is saved as rows per result instead, so nothing is lost.

## `feedback` (type: `string`):

For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns.

## Actor input object example

```json
{
  "path": "dataforseo_labs/google/keyword_ideas/live",
  "keywords": [
    "crm software"
  ],
  "location": "United States",
  "limit": 1000,
  "outputFormat": "items"
}
```

# Actor output Schema

## `results` (type: `string`):

One row per result item, with every field DataForSEO returned.

## `summary` (type: `string`):

Every request of the run with its status, message, rows and credits.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "path": "dataforseo_labs/google/keyword_ideas/live",
    "keywords": [
        "crm software"
    ],
    "location": "United States",
    "limit": 1000
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/dataforseo").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "path": "dataforseo_labs/google/keyword_ideas/live",
    "keywords": ["crm software"],
    "location": "United States",
    "limit": 1000,
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/dataforseo").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "path": "dataforseo_labs/google/keyword_ideas/live",
  "keywords": [
    "crm software"
  ],
  "location": "United States",
  "limit": 1000
}' |
apify call clearpath/dataforseo --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/dataforseo"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fVz6tfmTCAkBxvBbF/builds/poO2CnBqZAoiVaKrS/openapi.json
