# Keyword Metrics Pro - Google + Bing Volume, CPC & Trend (`doesaiknow/doesaiknow-keyword-metrics-apify`) Actor

Multi-engine keyword research API: Google + Bing search volume, CPC, competition, 12-month trends. Up to 1,000 keywords per scan, pay-per-scan, no subscription. Cache hits free. Structured JSON for SEO dashboards, n8n / Make / Zapier, AI agents. Ahrefs / Semrush alternative.

- **URL**: https://apify.com/doesaiknow/doesaiknow-keyword-metrics-apify.md
- **Developed by:** [Dawid S](https://apify.com/doesaiknow) (community)
- **Categories:** SEO tools, Lead generation, Developer tools
- **Stats:** 11 total users, 7 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.25 / google ads batch

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

### Keyword Metrics Pro 🔍

Get **multi-engine keyword search volume, CPC, competition & 12-month trends** for **Google and Bing** in a single bulk run. Up to **1,000 keywords per scan**, structured JSON output, no subscription, pay-per-scan. A practical alternative to Ahrefs / Semrush / Moz when you need raw metrics — not a full SEO suite.

This actor is built for:

- 📈 **SEO professionals** running bulk keyword research
- ✍️ **Content marketers** sizing topic opportunities
- 💰 **PPC / Google Ads & Microsoft Ads managers** comparing CPC across engines
- 🛠️ **Developers & data engineers** integrating keyword data into pipelines, dashboards, n8n / Make / Zapier flows
- 🤖 **AI / agent builders** wiring keyword metrics into LLM workflows via Apify MCP

---

#### 📌 Table of Contents

- [✨ Features](#-features)
- [🎯 Use Cases](#-use-cases)
- [⚡ Quick Start](#-quick-start)
- [🧾 Input Parameters](#-input-parameters)
- [📤 Output](#-output)
- [💰 Pricing](#-pricing)
- [🆚 How it compares](#-how-it-compares)
- [❓ FAQ](#-faq)
- [🔎 SEO Keywords](#-seo-keywords)

---

#### ✨ Features

- **🌐 Multi-engine: Google + Bing in one run**
  - The only Apify Store actor returning keyword volume from both engines side-by-side. Compare demand on Google vs. Microsoft Advertising audience without two integrations.
- **📊 Core keyword metrics**
  - Average monthly search volume, CPC (low / high), competition level + index — for each engine independently.
- **📈 12-month search trend**
  - Per-keyword monthly search volumes for the last 12 months. Computed `trend` flag (rising / stable / declining) based on last-3-mo vs prior-3-mo MoM averages (±15% threshold).
- **⚡ Bulk: up to 1,000 keywords per scan**
  - One input array, one structured dataset. No looping.
- **🌍 Country & language localization**
  - 2-letter country and language codes (e.g. `us` / `en`, `de` / `de`, `pl` / `pl`).
- **🧼 Clean structured JSON**
  - Ready for SEO dashboards, BI tools, spreadsheets, or as input to downstream agents and Apify MCP clients.
- **💸 Built-in cost control**
  - 24h run-cache: re-running same input within 24h returns cached data, you pay only the actor-start event.
  - Prefill cache: the 3 default keywords (`seo tools`, `keyword research`, `google trends`) return instantly with no upstream API call — fast feel for first-time runs.
  - Graceful free-tier exit: if your Apify plan can't cover the next paid event, the actor exits with a status message — no surprise charges.
  - **Free Apify plan limit: 200 keywords per scan.** For 200+ keywords per scan, upgrade to Starter or higher. The actor exits early with an upgrade prompt if you exceed the free limit (no charge applied).

---

#### 🎯 Use Cases

| Use Case | What you can do | Why it helps |
|---|---|---|
| 📈 SEO keyword research | Pull volume + CPC + competition for a seed list | Prioritize what to write, drop dead terms |
| 🛍️ Multi-engine commerce SEO | Compare Google vs. Bing demand for product terms | Catch the ~6% Bing audience PPC competitors ignore |
| 💰 PPC campaign planning | Get CPC ranges and competition before bidding | Build forecasted budgets that match real CPC |
| 🧠 Microsoft Ads research | Sourcing volume + CPC for Bing-only campaigns | The only bulk Bing volume API on Apify Store |
| 📅 Seasonal content planning | Read 12-month trends for evergreen vs. seasonal terms | Schedule content when interest peaks |
| 🤖 Keyword data for AI agents | Feed clean JSON into LLM workflows / Apify MCP | Replace expensive API stacks with one actor |

---

#### ⚡ Quick Start

##### Basic run

```json
{
  "keywords": ["best running shoes", "wireless headphones", "ai keyword research"],
  "country": "us",
  "language": "en"
}
````

##### Tips for clean results

- Group semantically related keywords into one run — it makes downstream filtering trivial.
- Stick to lowercase 2-letter codes for `country` and `language`.
- Start with 50–100 keywords on your first run to validate the schema, then scale to 1,000.
- Re-running the same input within 24h hits the run-cache for free (only `actor-start` charges).

***

#### 🧾 Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---:|:---:|---:|---|
| `keywords` | `array<string>` | ✅ | — | List of keywords to research, max 1,000 per run on paid plans (200 on free plan). Normalized (lowercase + trim) and deduplicated before any upstream API call. |
| `country` | `string` | ❌ | `us` | 2-letter ISO country code (e.g. `us`, `gb`, `de`, `pl`). Drives geo targeting. |
| `language` | `string` | ❌ | `en` | 2-letter language code (e.g. `en`, `de`, `pl`). Should match country. |
| `bypassRunCache` | `boolean` | ❌ | `false` | Skip the 24h KV run-cache and re-query live data. You will be charged the full Google + Bing batch fees. |

> 🧪 Coming in **v0.2**: `engines: ["google", "bing"]` filter (opt out of one engine for a cheaper Bing-only or Google-only run), AI Overview / People Also Ask detection, multi-country splits.

***

#### 📤 Output

**One dataset row per unique normalized keyword** — Google and Bing metrics returned side-by-side as flat columns.

##### Example output (single record)

```json
{
  "keyword": "wireless headphones",
  "country": "us",
  "language": "en",
  "google_search_volume": 165000,
  "google_cpc": 0.78,
  "google_competition": "HIGH",
  "google_competition_index": 87,
  "google_low_top_of_page_bid": 0.42,
  "google_high_top_of_page_bid": 1.18,
  "google_monthly_searches": [
    { "year": 2025, "month": 11, "search_volume": 201000 },
    { "year": 2025, "month": 10, "search_volume": 165000 },
    { "year": 2025, "month": 9, "search_volume": 135000 }
  ],
  "bing_search_volume": 14800,
  "bing_cpc": 0.51,
  "bing_competition": 0.84,
  "bing_low_top_of_page_bid": 0.31,
  "bing_high_top_of_page_bid": 0.92,
  "bing_monthly_searches": [
    { "year": 2025, "month": 11, "search_volume": 17500 }
  ],
  "bing_status": "ok",
  "trend": "rising",
  "mom_change_pct": 22.4,
  "source": "live"
}
```

##### Output fields

| Category | Fields |
|---|---|
| 🔑 Keyword identity | `keyword`, `country`, `language` |
| 📈 Google demand | `google_search_volume`, `google_monthly_searches[]` |
| 💰 Google ads | `google_cpc`, `google_low_top_of_page_bid`, `google_high_top_of_page_bid` |
| 🎯 Google competition | `google_competition`, `google_competition_index` |
| 📈 Bing demand | `bing_search_volume`, `bing_monthly_searches[]` |
| 💰 Bing ads | `bing_cpc`, `bing_low_top_of_page_bid`, `bing_high_top_of_page_bid` |
| 🎯 Bing competition | `bing_competition`, `bing_status` |
| 📊 Computed trend | `trend` (rising / stable / declining / unknown), `mom_change_pct` |
| 🏷️ Provenance | `source` (`live` for real-time API call, `prefill-cache` for the 3 default keywords) |

If Google or Bing returns no data for a keyword, that engine's columns are `null` — the row is still emitted with the available data.

***

#### 💰 Pricing

**From $1.35 per 1,000 keywords** (Business plan effective price; lower the higher your Apify subscription tier).

This actor uses **pay-per-event** billing — you pay only for completed steps. Failed upstream API calls do **not** charge. Cache hits skip Google + Bing fees entirely.

##### Per-event pricing (Free tier base)

| Event | Price (Free) | Starter (-30%) | Scale (-40%) | Business (-50%) |
|---|---|---|---|---|
| `actor-start` | $0.20 | $0.14 | $0.12 | $0.10 |
| `google-batch` | $0.50 | $0.35 | $0.30 | $0.25 |
| `bing-batch` (per chunk, max 200 kw) | $0.40 | $0.28 | $0.24 | $0.20 |

##### Worked examples (per 1000-keyword scan)

| Apify plan | Total per 1000 kw | Effective rate |
|---|---|---|
| Free | **$2.70** | $2.70/1k |
| Starter (Bronze discount) | **$1.89** | $1.89/1k |
| Scale (Silver discount) | **$1.62** | $1.62/1k |
| Business (Gold discount) | **$1.35** | **$1.35/1k** ← starting price |

Smaller batches scale linearly: 5 keywords on Business = $0.55, 200 keywords = $0.55 (single Bing chunk fits up to 200 kw upstream).

> 📚 [Apify pay-per-event docs →](https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event)

***

#### 🆚 How it compares

| | Keyword Metrics Pro | Single-engine alternatives | Ahrefs / Semrush scrapers |
|---|---|---|---|
| Engines | **Google + Bing** | Google only | Ahrefs / Semrush UI scrape |
| Bulk per run | up to 1,000 | up to 1,000 | varies, often slower |
| 12-month trend + computed flag | ✅ rising / stable / declining | partial | ✅ |
| Subscription required | ❌ pay-per-scan | ❌ | ❌ but 3–10× higher per-scan cost |
| Cache hits free | ✅ 24h run-cache | varies | varies |
| Best for | bulk volume + CPC across engines | Google-only quick lookups | full SEO suite analysis |

> Multi-engine bulk volume on Apify Store: as of 2026 we're not aware of another actor returning Google **and** Bing keyword volume in a single run.

***

#### ❓ FAQ

##### **Q1: Why query Google and Bing together?**

Microsoft's ads network covers Bing + Yahoo + DuckDuckGo + Outlook search — roughly **5–7% of global search share** with disproportionate B2B and 35+ demographics. CPCs on Microsoft Ads are typically lower than Google for the same keyword. If you're only checking Google volume, you're optimizing for the larger market but missing the cheaper one.

##### **Q2: How accurate is the data?**

Volumes are sourced from the official Google & Microsoft keyword planning endpoints — the same data Google Ads and Microsoft Ads users see in their respective Keyword Planners. Both endpoints quantize volume into broad bands (e.g. 165,000 not 164,217); we return them as-is to preserve fidelity.

##### **Q3: What happens if a keyword has no data?**

The record is still returned with `google_search_volume: null` and / or `bing_search_volume: null` — so your downstream join keys stay aligned. The `bing_status` field tells you whether Bing was queried successfully (`ok`), the chunk failed (`failed`), the chunk was skipped due to free-tier budget (`skipped`), or there's no Bing data for that keyword (`no_data`).

##### **Q4: Can I research languages other than English?**

Yes. Pass any supported `country` + `language` combination (e.g. `de` / `de`, `pl` / `pl`, `fr` / `fr`). Volume reflects searches in that language within that country.

##### **Q5: Can I run this from n8n / Make / Zapier / a Python script?**

Yes — use the Apify API client in your stack. Code samples auto-generated by Apify Store are below in the **API** section. The actor is also discoverable via the Apify MCP server for AI agent workflows.

##### **Q6: How does this differ from a SERP scraper?**

A SERP scraper returns the **list of pages** that rank for a keyword. This actor returns **keyword-level metrics** — volume, CPC, competition, trend. Use a SERP scraper to analyze who ranks; use this to decide which keywords are worth ranking for.

##### **Q7: Will I be charged if a call fails?**

No. Each paid event (`google-batch`, `bing-batch`) fires only after a **successful** upstream API call returns data. If the call fails, no charge for that event. The `actor-start` event always charges (covers input validation and cache lookup work).

##### **Q8: Can I bypass the cache for fresh data?**

Yes — set `bypassRunCache: true`. You'll be charged the full Google + Bing batch fees regardless of whether identical input was queried in the last 24h.

##### **Q9: Why is there a 200-keyword limit on the free Apify plan?**

Free Apify accounts can run scans of up to 200 keywords per run. We chose 200 because it's the largest single-batch size on both Google and Bing keyword endpoints — within that range, every scan is a real research session, not just a test. For deeper research (up to 1,000 keywords per scan), upgrade to **Apify Starter** or higher, which also unlocks per-event discounts (Bronze 30% off, Silver 40%, Business 50%). The actor exits gracefully with an upgrade prompt if you submit more than 200 keywords on the free plan — no charge applied to your scan.

##### **Q10: What does `source: prefill-cache` mean in the output?**

If you run the actor with the three default keywords (`seo tools`, `keyword research`, `google trends`), you'll get instant results from a bundled cache (refreshed periodically). No upstream API call is made and no Google/Bing batch fees are charged for those default queries — only the `actor-start` event fires. As soon as you change any keyword, you're back to live data with `source: live`.

***

#### 🔎 SEO Keywords

keyword search volume api, keyword volume api, keyword research api, google keyword search volume, bing keyword search volume, keyword metrics api, bulk keyword research, keyword data api, multi engine keyword research, google bing keyword research, cross platform keyword tool, keyword volume comparison, microsoft ads keyword research, microsoft advertising keyword tool, bing ads research, monthly search volume api, keyword cpc data api, ahrefs alternative, semrush alternative, dataforseo alternative, keyword research apify, keyword research tool, keyword ideas, long tail keywords, seo keywords, ppc keywords, google ads keywords, search volume scraper, keyword cpc, keyword finder.

If this actor is useful in your workflow, please **leave a rating on Apify** so others can discover it.

***

Built by [DoesAiKnow.com](https://doesaiknow.com).

# Actor input Schema

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

Up to 1000 keywords (paid Apify plans). Each is normalized (lowercase + trimmed) and deduplicated before any upstream API call (identical tasks are not refundable per upstream API ToS). FREE PLAN: limited to 200 keywords per scan; the actor exits early with an upgrade prompt above this limit. Paid plans: up to 1000 (~$1.89-$2.70 per 1000 kw — see README pricing table).

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

ISO-3166 alpha-2 country code (lowercase). Drives upstream API location targeting. 'us'=United States (default). Multi-country support coming in v0.2. Unknown codes silently fall back to 'us'.

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

ISO-639-1 language code (lowercase). Default 'en'. Must match country reasonably (e.g. de+de, fr+fr). Unknown codes silently fall back to 'en'.

## `bypassRunCache` (type: `boolean`):

Skip the 24h KV Store run-cache and re-query upstream API live. You will be charged the full Google + Bing batch fees. Default false.

## Actor input object example

```json
{
  "keywords": [
    "seo tools",
    "keyword research",
    "google trends"
  ],
  "country": "us",
  "language": "en",
  "bypassRunCache": false
}
```

# Actor output Schema

## `keywordMetrics` (type: `string`):

Default dataset link. One row per unique keyword with merged Google + Bing metrics and a computed trend flag. See dataset\_schema.json for per-field documentation.

# 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 = {
    "keywords": [
        "seo tools",
        "keyword research",
        "google trends"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("doesaiknow/doesaiknow-keyword-metrics-apify").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 = { "keywords": [
        "seo tools",
        "keyword research",
        "google trends",
    ] }

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Keyword Metrics Pro - Google + Bing Volume, CPC & Trend",
        "description": "Multi-engine keyword research API: Google + Bing search volume, CPC, competition, 12-month trends. Up to 1,000 keywords per scan, pay-per-scan, no subscription. Cache hits free. Structured JSON for SEO dashboards, n8n / Make / Zapier, AI agents. Ahrefs / Semrush alternative.",
        "version": "0.0",
        "x-build-id": "ocv45Cxz42W5YGXsR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/doesaiknow~doesaiknow-keyword-metrics-apify/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-doesaiknow-doesaiknow-keyword-metrics-apify",
                "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/doesaiknow~doesaiknow-keyword-metrics-apify/runs": {
            "post": {
                "operationId": "runs-sync-doesaiknow-doesaiknow-keyword-metrics-apify",
                "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/doesaiknow~doesaiknow-keyword-metrics-apify/run-sync": {
            "post": {
                "operationId": "run-sync-doesaiknow-doesaiknow-keyword-metrics-apify",
                "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": [
                    "keywords"
                ],
                "properties": {
                    "keywords": {
                        "title": "Keywords",
                        "minItems": 1,
                        "maxItems": 1000,
                        "type": "array",
                        "description": "Up to 1000 keywords (paid Apify plans). Each is normalized (lowercase + trimmed) and deduplicated before any upstream API call (identical tasks are not refundable per upstream API ToS). FREE PLAN: limited to 200 keywords per scan; the actor exits early with an upgrade prompt above this limit. Paid plans: up to 1000 (~$1.89-$2.70 per 1000 kw — see README pricing table).",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200
                        }
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "us",
                            "gb",
                            "ca",
                            "au",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "pl",
                            "nl",
                            "br",
                            "jp",
                            "in",
                            "mx"
                        ],
                        "type": "string",
                        "description": "ISO-3166 alpha-2 country code (lowercase). Drives upstream API location targeting. 'us'=United States (default). Multi-country support coming in v0.2. Unknown codes silently fall back to 'us'.",
                        "default": "us"
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "pl",
                            "nl",
                            "pt",
                            "ja"
                        ],
                        "type": "string",
                        "description": "ISO-639-1 language code (lowercase). Default 'en'. Must match country reasonably (e.g. de+de, fr+fr). Unknown codes silently fall back to 'en'.",
                        "default": "en"
                    },
                    "bypassRunCache": {
                        "title": "Bypass 24h run-cache",
                        "type": "boolean",
                        "description": "Skip the 24h KV Store run-cache and re-query upstream API live. You will be charged the full Google + Bing batch fees. Default false.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
