# Keyword Research API: Search Volume, CPC & SEO Keywords (`dev00/keyword-research-api`) Actor

Extract real-time keyword suggestions, search volume, CPC, and competition data. Built as a faster, lower-cost alternative to SEMrush and Ahrefs. Supports batch queries, volume filtering, and direct JSON/CSV export with zero login requirements.

- **URL**: https://apify.com/dev00/keyword-research-api.md
- **Developed by:** [dev00](https://apify.com/dev00) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 keyword analysis queries

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Keyword Research API: Search Volume, CPC & SEO Keywords

[![Rating](https://img.shields.io/badge/Rating-★★★★★-yellow)](#)
[![Speed](https://img.shields.io/badge/Speed-~500ms%20Ultra--Fast-brightgreen)](#)
[![Pricing](https://img.shields.io/badge/Pricing-🔥%20Competitive-red)](#)
[![Compliance](https://img.shields.io/badge/Status-100%25%20Operational-brightgreen)](#)

### Keyword Research API Capabilities & Real-Time Search Intelligence

The **Keyword Research API** is an ultra-fast keyword intelligence engine and scraper designed for SEO professionals, growth marketers, e-commerce managers, and software engineers. Given any seed keyword or topic phrase, the API extracts hundreds to thousands of related search queries, exact monthly search volume metrics, Cost-Per-Click (CPC) estimates, and paid competition scores.

Whether you are performing programmatic SEO page creation, auditing competitor pay-per-click strategies, building automated ad campaigns, or finding low-competition content ideas, this actor provides instant access to raw search intelligence with zero browser overhead and zero account requirements.

***

### Competitor Comparison Table

| Feature | Keyword Research API | SEMrush API | Ahrefs API | Keywords Everywhere |
| :--- | :--- | :--- | :--- | :--- |
| **Response Latency** | **~450ms (Edge Accelerated)** | 1.8s – 3.2s | 2.0s – 4.0s | 800ms – 1.5s |
| **Proxy Management** | **Automated Residential Edge** | Datacenter | Datacenter | Client API |
| **Pricing Model** | **$0.001 / query (PPE)** | $129.95/mo Min Plan | $99/mo Min Plan | Credit-based prepaid |
| **Rate Limit** | **50 req/sec** | 10 req/sec | 5 req/sec | Tiered throttles |
| **Data Freshness** | **100% Real-Time** | Cached (7–30 days) | Cached (14–60 days) | Real-Time |
| **Account / Login** | **None Required** | Mandatory Corporate Login | Mandatory API Auth | Browser Extension Key |
| **Batch Processing** | **Native Async & Sync** | Enterprise only | Enterprise only | Manual CSV upload |

***

### Common Use Cases

- **Programmatic SEO & Content Silos:** Automatically generate lists of long-tail search terms with verifiable volume to populate hundreds of targeted landing pages.
- **Google Ads & PPC Campaign Budgeting:** Screen keywords by CPC (Cost-Per-Click) and competition scores to uncover high-intent, low-cost search terms for bidding.
- **E-Commerce Product Listing Optimization:** Discover how shoppers search for specific products on Google and marketplaces to optimize Amazon, Shopify, or Etsy titles and descriptions.
- **Competitor Niche Gap Analysis:** Query brand names and competitor terms to extract high-traffic keyword clusters where your competitors hold search authority.
- **Domain & SaaS App Keyword Intelligence:** Power your own in-house SaaS dashboards, SEO auditing bots, or keyword monitoring workflows with live search data.

***

### Execution Modes

This actor supports multiple invocation patterns depending on your technical infrastructure:

1. **Synchronous Direct Run (`/run-sync-get-dataset-items`):** Block until results are parsed and receive the structured dataset items directly in your HTTP response stream. Ideal for real-time applications and microservices.
2. **Asynchronous Task Execution:** Trigger an actor execution via REST API, receive a run ID, and poll or await webhook notification upon completion.
3. **Webhook Ingestion:** Configure Apify webhooks to dispatch finished dataset payloads to your backend endpoints, Zapier, or Make.com workflows.
4. **Batch Scheduled Automation:** Schedule recurring daily or weekly keyword audits using Apify Cron schedules without manual intervention.

***

### API Endpoints & Code Examples

#### 1. cURL (Direct Apify Run)

```bash
curl --request POST \
  --url "https://api.apify.com/v2/acts/dev00~keyword-research-api/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "keyword": "seo tools",
    "limit": 100,
    "sort": "volume_desc"
  }'
```

#### 2. Python (`requests`)

```python
import requests

APIFY_TOKEN = "YOUR_APIFY_TOKEN"
actor_url = f"https://api.apify.com/v2/acts/dev00~keyword-research-api/run-sync-get-dataset-items?token={APIFY_TOKEN}"

payload = {
    "keyword": "cloud hosting",
    "min_volume": 1000,
    "limit": 50,
    "sort": "volume_desc"
}

response = requests.post(actor_url, json=payload)
if response.status_code == 201 or response.status_code == 200:
    keywords = response.json()
    print(f"Retrieved {len(keywords)} keyword records:")
    for kw in keywords[:5]:
        print(f" - {kw['keyword']}: Volume {kw['search_volume']}, CPC: {kw['cpc']}")
else:
    print(f"Error {response.status_code}: {response.text}")
```

#### 3. Node.js (`fetch`)

```javascript
import fetch from 'node-fetch';

const APIFY_TOKEN = 'YOUR_APIFY_TOKEN';
const endpoint = `https://api.apify.com/v2/acts/dev00~keyword-research-api/run-sync-get-dataset-items?token=${APIFY_TOKEN}`;

const runKeywordAudit = async () => {
  const response = await fetch(endpoint, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      keyword: 'ecommerce shoes',
      limit: 25,
      sort: 'volume_desc'
    })
  });

  const dataset = await response.json();
  console.log(`Discovered ${dataset.length} keywords.`);
  console.table(dataset.slice(0, 5));
};

runKeywordAudit();
```

***

### Full Concrete JSON Payloads

#### HTTP 200 (Success)

```json
[
  {
    "query": "seo tools",
    "keyword": "seo tools",
    "search_volume": 110000,
    "cpc": "6,12 €",
    "cpc_value": 6.12,
    "competition": 2
  },
  {
    "query": "seo tools",
    "keyword": "ubersuggest",
    "search_volume": 14800,
    "cpc": "6,84 €",
    "cpc_value": 6.84,
    "competition": 32
  },
  {
    "query": "seo tools",
    "keyword": "free keyword research tool",
    "search_volume": 2900,
    "cpc": "2,92 €",
    "cpc_value": 2.92,
    "competition": 44
  }
]
```

#### HTTP 400 (Bad Request / Schema Violation)

```json
{
  "error": {
    "type": "INVALID_INPUT",
    "message": "Parameter 'keyword' is required and cannot be empty."
  }
}
```

#### HTTP 429 (Rate Limit Exceeded)

```json
{
  "error": {
    "type": "RATE_LIMIT_EXCEEDED",
    "message": "Too many concurrent requests. Rate limit is 50 requests per second. Please back off."
  }
}
```

#### HTTP 500 (Internal Gateway Error)

```json
{
  "error": {
    "type": "GATEWAY_ERROR",
    "message": "The upstream query processor failed to respond. Retry attempt exhausted."
  }
}
```

***

### Input Parameters & Schema

| Parameter | Type | Required | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
| `keyword` | String | **Yes** | `"seo tools"` | The root keyword or phrase to research. |
| `min_volume` | Integer | No | `0` | Excludes queries with monthly search volume below this amount. |
| `max_cpc` | Number | No | `null` | Filters out keywords whose Cost-Per-Click exceeds this value. |
| `limit` | Integer | No | `100` | Maximum number of keywords to return in the dataset. |
| `sort` | String | No | `"volume_desc"` | Metric order: `volume_desc`, `volume_asc`, `cpc_desc`, `cpc_asc`, `competition_asc`, `competition_desc`. |

***

### How To Use (Step-by-Step)

1. **Sign Up or Log In:** Access your [Apify Console](https://console.apify.com) and navigate to the **Keyword Research API** actor page.
2. **Configure Seed Keywords:** Enter your target root query (e.g., `dacia`, `running shoes`, or `saas billing`).
3. **Set Filters (Optional):** Define optional constraints like `min_volume = 500` to focus strictly on commercial queries.
4. **Click Start:** Hit the **Start** button in the top right to execute the run.
5. **Export Your Dataset:** Download results instantly in your preferred format (JSON, CSV, Excel, XML, or HTML table) or feed the output directly into downstream workflows.

***

### Frequently Asked Questions (FAQ)

#### 1. Where does the search volume and CPC data originate?

The metrics reflect real-time Google search indices and advertising bidding engines, providing accurate monthly average volume estimates and commercial CPC bid ranges.

#### 2. Do I need a Google Ads or SEMrush account to run this actor?

No. The actor operates completely autonomously with no user credentials, Google accounts, or external API keys required.

#### 3. How many keywords can be discovered from a single seed term?

Depending on query popularity, seed keywords regularly yield between 500 and 3,500+ related search combinations, long-tail phrases, and semantic variations.

#### 4. What does the "competition" score represent?

Competition is an integer metric between `0` and `100` reflecting advertising density and paid bidding competition. Scores between `0-20` represent low competition (easiest organic ranking opportunity), while `80-100` denote highly competitive commercial terms.

#### 5. How are CPC values formatted?

The actor delivers both the raw localized currency string (e.g. `"0,06 €"`) and a normalized numeric float `cpc_value` (e.g. `0.06`) to facilitate programmatic filtering, calculations, and database ingestion.

#### 6. Can I filter out zero-volume search terms?

Yes. Simply set the `min_volume` parameter to any positive integer (e.g., `100` or `1000`). All terms below this monthly volume will be omitted.

#### 7. What execution mode is recommended for high-volume batch queries?

For large keyword sets, use Apify's batch runs with asynchronous actor tasks or webhook notifications to run queries concurrently without blocking client threads.

#### 8. Does this actor rotate proxies automatically?

Yes. All queries route through resilient residential proxy arrays and edge nodes with automated rotation and retry logic to guarantee 99.9% uptime.

#### 9. What happens if the seed keyword has no search volume?

If an obscure or invalid keyword yields no search suggestions, the actor outputs a structured response with `count: 0` without crashing or throwing unhandled errors.

#### 10. Can I integrate this actor directly into my SaaS product?

Yes. You can invoke this actor via Apify's standard REST API using your personal API token or integrate the dataset into your application backend.

***

### Keywords & Search Tags

`keyword research api`, `keyword search volume scraper`, `google search volume api`, `cpc calculator api`, `keyword competition checker`, `seo keyword generator`, `long tail keyword finder`, `ubersuggest alternative`, `semrush api alternative`, `ahrefs api alternative`, `pay per click keywords`, `google ads cpc scraper`, `programmatic seo keywords`, `ecommerce search terms`, `keyword difficulty tool`

# Actor input Schema

## `keyword` (type: `string`):

The root keyword or phrase to analyze (e.g., 'seo tools', 'shoes', 'dacia').

## `min_volume` (type: `integer`):

Filter results to keywords with monthly search volume greater than or equal to this threshold.

## `max_cpc` (type: `number`):

Filter keywords with cost-per-click less than or equal to this euro value (e.g., 2.50).

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

Maximum number of keywords to export into the dataset (e.g. 100).

## `sort` (type: `string`):

Order returned keywords by search volume, CPC, or competition.

## Actor input object example

```json
{
  "keyword": "seo tools",
  "min_volume": 0,
  "limit": 100,
  "sort": "volume_desc"
}
```

# Actor output Schema

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

No description

## `keyValueStoreResult` (type: `string`):

No description

# 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 = {
    "keyword": "seo tools"
};

// Run the Actor and wait for it to finish
const run = await client.actor("dev00/keyword-research-api").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 = { "keyword": "seo tools" }

# Run the Actor and wait for it to finish
run = client.actor("dev00/keyword-research-api").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 '{
  "keyword": "seo tools"
}' |
apify call dev00/keyword-research-api --silent --output-dataset

```

## MCP server setup

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

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/vXyPeYY9wmbJndIUA/builds/F3dJdMCOwoOeMx69l/openapi.json
