# PPC & Commercial Keyword Finder — Volume, CPC & Buyer Intent (`maged120/seobility-ppc-keywords`) Actor

Find profitable keywords for paid search and affiliate campaigns. Expand seed keywords into hundreds of ideas with search volume, CPC, competition, and buyer-intent scores — deduplicated and ranked by commercial value.

- **URL**: https://apify.com/maged120/seobility-ppc-keywords.md
- **Developed by:** [Maged](https://apify.com/maged120) (community)
- **Categories:** Automation, SEO tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does PPC & Commercial Keyword Finder do?

**PPC & Commercial Keyword Finder** turns a few seed keywords into a ranked list of **profitable keyword ideas** for paid search, affiliate, and e-commerce campaigns. For every keyword it returns **monthly search volume**, **average CPC**, **competition**, and **buyer-intent scores** (commercial, transactional, informational, navigational) — deduplicated across all your seeds and ranked by **commercial value**. No account or login required.

Unlike a plain keyword tool, this actor is built for people spending money on clicks: it surfaces the **high-CPC, high-intent "money keywords"** worth bidding on, and estimates the value of each.

### Why use it?

- **Build PPC campaigns faster** — get a ready-to-bid keyword list with CPC and volume.
- **Find affiliate/e-commerce niches** — filter to commercial and transactional intent only.
- **Estimate opportunity** — each keyword includes an `opportunityScore` (CPC × volume).
- **Go global** — pull volume and CPC for 10 Google markets.

### How to use it

1. Enter one or more **seed keywords**.
2. Pick a **market** (Google.com, Google.co.uk, …).
3. (Optional) Set a **minimum search volume**, or flip on **buyer-intent only**.
4. Click **Start** and download results as JSON, CSV, Excel, or HTML.

### Input

| Field | Description |
|-------|-------------|
| `seedKeywords` | List of starting keywords to expand. |
| `searchEngine` | Google market for volume/CPC. |
| `minSearchVolume` | Drop low-volume keywords. `0` = keep all. |
| `buyerIntentOnly` | Keep only commercial/transactional keywords. |
| `maxKeywordsPerSeed` | Cap rows per seed after ranking. `0` = no limit. |

```json
{
  "seedKeywords": ["running shoes", "trail shoes"],
  "searchEngine": "Google.com",
  "buyerIntentOnly": true,
  "maxKeywordsPerSeed": 100
}
```

### Output

One row per unique keyword, ranked by commercial value:

```json
{
  "entityType": "keyword",
  "seedKeyword": "running shoes",
  "keyword": "best running shoes for flat feet",
  "searchVolume": 8100,
  "cpc": 1.42,
  "competition": 0.86,
  "dominantIntent": "commercial",
  "opportunityScore": 11502.0,
  "intentCommercial": 0.71,
  "intentTransactional": 0.18,
  "intentInformational": 0.09,
  "intentNavigational": 0.02,
  "searchEngine": "Google.com",
  "scrapedAt": "2026-07-30T18:00:00Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The Output tab includes a **PPC / Money Keywords** view focused on CPC and opportunity.

### Data fields

| Field | Description |
|-------|-------------|
| `keyword` | The keyword idea |
| `searchVolume` | Estimated monthly searches |
| `cpc` | Average cost-per-click in the chosen market |
| `competition` | Paid competition (0–1) |
| `dominantIntent` | Strongest of the four intent types |
| `opportunityScore` | CPC × volume — rough monthly click value |

### Cost estimation

Billing is per result row, and every row is a unique, enriched keyword — no filler. Use `maxKeywordsPerSeed` and `minSearchVolume` to control run size and cost.

### FAQ & disclaimers

- **Where does the data come from?** Publicly available keyword metrics. You are responsible for complying with applicable terms and laws.
- **Volumes are estimates** — like all keyword tools, figures are modeled, not exact.
- **Support** — need another market or field? Open a ticket in the Issues tab.

# Actor input Schema

## `seedKeywords` (type: `array`):

One or more starting keywords. Each is expanded into related keyword ideas.

## `searchEngine` (type: `string`):

Google market to pull volume and CPC for.

## `minSearchVolume` (type: `integer`):

Drop keywords below this monthly search volume. 0 = keep all.

## `buyerIntentOnly` (type: `boolean`):

Keep only keywords whose dominant intent is commercial or transactional (best for paid/affiliate campaigns).

## `maxKeywordsPerSeed` (type: `integer`):

Cap keyword rows kept per seed after ranking. 0 = no limit.

## `proxyConfiguration` (type: `object`):

Residential proxy is required to reach the source reliably.

## Actor input object example

```json
{
  "seedKeywords": [
    "web scraping",
    "data extraction"
  ],
  "searchEngine": "Google.com",
  "minSearchVolume": 0,
  "buyerIntentOnly": false,
  "maxKeywordsPerSeed": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "seedKeywords": [
        "web scraping",
        "data extraction"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("maged120/seobility-ppc-keywords").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 = {
    "seedKeywords": [
        "web scraping",
        "data extraction",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("maged120/seobility-ppc-keywords").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "seedKeywords": [
    "web scraping",
    "data extraction"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call maged120/seobility-ppc-keywords --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=maged120/seobility-ppc-keywords",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/bpBC1sJTyqyKIH96x/builds/BAghhieqduqusSwbr/openapi.json
