# Google Ads Campaign Generator (by URL) (`acmegen.ai/google-ads-campaign-generator`) Actor

Turn any website URL into a complete, launch-ready Google Search campaign: themed ad groups, keywords with match types, Responsive Search Ads, extensions, negative keywords and bidding tips - all within Google's limits. Multi-language, one campaign per URL (by URL).

- **URL**: https://apify.com/acmegen.ai/google-ads-campaign-generator.md
- **Developed by:** [Acmee AI](https://apify.com/acmegen.ai) (community)
- **Categories:** Social media, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1,000.00 / 1,000 charged for each campaigns

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## 🎯 Google Ads Campaign Generator (by URL)

Turn **any website URL** into a complete, launch-ready **Google Search campaign**. Point it at a site and our AI content engine reads the page, understands the business, and builds the whole campaign for you - one full campaign per URL.

> 🌐 **From URL to campaign.** No briefs, no blank page. Paste a website, pick a language, get a ready-to-launch structure you can paste straight into Google Ads.

**📄 Every run ships a branded, client-ready report** - the real highlight. Share it as a link or email it: the whole campaign laid out for stakeholders, not just raw JSON.

[![Google Ads campaign report preview](https://api.apify.com/v2/key-value-stores/I8KX62PBaRQ0kOeaa/records/google-ads-campaign-report.png?signature=1PBEvlXz21AREshBoF3en)](https://api.apify.com/v2/key-value-stores/I8KX62PBaRQ0kOeaa/records/google-ads-campaign-report-full.png?signature=Iet6idH1CNP3cMVeekHu)

> Preview of the HTML report - company analysis, ICP, ad groups, extensions and recommendations. Click to open the full report.

***

#### 📈 What does it do?

For each URL you provide, the actor crawls the site and returns a structured campaign:

- **Company analysis** - what they do, value proposition, products, tone and industry.
- **Ideal customer profile (ICP)** - persona, pains, triggers, objections and the search your buyer actually types.
- **3 to 5 themed ad groups** - each a different search intent, with **8 to 15 keywords** and the right **match type** (exact / phrase / broad).
- **One Responsive Search Ad (RSA) per ad group** - **10 to 15 headlines** and **4 descriptions**, all within Google's character limits.
- **Ad extensions** - sitelinks, callouts and structured snippets.
- **Negative keywords** - terms to exclude so you don't waste budget.
- **Optimization tips** - campaign type, budget, bidding and best times to run.

Every text field is validated against Google's limits in code; anything too long is trimmed and the row is flagged (`trimmed: true`).

> ℹ️ The audience, timing and bidding recommendations are AI best-practice **suggestions**, not measured performance data.

#### 🧩 Plus a branded HTML report

Each campaign is also rendered as a **branded HTML report** (saved to the Key-Value Store, returned as a public `reportUrl`) with the company summary, ICP, every ad group and the recommendations. Fill in the optional `emails` field to have it **emailed** automatically.

***

#### 🎯 Why use it?

- **Launch faster** - go from a landing page to a campaign draft in minutes.
- **Agencies** - spin up first-draft campaigns for new clients straight from their site.
- **Go multi-language** - generate the same site in English, Spanish, Portuguese and more.
- **Refresh accounts** - benchmark and rebuild a stale campaign structure.

***

#### 🚀 How to use

1. Add one or more **website URLs**.
2. Pick an **output language** (or leave `auto` to match the site).
3. *(Optional)* add **emails** to receive the HTML report.
4. Click **Start**. You get one campaign per URL.

Prefer real time? Call the Standby endpoint `POST /generate` (see API integration below).

***

#### 💲 Pricing

Pay per result: you are charged once per URL for which a campaign is generated (`campaign-generated`). **URLs that fail or can't be processed are not charged.**

***

#### 📥 Input

```json
{
  "urls": ["https://www.apify.com"],
  "language": "en",
  "emails": []
}
```

| Field | Required | Description |
|---|---|---|
| `urls` | yes | Websites to analyze. One full campaign per URL (max 20). |
| `language` | no | `auto`, `en`, `pt-BR`, `es`, `fr`, `de`, `it`. Default `auto`. |
| `emails` | no | Send the branded HTML report to these addresses. |

***

#### 📤 Output

One record per URL. Example (arrays trimmed for brevity):

```json
{
  "url": "https://www.apify.com",
  "language": "en",
  "success": true,
  "company": {
    "name": "Apify",
    "whatTheyDo": "Full-stack web scraping and browser automation platform.",
    "industry": "Web scraping / automation"
  },
  "icp": {
    "persona": "Developers and data teams who need reliable web data.",
    "searchIntent": "web scraping api"
  },
  "adGroups": [
    {
      "name": "Web Scraping Platform",
      "theme": "Category",
      "keywords": [
        { "text": "web scraping platform", "matchType": "phrase" },
        { "text": "web scraping api", "matchType": "exact" }
      ],
      "rsa": {
        "headlines": ["Scrape Any Website", "Automate Data Extraction", "Start Free Today"],
        "descriptions": ["Extract data from any site at scale with ready-made tools.", "Reliable proxies and storage built in. Try it free."],
        "paths": ["scraping", "api"],
        "finalUrl": "https://www.apify.com"
      }
    }
  ],
  "extensions": {
    "sitelinks": [{ "text": "Browse Actors", "description1": "Thousands of ready tools", "description2": "Run them in one click" }],
    "callouts": ["Free to start", "No credit card", "Cloud-based"],
    "structuredSnippets": { "header": "Features", "values": ["Actors", "Proxy", "Storage", "Scheduler"] }
  },
  "negativeKeywords": ["free", "jobs", "tutorial", "course"],
  "insights": {
    "campaignType": "Search",
    "budgetTip": "Start small and scale the ad groups with the lowest CPA.",
    "biddingTip": "Begin on Maximize Clicks, then move to Target CPA once you have data."
  },
  "trimmed": false,
  "reportUrl": "https://api.apify.com/v2/key-value-stores/XXXX/records/report-...&signature=...",
  "generatedAt": "2026-06-10T12:00:00.000Z",
  "error": null
}
```

A URL that can't be processed comes back with `success: false` and a filled `error`. See the **Dataset schema** tab for the full field list.

***

#### ❓ FAQ

**What is the reportUrl?**
A public, signed link to a branded HTML campaign report (ICP, all ad groups, recommendations). It opens in any browser, no token needed.

**Will the copy fit Google Ads?**
Yes. The character limits are enforced in code; anything over is trimmed and the row is flagged with `trimmed: true`.

**Are the recommendations real performance data?**
No - they are AI best-practice **suggestions** to use as a starting point. Validate against your own campaign data.

**Can I process many sites at once?**
Yes - up to 20 URLs per run, one campaign each.

**Can I call it in real time?**
Yes. The Standby endpoint `POST /generate` responds synchronously.

***

#### 🔌 API integration

**Batch run:**

```bash
curl -X POST "https://api.apify.com/v2/acts/acme-ai~google-ads-campaign-generator/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls":["https://www.apify.com"],"language":"en","emails":["you@company.com"]}'
```

**Standby (`POST /generate`):**

```bash
curl -X POST "https://acme-ai--google-ads-campaign-generator.apify.actor/generate" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  --compressed \
  -d '{"urls":["https://www.apify.com"],"language":"en"}'
```

The token goes in the `Authorization: Bearer` header, never in the URL.

***

#### 🔗 Related actors

- [AI Google Ads Generator](https://apify.com/acme-ai/ai-google-ads-generator) - generate many **RSA ad copy variations** from a short product description and offer (text in, ads out), when you don't have a URL.

***

#### 📌 Notes

Generated ad copy and recommendations are provided as a starting point and are not guarantees of performance. Always review the copy and comply with Google Ads policies before publishing.

# Actor input Schema

## `urls` (type: `array`):

The website(s) to analyze. We crawl each one and generate a complete Google Ads campaign per URL. Add one or more public URLs, e.g. <b>\["https://www.apify.com"]</b>. Up to 20 per run.

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

Language of the generated ads and report. Use <b>auto</b> to detect the site's own language, or pick one. The same site can be generated in different languages across runs.

## `emails` (type: `array`):

Optional. Send the branded HTML campaign report to these email addresses, e.g. <b>\["you@company.com"]</b>.

## Actor input object example

```json
{
  "urls": [
    "https://www.apify.com"
  ],
  "language": "auto"
}
```

# Actor output Schema

## `campaigns` (type: `string`):

Generated campaigns (one record per URL).

# 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 = {
    "urls": [
        "https://www.apify.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("acmegen.ai/google-ads-campaign-generator").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 = { "urls": ["https://www.apify.com"] }

# Run the Actor and wait for it to finish
run = client.actor("acmegen.ai/google-ads-campaign-generator").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.apify.com"
  ]
}' |
apify call acmegen.ai/google-ads-campaign-generator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,acmegen.ai/google-ads-campaign-generator"
        }
    }
}

```

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

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/yPgQYPXzvJRFvXeMb/builds/34Bby0TPqXTHg1eSP/openapi.json
