# Amazon Shopify eBay Listing Copy Pack (`keiwy/listing-copy-pack`) Actor

Product facts → ready-to-paste English listing for Amazon, Shopify & eBay sellers: 3 titles, up to 6 benefit bullets, short description, 2 FAQ rows. Deterministic templates — no LLM, no network. $0.10 per pack.

- **URL**: https://apify.com/keiwy/listing-copy-pack.md
- **Developed by:** [KEith wy](https://apify.com/keiwy) (community)
- **Categories:** E-commerce, SEO tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.10 / listing pack generated

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Amazon Listing Copy Generator — Shopify & eBay Product Titles, Bullets, Description (No AI key)

**Apify Store:** https://apify.com/keiwy/listing-copy-pack

Paste your **product facts** → get a ready-to-paste **Amazon / Shopify / eBay listing pack** in ~3 seconds:

- **3 product title options** (A/B test ready, primary keyword first)
- Up to **6 bullet points** (Amazon "About this item" style)
- One **short product description**
- **2 FAQ rows** (for Shopify product pages / eBay description)

| At a glance | |
|---|---|
| **Use for** | Amazon listing copy, Shopify product description, eBay item title & description |
| **AI / API key** | **None needed** — deterministic templates, no OpenAI/ChatGPT key, no network calls |
| **Speed** | **~3 s per pack** (measured below) |
| **Price** | **$0.10 per listing pack** (pay-per-event, charged once per successful run) |
| **Facts in = facts out** | It never invents claims — every bullet comes from the facts you typed |

### Measured demo (real Apify platform runs, 2026-10-20)

| Field | Run A — empty input `{}` (defaults) | Run B — real product |
|---|---|---|
| **Run id** | `7WbYTqfNYjid3ryhl` (SUCCEEDED) | `tSXKODG58B5DQJqGh` (SUCCEEDED) |
| **Input** | defaults: `product_name="Wireless Mouse"` + 6 default facts | `product_name="Non-Slip Yoga Mat 6mm"`, audience `home workout beginners`, category `fitness equipment`, 6 facts |
| **Duration** | 3.3 s | 3.6 s |
| **Output** | 1 dataset item: **3 titles, 6 bullets**, description, 2 FAQ (title 1: "Wireless Mouse — Ergonomic 2.4GHz wireless with 18-month battery life") | 1 dataset item: **3 titles, 6 bullets**, description, 2 FAQ |
| **Platform compute** | ~$0.0001 | ~$0.0002 |
| **PPE event** | `listing-pack-generated` ×1 = **$0.10** for a customer (owner self-test runs are not billed) | same |

**Run B output (real, unedited):**

| Part | Text |
|---|---|
| Title 1 | Non-Slip Yoga Mat 6mm — extra-thick 6mm cushioning that protects knees |
| Title 2 | Non-Slip Yoga Mat 6mm for home workout beginners |
| Title 3 | Non-Slip Yoga Mat 6mm: Fitness Equipment Essentials |
| Bullets | 6mm thick TPE foam. · Non-slip textured surface on both sides. · 183 x 61 cm full-length size. · Carry strap included. · Sweat-resistant, wipes clean. · Free of PVC and latex. |
| Description | Non-Slip Yoga Mat 6mm is made for home workout beginners. It focuses on what matters in fitness equipment: 6mm thick TPE foam. Non-slip textured surface on both sides. 183 x 61 cm full-length size. |
| FAQ 1 | **Q:** Who is Non-Slip Yoga Mat 6mm for? **A:** home workout beginners. Anyone comparing fitness equipment options who wants plain-language benefits. |

Honest limit: this is a **fast first draft from your facts**, not creative AI copywriting. If you need persuasive long-form copy, polish the pack by hand or with an LLM afterwards.

### Who it's for

- **Amazon FBA / Seller Central** sellers drafting titles + bullets for a new ASIN
- **Shopify** store owners who need a product description + FAQ for many SKUs
- **eBay** sellers who want consistent item titles and descriptions
- Agencies / catalog ops generating first-pass listing copy in bulk via API

### Input

```json
{
  "product_name": "Non-Slip Yoga Mat 6mm",
  "audience": "home workout beginners",
  "category": "fitness equipment",
  "primary_benefit": "extra-thick 6mm cushioning that protects knees",
  "tone": "clear, benefit-first, no hype",
  "facts": "6mm thick TPE foam\nNon-slip textured surface on both sides\n183 x 61 cm full-length size\nCarry strap included\nSweat-resistant, wipes clean\nFree of PVC and latex"
}
```

Only `product_name` is required. `facts` can be one per line, pipe/semicolon-separated, or a JSON array.

### Output

- **Dataset:** one item with `product_name`, `titles[3]`, `bullets[≤6]`, `description`, `faq[2]`, `meta`
- **Key-value store:** `OUTPUT.json` (same content)

Export as JSON / CSV / Excel from the run's Dataset tab, or call via API for many SKUs (one run per product).

### Pricing

**Pay per event:** `listing-pack-generated` = **$0.10** per successful run (one pack). Failed runs are not charged. Platform compute is ~$0.0001–0.0002 per run.

### Tips for better packs

1. Put the **main search keyword** in `product_name` (brand + product type, e.g. "Acme Non-Slip Yoga Mat 6mm").
2. Give **concrete facts** (material, size, compatibility, what's in the box) — they become your bullets.
3. Use `primary_benefit` for the one claim you want in title #1.
4. Set `audience` to the buyer persona — it is used in title #2 and the description.

### Related

- Need local business leads? → [keiwy/local-biz-leads-email](https://apify.com/keiwy/local-biz-leads-email)
- Messy sales CSV → summary Excel? → [keiwy/messy-sales-to-summary](https://apify.com/keiwy/messy-sales-to-summary)

# Actor input Schema

## `product_name` (type: `string`):

Display name of the product (required).

## `audience` (type: `string`):

Who buys it, e.g. office buyers, remote workers.

## `category` (type: `string`):

Product category, e.g. electronics, wireless accessories.

## `primary_benefit` (type: `string`):

One-line main benefit used in the first title option.

## `tone` (type: `string`):

Copy tone note stored in meta (does not call an LLM).

## `facts` (type: `string`):

Product facts: one per line, or pipe/semicolon-separated. Also accepts a JSON array if sent via API.

## Actor input object example

```json
{
  "product_name": "Wireless Mouse",
  "audience": "office and remote workers",
  "category": "computer accessories",
  "primary_benefit": "Ergonomic 2.4GHz wireless with 18-month battery life",
  "tone": "clear, benefit-first, no hype",
  "facts": "2.4GHz wireless up to 10m range\nAdjustable DPI 800/1200/1600\n18-month battery (AA x1)\nPlug-and-play USB nano receiver\nWorks on Windows, Mac, Linux\nAmbidextrous ergonomic design"
}
```

# Actor output Schema

## `dataset` (type: `string`):

One dataset item: titles, bullets, description, faq, meta.

## `outputJson` (type: `string`):

Same pack written to the run key-value store.

# 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 = {
    "product_name": "Wireless Mouse",
    "primary_benefit": "Ergonomic 2.4GHz wireless with 18-month battery life",
    "facts": `2.4GHz wireless up to 10m range
Adjustable DPI 800/1200/1600
18-month battery (AA x1)
Plug-and-play USB nano receiver
Works on Windows, Mac, Linux
Ambidextrous ergonomic design`
};

// Run the Actor and wait for it to finish
const run = await client.actor("keiwy/listing-copy-pack").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 = {
    "product_name": "Wireless Mouse",
    "primary_benefit": "Ergonomic 2.4GHz wireless with 18-month battery life",
    "facts": """2.4GHz wireless up to 10m range
Adjustable DPI 800/1200/1600
18-month battery (AA x1)
Plug-and-play USB nano receiver
Works on Windows, Mac, Linux
Ambidextrous ergonomic design""",
}

# Run the Actor and wait for it to finish
run = client.actor("keiwy/listing-copy-pack").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 '{
  "product_name": "Wireless Mouse",
  "primary_benefit": "Ergonomic 2.4GHz wireless with 18-month battery life",
  "facts": "2.4GHz wireless up to 10m range\\nAdjustable DPI 800/1200/1600\\n18-month battery (AA x1)\\nPlug-and-play USB nano receiver\\nWorks on Windows, Mac, Linux\\nAmbidextrous ergonomic design"
}' |
apify call keiwy/listing-copy-pack --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,keiwy/listing-copy-pack"
        }
    }
}
```

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/SdqfbdDy0fE5mdFgF/builds/sawbU5ElpO9l0NccG/openapi.json
