# Tool: Ad Copy Generator (`scrapers_lat/ad-copy-generator-tool`) Actor

Generate platform-ready ad copy for Google, Meta, LinkedIn and TikTok, with headlines and descriptions that respect each platform's character limits. Paid Apify plans only.

- **URL**: https://apify.com/scrapers\_lat/ad-copy-generator-tool.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Marketing, E-commerce, AI
- **Stats:** 2 total users, 1 monthly users, 84.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $64.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

<!-- actor-banner -->
[![Tool: Ad Copy Generator](https://scrapers.lat/banners/ad-copy-generator-tool.png)](https://console.apify.com/actors/ad-copy-generator-tool)
<!-- /actor-banner -->

## Tool: Ad Copy Generator

> Turn a product and an audience into ready-to-paste ad copy for Google, Meta, LinkedIn and TikTok. Headlines and descriptions come back inside each platform's real character limits.

**📥 [Input](https://apify.com/scrapers_lat/ad-copy-generator-tool/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/ad-copy-generator-tool/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/ad-copy-generator-tool/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples)**


![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Paid plan](https://img.shields.io/badge/Requires-Paid%20Apify%20plan-DE7356)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>Four platforms</strong><br>Google, Meta, LinkedIn, TikTok</td>
<td align="center"><strong>Fits the slots</strong><br>respects character limits</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
</tr></table>

<br>

### What it does

Give it a list of ads. For each one, add the product, the platform, the target audience and the tone you want. For every ad it returns a clean, structured record:

- **headlines**, written inside the platform's headline limit
- **descriptions**, written inside the platform's description limit
- **primaryText**, the main body or caption where the platform uses one
- a short **callToAction**

Google headlines come back at 30 characters or fewer and descriptions at 90 or fewer. Meta, LinkedIn and TikTok each follow their own slot lengths. Paste the copy straight into your ad manager. Export to JSON, CSV or Excel, or pull it through the Apify API.

### Paid plans only

This tool runs on the latest, most reliable premium AI models. Because each run has a real model cost, it is available to paid Apify accounts only. A run started from a free account stops immediately with an upgrade message. Upgrade your Apify subscription to a paid plan and run it again.

### Who is it for

| Use case | Who benefits |
|---|---|
| Paid search | Marketers filling Google responsive search ads |
| Paid social | Teams testing Meta, LinkedIn and TikTok creative |
| Ecommerce | Stores writing product ad variations at scale |
| Agencies | Teams producing copy for many client accounts |

### Input

- **ads**: a list of items. Each item can include:
  - `product` you are advertising
  - `platform`, one of google, meta, linkedin or tiktok
  - `audience` you are targeting
  - `tone` you want the copy to use

### Notes

- Character limits are built into the writing step, so headlines and descriptions fit their slots. Always double check against your ad account before you publish.
- Long input fields are trimmed before writing, so cost stays predictable no matter how much text you paste.

<!-- example-tasks -->
### Example use cases

Ready-to-run example tasks, each preconfigured for a common scenario. Open one and press run, or use it as a template:

- [Google Ads copy for an AI note app](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-google-ads-note-app): Generate Google Ads headlines and descriptions for an AI note taking app aimed at busy professionals in seconds.
- [Facebook Ads copy for a fitness app](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-facebook-ads-fitness-app): Create Facebook ad copy for a home fitness app targeting beginners with a motivating tone and clear call to action.
- [LinkedIn Ads copy for a B2B CRM](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-linkedin-ads-b2b-crm): Write LinkedIn ad copy for a B2B sales CRM aimed at revenue leaders with a professional and results driven tone.
- [Instagram Ads copy for a skincare brand](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-instagram-ads-skincare): Generate Instagram ad copy for a natural skincare line targeting young shoppers with a friendly and vibrant tone.
- [TikTok Ads copy for a language app](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-tiktok-ads-language-app): Create short TikTok ad copy for a language learning app aimed at students with a playful and energetic tone that converts.
- [Google Ads copy for a project tool](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-google-ads-project-tool): Generate Google Ads copy for a project management tool targeting small teams with a clear, confident and benefit driven tone.
- [Facebook Ads copy for a meal kit service](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-facebook-ads-meal-kit): Write Facebook ad copy for a meal kit delivery service aimed at busy families with a warm, inviting and appetizing tone.
- [LinkedIn Ads copy for recruiting software](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-linkedin-ads-recruiting): Create LinkedIn ad copy for recruiting software targeting HR managers with a professional and persuasive tone.
- [Instagram Ads copy for a coffee brand](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-instagram-ads-coffee-brand): Generate Instagram ad copy for a specialty coffee brand targeting coffee lovers with a bold, cozy and inviting brand tone.
- [TikTok Ads copy for gaming gear](https://apify.com/scrapers_lat/ad-copy-generator-tool/examples/adc-tiktok-ads-gaming-gear): Write TikTok ad copy for a gaming headset targeting gamers with a hyped and energetic tone that drives clicks.

<!-- /example-tasks -->

<!-- x402 -->
### Export, API and AI agents (x402 + MCP)

Export the scraped data to **JSON, CSV or Excel**, pull it as a **dataset** through the Apify **API**, or wire it into your app with **no code**. This web scraper and data extractor also works for bulk data extraction and scheduled runs.

For AI agents: this Actor is available on **x402**, Apify's agentic payment standard built with Coinbase. An AI agent can discover, pay for and run it on its own with a funded wallet and a single HTTP request: no account, no subscription, no API key and no human in the loop. It also runs as an **MCP** tool inside Claude, Cursor and other AI clients out of the box. Learn more about [x402 agentic payments on Apify](https://docs.apify.com/platform/integrations/x402).
<!-- /x402 -->

<!-- scrapers-lat-cta -->
Built by [scrapers.lat](https://scrapers.lat).
<!-- /scrapers-lat-cta -->

# Actor input Schema

## `ads` (type: `array`):

A list of ads to write. Each item can include product, platform (google, meta, linkedin or tiktok), audience and tone.

## Actor input object example

```json
{
  "ads": [
    {
      "product": "AI note-taking app",
      "platform": "google",
      "audience": "busy professionals",
      "tone": "confident"
    }
  ]
}
````

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "ads": [
        {
            "product": "AI note-taking app",
            "platform": "google",
            "audience": "busy professionals",
            "tone": "confident"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/ad-copy-generator-tool").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 = { "ads": [{
            "product": "AI note-taking app",
            "platform": "google",
            "audience": "busy professionals",
            "tone": "confident",
        }] }

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/ad-copy-generator-tool").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 '{
  "ads": [
    {
      "product": "AI note-taking app",
      "platform": "google",
      "audience": "busy professionals",
      "tone": "confident"
    }
  ]
}' |
apify call scrapers_lat/ad-copy-generator-tool --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapers_lat/ad-copy-generator-tool",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tool: Ad Copy Generator",
        "description": "Generate platform-ready ad copy for Google, Meta, LinkedIn and TikTok, with headlines and descriptions that respect each platform's character limits. Paid Apify plans only.",
        "version": "0.1",
        "x-build-id": "Ix3lZsseAhHexognl"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~ad-copy-generator-tool/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-ad-copy-generator-tool",
                "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/scrapers_lat~ad-copy-generator-tool/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-ad-copy-generator-tool",
                "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/scrapers_lat~ad-copy-generator-tool/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-ad-copy-generator-tool",
                "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": [
                    "ads"
                ],
                "properties": {
                    "ads": {
                        "title": "Ads to generate",
                        "type": "array",
                        "description": "A list of ads to write. Each item can include product, platform (google, meta, linkedin or tiktok), audience and tone."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
