# Google Keyword Finder (`scrapepilot/google-keyword-finder`) Actor

Extract real-time keyword ideas from Google & Bing Autocomplete. Get reliable search volume trends backed by Google Trends and competition metrics derived from live SERP results. Transparent, fast, and perfect for SEO/PPC campaigns. Pay per result with zero proxy hassles!"

- **URL**: https://apify.com/scrapepilot/google-keyword-finder.md
- **Developed by:** [Scrape Pilot](https://apify.com/scrapepilot) (community)
- **Categories:** SEO tools, Developer tools, Automation
- **Stats:** 18 total users, 10 monthly users, 87.6% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 scraped keyword results

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Google Keyword Finder

🔍 **Google Keyword Finder** is a powerful Apify Actor designed to discover and analyze **Google Keyword** suggestions using multiple search engines and expansion methods. This tool provides comprehensive **Google Keyword** data including real search volume estimates via Google Trends, competition levels from live SERP data, intent-based CPC ranges, and trend analysis. Whether you're conducting SEO research, keyword planning, or content strategy development, the Google Keyword Finder delivers actionable **Google Keyword** intelligence efficiently.

With multi-source keyword aggregation, intelligent alphabet expansion, real metrics from Google Trends & SERP, and real-time dataset integration, the Google Keyword Finder ensures comprehensive discovery of relevant **Google Keyword** opportunities. It focuses on key **Google Keyword** metrics including search volume buckets, competition levels, CPC ranges, and trends — making it an essential tool for **Google Keyword** research and SEO strategy planning.

---

### 📋 Table of Contents

- [Features](#-features)
- [How It Works](#-how-it-works)
- [Input](#-input)
- [Output](#-output)
- [Keyword Sources](#-keyword-sources)
- [Metrics Explained](#-metrics-explained)
- [Technical Stack](#-technical-stack)
- [Data Fields](#-data-fields)
- [Use Cases](#-use-cases)
- [Quick Start](#-quick-start)
- [Configuration](#-configuration)
- [Performance](#-performance)
- [Data Accuracy & Fallback Mechanism](#-data-accuracy--fallback-mechanism)
- [Important Notes](#-important-notes)
- [Changelog](#-changelog)
- [Support](#-support)

---

### 🔥 Features

- **Google Autocomplete Scraping** – Fetches **Google Keyword** suggestions directly from Google autocomplete API with country and language targeting.
- **Bing Autocomplete Integration** – Aggregates **Google Keyword** suggestions from Bing search suggestions for comprehensive results.
- **Alphabet Expansion** – Intelligently expands seed keywords with alphabet characters (a-z) to discover long-tail **Google Keyword** variations.
- **Google Trends Integration** – Fetches real interest-over-time data via `pytrends` for accurate volume bucket estimation and trend detection (Rising / Stable / Declining).
- **Live SERP Competition Analysis** – Queries Google search result counts for real competition classification (High / Medium / Low) based on actual indexed pages.
- **Intent-Based CPC Ranges** – Estimates CPC as a meaningful range (e.g. `$1.50-$4.00`) based on commercial intent signals — no random numbers.
- **Autocomplete Position Fallback** – Uses suggestion position as a volume signal when Google Trends is unavailable.
- **Keyword Structure Fallback** – Classifies competition from keyword structure when SERP is blocked.
- **Data Source Transparency** – Every keyword record includes `volume_data_source` and `competition_data_source` fields so you know exactly how each metric was derived.
- **Multi-Country Support** – Supports location-based **Google Keyword** research with country/language targeting.
- **Proxy Support** – Apify residential proxy support for reliable access to search engines.
- **Bulk Keyword Processing** – Analyzes multiple keywords and variations in batch.
- **Deduplication** – Automatically removes duplicate keyword suggestions.
- **Real-Time Dataset Push** – Pushes results to Apify Dataset with metrics after each keyword.
- **Pay-Per-Event (PPE) Support** – Charges per scraped result and stops automatically at charge limit.
- **Timestamp Recording** – Records analysis timestamp for tracking.
- **Error Handling** – Graceful error handling with fallback strategies and detailed logging.
- **Asyncio-Friendly** – Non-blocking async/await architecture.

> ⚠️ **Note**: Exact CPC figures require a paid Google Ads API account. These are ranges for planning purposes only.

---

### ⚙️ How It Works

The Google Keyword Finder takes a seed keyword as input and discovers related keywords using multiple sources and expansion methods. It queries Google and Bing autocomplete APIs, expands the keyword using alphabet methods, then enriches each keyword with real data from Google Trends and Google SERP. Results are aggregated, deduplicated, and pushed to the Apify Dataset.

**Key Processing Steps:**

1. **Input Parsing** – Accept seed keyword and configuration from Actor input
2. **Proxy Setup** – Configure Apify residential proxy if available
3. **Google Autocomplete** – Query Google suggestions with locale targeting; record suggestion position
4. **Bing Autocomplete** – Query Bing suggestions for additional keywords
5. **Alphabet Expansion** – Expand seed keyword with a–z characters until limit is reached
6. **Deduplication** – Remove duplicate keywords across sources
7. **Google Trends** – Fetch 12-month interest data per keyword; calculate avg score, peak, and trend direction
8. **Volume Bucketing** – Map Trends score (or autocomplete position) to search volume bucket
9. **SERP Competition** – Query Google result count; classify as High / Medium / Low
10. **CPC Estimation** – Assign CPC range based on commercial intent signals in keyword
11. **Trend Detection** – Derive Rising / Stable / Declining from Trends time-series slope
12. **Result Compilation** – Assemble all fields including data source metadata
13. **Dataset Push** – Push each record to Apify Dataset in real time
14. **PPE Charging** – Charge per result; stop automatically if charge limit is reached

**Key Benefits:**

- Discover long-tail **Google Keyword** variations
- Research competitors' **Google Keyword** strategies
- Find low-competition **Google Keyword** opportunities
- Plan content calendars based on **Google Keyword** trends
- Estimate traffic and revenue potential
- Identify seasonal keyword trends
- Build comprehensive keyword databases

---

### 📥 Input

The Actor accepts the following input parameters:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `seed_keyword` | string | **required** | Base keyword to expand (e.g., "digital marketing", "seo tools") |
| `limit` | integer | `100` | Maximum keywords to discover (1–1000) |
| `country` | string | `"us"` | Country code for localized results (us, uk, de, fr, etc.) |
| `language` | string | `"en"` | Language code (en, de, fr, es, etc.) |
| `use_google_trends` | boolean | `true` | Fetch real volume & trend data from Google Trends (pytrends) |
| `fetch_serp_competition` | boolean | `true` | Fetch real competition data from Google SERP result counts |
| `proxyConfiguration` | object | `{"useApifyProxy": true}` | Proxy settings |

**Example Input:**

```json
{
  "seed_keyword": "digital marketing",
  "limit": 150,
  "country": "us",
  "language": "en",
  "use_google_trends": true,
  "fetch_serp_competition": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

**International Example:**

```json
{
  "seed_keyword": "seo tools",
  "limit": 100,
  "country": "uk",
  "language": "en"
}
```

**Fast Mode (estimates only, no Trends or SERP calls):**

```json
{
  "seed_keyword": "best digital marketing agencies",
  "limit": 200,
  "use_google_trends": false,
  "fetch_serp_competition": false
}
```

***

### 📤 Output

The Actor pushes **Google Keyword** records with the following structure:

| Field | Type | Description |
|-------|------|-------------|
| `keyword` | string | Discovered **Google Keyword** |
| `search_volume_bucket` | string | Estimated monthly search volume range (e.g. `"1K-10K"`, `"100-1K"`) |
| `search_volume_numeric_estimate` | integer | Midpoint numeric estimate for the volume bucket |
| `trends_avg_interest_score` | float | Average Google Trends interest score over 12 months (0–100), or `null` |
| `trends_peak_interest_score` | float | Peak Google Trends interest score over 12 months, or `null` |
| `volume_data_source` | string | How volume was derived: `"google_trends"` or `"autocomplete_position"` |
| `trend` | string | Trend direction: `Rising`, `Stable`, `Declining`, or `Unknown` |
| `competition` | string | Competition level: `High`, `Medium`, or `Low` |
| `serp_result_count` | integer | Raw Google SERP result count used for competition, or `null` |
| `competition_data_source` | string | How competition was derived: `"google_serp"` or `"keyword_structure_fallback"` |
| `cpc_range_estimate` | string | Estimated CPC range in USD (e.g. `"$1.50-$4.00"`) |
| `cpc_intent_signal` | string | Intent signal driving the CPC range (e.g. `"Moderate commercial intent"`) |
| `cpc_note` | string | Reminder that exact CPC requires the Google Ads API |
| `autocomplete_position` | integer | Position of the keyword in the autocomplete suggestions list |
| `autocomplete_source` | string | Autocomplete source: `"google"` or `"bing"` |
| `scraped_at` | string | ISO 8601 analysis timestamp (UTC) |

**Example Output Records:**

```json
{
  "keyword": "digital marketing services",
  "search_volume_bucket": "10K-100K",
  "search_volume_numeric_estimate": 50000,
  "trends_avg_interest_score": 62.4,
  "trends_peak_interest_score": 89.0,
  "volume_data_source": "google_trends",
  "trend": "Stable",
  "competition": "High",
  "serp_result_count": 452000000,
  "competition_data_source": "google_serp",
  "cpc_range_estimate": "$1.50-$4.00",
  "cpc_intent_signal": "Moderate commercial intent",
  "cpc_note": "Range based on commercial intent. Exact CPC needs Google Ads API.",
  "autocomplete_position": 0,
  "autocomplete_source": "google",
  "scraped_at": "2025-02-14T12:00:00Z"
}
```

```json
{
  "keyword": "affordable digital marketing",
  "search_volume_bucket": "1K-10K",
  "search_volume_numeric_estimate": 5000,
  "trends_avg_interest_score": 41.2,
  "trends_peak_interest_score": 67.0,
  "volume_data_source": "google_trends",
  "trend": "Rising",
  "competition": "Medium",
  "serp_result_count": 3800000,
  "competition_data_source": "google_serp",
  "cpc_range_estimate": "$1.50-$4.00",
  "cpc_intent_signal": "Moderate commercial intent",
  "cpc_note": "Range based on commercial intent. Exact CPC needs Google Ads API.",
  "autocomplete_position": 2,
  "autocomplete_source": "google",
  "scraped_at": "2025-02-14T12:00:00Z"
}
```

```json
{
  "keyword": "how to learn digital marketing",
  "search_volume_bucket": "100-1K",
  "search_volume_numeric_estimate": 500,
  "trends_avg_interest_score": null,
  "trends_peak_interest_score": null,
  "volume_data_source": "autocomplete_position",
  "trend": "Unknown",
  "competition": "Low",
  "serp_result_count": null,
  "competition_data_source": "keyword_structure_fallback",
  "cpc_range_estimate": "$0.50-$2.00",
  "cpc_intent_signal": "Informational intent",
  "cpc_note": "Range based on commercial intent. Exact CPC needs Google Ads API.",
  "autocomplete_position": 4,
  "autocomplete_source": "bing",
  "scraped_at": "2025-02-14T12:00:00Z"
}
```

***

### 🌐 Keyword Sources

#### **1. Google Autocomplete**

- **API**: `https://suggestqueries.google.com/complete/search`
- **Method**: GET request with parameters
- **Parameters**: `q` (query), `hl` (language), `gl` (country), `client` (firefox)
- **Response**: JSON with keyword suggestions
- **Reliability**: High (primary search engine data)
- **Latency**: Low (<500ms)
- **Position signal**: Suggestion index (0 = highest volume) used as fallback volume estimate

#### **2. Bing Autocomplete**

- **API**: `https://api.bing.com/osjson.aspx`
- **Method**: GET request with parameters
- **Parameters**: `query` (search term)
- **Response**: JSON with suggestions
- **Reliability**: High (secondary search engine)
- **Latency**: Low (<500ms)

#### **3. Alphabet Expansion**

- **Method**: Combine seed keyword with alphabet characters (a-z)
- **Query Pattern**: `"{seed_keyword} {letter}"`
- **Coverage**: Discovers long-tail variations
- **Examples**: `"seo tools a"`, `"seo tools b"`, etc.
- **Deduplication**: Removes duplicates across all sources

#### **4. Google Trends (pytrends)**

- **Library**: `pytrends`
- **Timeframe**: Last 12 months (`today 12-m`)
- **Output**: Average interest score, peak interest score, trend direction
- **Proxy-aware**: Uses Apify proxy if configured
- **Timeout**: 15s connection, 30s read
- **Retries**: 2 with backoff

#### **5. Google SERP (Result Count)**

- **URL**: `https://www.google.com/search`
- **Query**: Exact-match search (`"keyword"`)
- **Output**: Raw result count → competition bucket
- **Retries**: 2 attempts with 2s delay between them

***

### 📊 Metrics Explained

#### **Search Volume Bucket**

- **Definition**: Estimated monthly search volume range based on Google Trends interest score
- **Source priority**: Google Trends first; autocomplete position if Trends fails
- **Buckets**:

| Trends Score | Bucket | Numeric Estimate |
|---|---|---|
| ≥ 80 | `100K+` | 100,000 |
| 60–79 | `10K-100K` | 50,000 |
| 40–59 | `1K-10K` | 5,000 |
| 20–39 | `100-1K` | 500 |
| 5–19 | `10-100` | 50 |
| < 5 | `<10` | 5 |

- **Autocomplete position fallback**:

| Position | Bucket | Numeric Estimate |
|---|---|---|
| 0 | `10K-100K` | 50,000 |
| 1–2 | `1K-10K` | 5,000 |
| 3–5 | `100-1K` | 500 |
| 6+ | `10-100` | 50 |

#### **Trend**

- **Definition**: Keyword popularity direction derived from 12-month Trends time series
- **Method**: Compares average of last 3 months vs. first 3 months
- **Thresholds**:
  - **Rising**: Recent average > 15% above older average
  - **Declining**: Recent average > 15% below older average
  - **Stable**: Within ±15%
- **Fallback**: `"Unknown"` when Trends data is unavailable

#### **Competition**

- **Primary source**: Google SERP exact-match result count
- **Thresholds**:
  - **High**: ≥ 10,000,000 results
  - **Medium**: 1,000,000–9,999,999 results
  - **Low**: < 1,000,000 results
- **Fallback** (`keyword_structure_fallback`): Keyword structure analysis
  - **High**: Contains "agency", "service", "company", "best", "buy", "hire", "software"
  - **Low**: Contains "how", "what", "why", "learn", "free", "definition", "meaning"
  - **Medium**: Everything else

#### **CPC Range**

- **Definition**: Estimated PPC advertising cost range based on commercial intent signals
- **Method**: Keyword token analysis — no random values
- **Ranges**:

| Intent Level | Range | Signal Words |
|---|---|---|
| High commercial (2+ signals) | `$3.00-$8.00` | buy, agency, service, software, solution, … |
| Moderate commercial (1 signal) | `$1.50-$4.00` | same set, single match |
| Informational | `$0.50-$2.00` | how to, learn, course, training, guide, … |
| Low / generic | `$0.20-$1.00` | no matching signals |

***

### 🧰 Technical Stack

- **HTTP Requests**: `requests` library with asyncio executor
- **Async**: `asyncio` for concurrent, non-blocking requests
- **Google Trends**: `pytrends` library with proxy and retry support
- **APIs**: Google Autocomplete, Bing Autocomplete, Google SERP, Google Trends
- **Pattern Matching**: Python `re` for result-count extraction and text cleaning
- **JSON**: Native JSON parsing
- **Proxy**: Apify Proxy with residential support
- **SSL**: `urllib3` (warnings suppressed for proxy compatibility)
- **Logging**: Apify Actor logging system
- **Platform**: Apify Actor serverless environment
- **PPE**: Pay-Per-Event charging via `Actor.charge()`
- **Timeout**: 15–20 seconds per request

***

### 📊 Data Fields Explained

#### **Keyword Identity**

- **keyword**: Clean, normalized keyword text
- **autocomplete\_source**: Which autocomplete API provided it (`google` / `bing`)
- **autocomplete\_position**: Position index in the suggestion list (lower = more popular)

#### **Volume & Trend**

- **search\_volume\_bucket**: Human-readable volume range (e.g. `"1K-10K"`)
- **search\_volume\_numeric\_estimate**: Single numeric midpoint for sorting/filtering
- **trends\_avg\_interest\_score**: 12-month average Google Trends score (0–100)
- **trends\_peak\_interest\_score**: 12-month peak Google Trends score (0–100)
- **volume\_data\_source**: `"google_trends"` or `"autocomplete_position"`
- **trend**: `Rising`, `Stable`, `Declining`, or `Unknown`

#### **Competition**

- **competition**: `High`, `Medium`, or `Low`
- **serp\_result\_count**: Raw SERP result count (null if SERP was blocked)
- **competition\_data\_source**: `"google_serp"` or `"keyword_structure_fallback"`

#### **CPC**

- **cpc\_range\_estimate**: Estimated CPC range in USD
- **cpc\_intent\_signal**: Short description of the intent driving the range
- **cpc\_note**: Disclaimer about exact CPC requiring Google Ads API

#### **Metadata**

- **scraped\_at**: UTC timestamp of analysis in ISO 8601 format

***

### 🎯 Use Cases

- **SEO Keyword Research** – Find **Google Keyword** opportunities for content
- **Content Strategy** – Plan content calendar around **Google Keyword** trends
- **PPC Campaign Planning** – Identify profitable **Google Keyword** targets with CPC ranges
- **Competitor Analysis** – Research competitor keyword strategies
- **Long-tail Discovery** – Find low-competition long-tail **Google Keyword** variations
- **Niche Market Research** – Discover profitable niches via **Google Keyword** analysis
- **Product Ideas** – Identify market demand via **Google Keyword** search volume buckets
- **Blog Topic Planning** – Generate blog topics from Rising trend keywords
- **Landing Page Optimization** – Create landing pages for high-volume target keywords
- **Paid Search Strategy** – Plan PPC campaigns using intent-based CPC ranges
- **International SEO** – Research keywords in different languages and countries
- **Seasonal Keyword Planning** – Identify seasonal **Google Keyword** trend shifts
- **Question-Based Content** – Find informational queries from autocomplete data
- **Keyword Gap Analysis** – Identify unranked **Google Keywords** for your site
- **Market Sizing** – Estimate market size via **Google Keyword** volume buckets

***

### 🚀 Quick Start

#### **1. Prepare Input**

Go to Apify Console and enter:

```json
{
  "seed_keyword": "digital marketing",
  "limit": 150,
  "country": "us",
  "language": "en",
  "use_google_trends": true,
  "fetch_serp_competition": true
}
```

#### **2. Run the Actor**

Click **Start**. The Actor will:

- Query Google & Bing Autocomplete
- Expand with a–z alphabet variations
- Fetch 12-month Trends data per keyword
- Query SERP result counts for competition
- Estimate CPC ranges from intent signals
- Push results to Dataset in real time

#### **3. Monitor Progress**

Console shows:

```
Seed='digital marketing' country=us lang=en proxy=yes
Collecting autocomplete suggestions...
Got 22, expanding with alphabet...
Total keywords to process: 148
[1/148] 'digital marketing'
  Trends OK: score=71.3 bucket=10K-100K trend=Stable
  SERP OK: High (812000000)
[2/148] 'digital marketing agency'
  Trends OK: score=55.1 bucket=1K-10K trend=Rising
  SERP OK: High (245000000)
...
Done! 148 keywords processed.
```

#### **4. View & Download Results**

- **Results Tab**: All keyword records with full metrics
- **Export**: JSON, CSV, Excel
- **Filter**: By `search_volume_bucket`, `competition`, `trend`
- **Sort**: By `search_volume_numeric_estimate` or `cpc_range_estimate`
- **API**: Query via Apify API

***

### ⚙️ Configuration

#### **Seed Keyword**

Single word:

```json
{ "seed_keyword": "seo" }
```

Multi-word:

```json
{ "seed_keyword": "best seo tools" }
```

Long-tail:

```json
{ "seed_keyword": "best affordable seo tools for small business" }
```

#### **Geographic Targeting**

US English:

```json
{ "country": "us", "language": "en" }
```

UK English:

```json
{ "country": "uk", "language": "en" }
```

German:

```json
{ "country": "de", "language": "de" }
```

#### **Speed vs. Data Quality**

Full real data (slower):

```json
{ "use_google_trends": true, "fetch_serp_competition": true }
```

Estimates only (faster):

```json
{ "use_google_trends": false, "fetch_serp_competition": false }
```

#### **Resource Usage**

- Memory: ~50–100MB (pytrends adds overhead)
- CPU: ~10–20% during processing
- Network: ~500KB–2MB per keyword (Trends + SERP calls)
- API calls per keyword: up to 4 (Google autocomplete, Bing, Trends, SERP)

***

### ⚠️ Data Accuracy & Fallback Mechanism

To ensure resilient runs, this Actor attempts real-time data fetching first. If Google's anti-bot systems block requests, it falls back to intelligent estimates automatically — your run will not fail.

**Volume & Trend:**

| Scenario | Source | Field value |
|---|---|---|
| Trends succeeds | `pytrends` (12-month data) | `volume_data_source: "google_trends"` |
| Trends blocked / error | Autocomplete suggestion position | `volume_data_source: "autocomplete_position"` |

**Competition:**

| Scenario | Source | Field value |
|---|---|---|
| SERP succeeds | Live Google result count | `competition_data_source: "google_serp"` |
| SERP blocked after 2 retries | Keyword structure analysis | `competition_data_source: "keyword_structure_fallback"` |

**CPC:** Always derived from commercial intent signals. No random values — ever.

> Always check the `volume_data_source` and `competition_data_source` fields in your output to understand exactly how each keyword's metrics were computed.

***

### 📦 Changelog

#### v2.0.0 (2025)

**Major Update — Real Data Sources:**

- ✅ Google Trends integration via `pytrends` (real 12-month interest scores)
- ✅ Live SERP competition from Google result counts
- ✅ Trend detection from time-series slope (Rising / Stable / Declining)
- ✅ Intent-based CPC ranges (no random values)
- ✅ `volume_data_source` and `competition_data_source` transparency fields
- ✅ Autocomplete position fallback for volume
- ✅ Keyword structure fallback for competition
- ✅ Pay-Per-Event (PPE) charging via `Actor.charge()`
- ✅ `use_google_trends` and `fetch_serp_competition` input toggles
- ✅ Search volume as bucket + numeric estimate (not single number)
- ✅ SERP retry logic (2 attempts, 2s delay)
- ✅ Trends retry logic (retries=2, backoff\_factor=0.5)

#### v1.0.0 (February 2025)

**Initial Release:**

- Google Autocomplete API integration
- Bing Autocomplete API integration
- Alphabet expansion method (a-f letters)
- Estimated search volume, competition, CPC, and trend
- Country and language targeting
- Apify proxy support
- Bulk keyword processing
- Deduplication across sources
- Real-time Dataset push
- ISO 8601 timestamp recording
- Error handling and logging

***

### 🧑‍💻 Support & Feedback

- **Issues:** Submit via Apify Console
- **Documentation:** Check Actor details page
- **Community:** Apify forum discussions
- **Feature Requests:** Suggest improvements via console
- **Bug Reports:** Include seed keyword, country/language settings, and Actor log output

***

**Disclaimer:**
Google Keyword Finder is provided as-is for keyword research purposes. Users are responsible for ensuring compliance with search engine terms of service. Search volume buckets, competition levels, and CPC ranges are estimates for planning purposes. Always verify with official tools like Google Keyword Planner and Google Ads for campaign-critical data.

***

### 🎉 Get Started Today

**Deploy now for keyword research!**

Use for:

- 📊 SEO Research
- 🎯 Content Planning
- 💡 Keyword Discovery
- 📈 Trend Analysis
- 💰 PPC Strategy

**Perfect for:**

- SEO Professionals
- Content Marketers
- PPC Specialists
- Digital Marketers
- Agency Teams

***

**Last Updated:** 2025
**Version:** 2.0.0
**Status:** Production Ready
**Platform:** Apify Actor
**Architecture:** Async/Await
**Sources:** Google Autocomplete + Bing Autocomplete + Google Trends + Google SERP
**Expansion:** Full Alphabet method (a-z)
**Volume Data:** Google Trends (pytrends) with autocomplete position fallback
**Competition Data:** Live SERP result count with keyword structure fallback
**CPC Data:** Commercial intent analysis (no random values)

***

### 📚 Related Tools

- Smart Article Extractor
- Business Social Media Finder
- Fast News Content Scraper
- Website Technology Stack Scraper

**Your complete Apify-powered keyword research solution!** 🚀✨

# Actor input Schema

## `seed_keyword` (type: `string`):

The main keyword to find suggestions for.

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

Maximum number of keywords to collect.

## `country` (type: `string`):

Target country (e.g., us, uk, de).

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

Target language (e.g., en, fr).

## `use_google_trends` (type: `boolean`):

Attempt to fetch real volume data from Google Trends. Uncheck for a faster run using estimates.

## `fetch_serp_competition` (type: `boolean`):

Attempt to scrape live Google search result counts. Uncheck for a faster run.

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

Select the proxy to avoid Google blocks. Residential proxies recommended.

## Actor input object example

```json
{
  "seed_keyword": "digital marketing",
  "limit": 100,
  "country": "us",
  "language": "en",
  "use_google_trends": true,
  "fetch_serp_competition": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "seed_keyword": "digital marketing"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilot/google-keyword-finder").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 = { "seed_keyword": "digital marketing" }

# Run the Actor and wait for it to finish
run = client.actor("scrapepilot/google-keyword-finder").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 '{
  "seed_keyword": "digital marketing"
}' |
apify call scrapepilot/google-keyword-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapepilot/google-keyword-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Keyword Finder",
        "description": "Extract real-time keyword ideas from Google & Bing Autocomplete. Get reliable search volume trends backed by Google Trends and competition metrics derived from live SERP results. Transparent, fast, and perfect for SEO/PPC campaigns. Pay per result with zero proxy hassles!\"",
        "version": "0.0",
        "x-build-id": "P3W20D6hwHpEGnoPc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapepilot~google-keyword-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapepilot-google-keyword-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapepilot~google-keyword-finder/runs": {
            "post": {
                "operationId": "runs-sync-scrapepilot-google-keyword-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapepilot~google-keyword-finder/run-sync": {
            "post": {
                "operationId": "run-sync-scrapepilot-google-keyword-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "seed_keyword"
                ],
                "properties": {
                    "seed_keyword": {
                        "title": "Seed Keyword",
                        "type": "string",
                        "description": "The main keyword to find suggestions for."
                    },
                    "limit": {
                        "title": "Max Keywords",
                        "type": "integer",
                        "description": "Maximum number of keywords to collect.",
                        "default": 100
                    },
                    "country": {
                        "title": "Country Code",
                        "type": "string",
                        "description": "Target country (e.g., us, uk, de).",
                        "default": "us"
                    },
                    "language": {
                        "title": "Language Code",
                        "type": "string",
                        "description": "Target language (e.g., en, fr).",
                        "default": "en"
                    },
                    "use_google_trends": {
                        "title": "Fetch Google Trends Data",
                        "type": "boolean",
                        "description": "Attempt to fetch real volume data from Google Trends. Uncheck for a faster run using estimates.",
                        "default": true
                    },
                    "fetch_serp_competition": {
                        "title": "Fetch SERP Competition",
                        "type": "boolean",
                        "description": "Attempt to scrape live Google search result counts. Uncheck for a faster run.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Select the proxy to avoid Google blocks. Residential proxies recommended.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
