# Product Description AI Generator (`studio-amba/product-description-ai`) Actor

Generate SEO-optimized product descriptions in 5 languages. Paste any product URL — get marketing copy, feature bullets, SEO meta descriptions, and optimized titles powered by GPT-4o-mini. No coding needed.

- **URL**: https://apify.com/studio-amba/product-description-ai.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 result scrapeds

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/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

## Product Description AI Generator

Generate SEO-optimized product descriptions in 5 languages from any product URL. Paste your links, pick a tone, and get ready-to-publish marketing copy powered by GPT-4o-mini.

### Why use this actor?

Writing product descriptions is tedious and expensive. This actor turns any product URL into polished, SEO-optimized marketing copy in seconds. Dropshippers, marketplace sellers, and agencies use it to create multilingual product listings at scale without hiring copywriters.

### What you get

For every product URL you provide, the actor scrapes the product data and generates:

- **SEO Title** (max 70 characters) -- optimized for search engines
- **Marketing Description** (150-200 words) -- benefit-focused, conversion-ready
- **Feature Bullets** (5-8 items) -- scannable selling points
- **Meta Description** (max 160 characters) -- ready to paste into your CMS

All content is generated in your chosen language and tone. Select "All Languages" to get descriptions in English, Dutch, French, German, and Spanish from a single run.

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `startUrls` | Array | Yes | Product page URLs to process |
| `language` | String | No | Output language: `en`, `nl`, `fr`, `de`, `es`, or `all` (default: `en`) |
| `tone` | String | No | Writing style: `professional`, `casual`, `luxury`, or `technical` |
| `maxResults` | Integer | No | Maximum products to process (default: 10) |
| `openaiApiKey` | String | Yes | Your OpenAI API key ([get one here](https://platform.openai.com/api-keys)) |
| `proxyConfiguration` | Object | No | Proxy settings for scraping (recommended for large batches) |

#### Supported tones

| Tone | Best for |
|------|----------|
| **Professional** | B2B catalogs, corporate product pages |
| **Casual** | D2C brands, social commerce, Shopify stores |
| **Luxury** | Premium goods, fashion, jewelry, high-end electronics |
| **Technical** | Electronics, industrial products, spec-heavy items |

### Output

Each result contains the original scraped data plus AI-generated content:

| Field | Type | Example |
|-------|------|---------|
| `url` | String | `"https://www.amazon.com/dp/B0BSHF7WHW"` |
| `name` | String | `"Sony WH-1000XM5 Wireless Headphones"` |
| `brand` | String | `"Sony"` |
| `price` | Number | `328.00` |
| `currency` | String | `"USD"` |
| `description` | String | Original scraped description |
| `specs` | Object | `{"Driver": "30mm", "Battery": "30 hours"}` |
| `imageUrls` | Array | Product image URLs |
| `category` | String | `"Electronics > Headphones"` |
| `aiTitle` | String | `"Sony WH-1000XM5 Noise Cancelling Wireless Headphones"` |
| `aiDescription` | String | 150-200 word marketing description |
| `aiFeatures` | Array | `["Industry-leading noise cancellation", ...]` |
| `aiSeoMetaDescription` | String | Max 160 char meta description |
| `language` | String | `"en"` |
| `tone` | String | `"professional"` |
| `scrapedAt` | String | `"2026-04-04T14:30:00.000Z"` |

### Example output

```json
{
    "url": "https://www.amazon.com/dp/B0BSHF7WHW",
    "name": "Sony WH-1000XM5 Wireless Headphones",
    "brand": "Sony",
    "price": 328.00,
    "currency": "USD",
    "description": "Industry-leading noise cancellation...",
    "specs": {
        "Driver Unit": "30mm",
        "Battery Life": "30 hours",
        "Weight": "250g",
        "Connectivity": "Bluetooth 5.2"
    },
    "imageUrls": ["https://m.media-amazon.com/images/I/..."],
    "category": "Electronics > Headphones",
    "aiTitle": "Sony WH-1000XM5 Noise Cancelling Wireless Headphones",
    "aiDescription": "Experience uninterrupted audio bliss with the Sony WH-1000XM5 wireless headphones. Featuring Sony's most advanced noise cancellation technology, these premium headphones adapt to your environment in real time, blocking out distractions so you can focus on what matters. The custom 30mm drivers deliver rich, detailed sound across the full frequency range, while the lightweight 250g design ensures all-day comfort. With 30 hours of battery life and quick-charge capability, you'll never be caught without your music. Multipoint connection lets you switch seamlessly between your phone and laptop. Whether you're commuting, working from home, or traveling, the WH-1000XM5 sets the standard for wireless audio. Upgrade your listening experience today.",
    "aiFeatures": [
        "Industry-leading adaptive noise cancellation",
        "30 hours of battery life with quick charging",
        "Ultra-lightweight 250g comfort design",
        "Bluetooth 5.2 with multipoint connection",
        "Crystal-clear hands-free calling",
        "Foldable design for easy portability",
        "Touch controls for effortless operation"
    ],
    "aiSeoMetaDescription": "Sony WH-1000XM5 wireless headphones with adaptive noise cancellation, 30-hour battery, and premium sound. Free shipping available.",
    "language": "en",
    "tone": "professional",
    "scrapedAt": "2026-04-04T14:30:00.000Z"
}
````

### Use cases

- **Dropshippers** -- Generate unique descriptions for imported products instead of copying supplier text
- **Marketplace sellers** -- Create optimized listings for Amazon, eBay, Bol.com, Cdiscount in local languages
- **E-commerce agencies** -- Produce multilingual catalog copy for clients at scale
- **SEO teams** -- Generate meta descriptions and titles for thousands of product pages
- **Product managers** -- Quickly draft launch copy for new SKUs

### How it works

1. You provide product URLs from any e-commerce site
2. The actor scrapes each page (name, price, specs, images, description)
3. GPT-4o-mini generates SEO-optimized content in your chosen language and tone
4. You get structured JSON with both the raw data and AI copy

No coding, no prompt engineering, no API setup beyond your OpenAI key.

### Supported sites

The scraper works with any e-commerce site that uses standard product page markup. Best results with:

- Amazon, eBay, Walmart
- Shopify stores
- WooCommerce stores
- Any site with JSON-LD product markup
- Any site with Open Graph product tags

### Cost estimate

**Actor compute:** ~0.05 compute units per product (minimal -- most time is waiting for OpenAI).

**OpenAI API cost:** GPT-4o-mini costs roughly $0.001-0.005 per product description. Processing 1,000 products costs approximately $1-5 in OpenAI fees (billed directly to your OpenAI account).

**PPE pricing:** $0.01 per actor start + $0.15 per product described.

### Tips for best results

- **Use direct product page URLs** -- not category or search pages
- **Sites with JSON-LD markup** give the best extraction results
- **"All Languages" mode** generates 5 results per URL -- factor this into your maxResults setting
- **Technical tone** works best for products with detailed specifications
- **Luxury tone** shines for fashion, beauty, and premium electronics

### Limitations

- The actor scrapes publicly available product data only
- AI-generated content should be reviewed before publishing (occasional hallucinations possible)
- Some sites with heavy anti-bot protection may require proxy configuration
- OpenAI API key is required and billed separately by OpenAI
- Very large batches (1000+ products) should be split across multiple runs to avoid OpenAI rate limits

### How to scrape Product Description Ai data

1. Go to this actor's page on the [Apify Store](https://apify.com/store).
2. Click **Try for free** to open it in Apify Console.
3. Configure your search query or URL, set the maximum number of results, and adjust proxy settings if needed.
4. Click **Start** and wait for the run to finish.
5. Download your data in JSON, CSV, Excel, or connect it to your workflow via API.

You can also schedule regular runs, set up webhooks for real-time notifications, or integrate the results directly into your application using the [Apify API](https://docs.apify.com/api).

# Actor input Schema

## `startUrls` (type: `array`):

Product page URLs to process. Paste URLs from any e-commerce site (Amazon, Shopify, eBay, WooCommerce, etc.).

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

Language for the AI-generated descriptions. Choose 'all' to generate descriptions in all 5 languages at once.

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

The tone and style for the generated descriptions.

## `maxResults` (type: `integer`):

Maximum number of products to process. Each product costs one API call.

## `openaiApiKey` (type: `string`):

Your OpenAI API key. Get one at https://platform.openai.com/api-keys. Required for AI description generation unless the actor has an OPENAI\_API\_KEY environment variable configured.

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

Proxy settings for scraping product pages. Recommended for large batches or sites with anti-bot protection.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.amazon.com/dp/B0BSHF7WHW"
    }
  ],
  "language": "en",
  "tone": "professional",
  "maxResults": 10
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.amazon.com/dp/B0BSHF7WHW"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/product-description-ai").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 = { "startUrls": [{ "url": "https://www.amazon.com/dp/B0BSHF7WHW" }] }

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/product-description-ai").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 '{
  "startUrls": [
    {
      "url": "https://www.amazon.com/dp/B0BSHF7WHW"
    }
  ]
}' |
apify call studio-amba/product-description-ai --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=studio-amba/product-description-ai",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Product Description AI Generator",
        "description": "Generate SEO-optimized product descriptions in 5 languages. Paste any product URL — get marketing copy, feature bullets, SEO meta descriptions, and optimized titles powered by GPT-4o-mini. No coding needed.",
        "version": "0.1",
        "x-build-id": "KAJe7EmqvNuBq5kNj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~product-description-ai/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-product-description-ai",
                "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/studio-amba~product-description-ai/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-product-description-ai",
                "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/studio-amba~product-description-ai/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-product-description-ai",
                "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",
                "properties": {
                    "startUrls": {
                        "title": "Product URLs",
                        "type": "array",
                        "description": "Product page URLs to process. Paste URLs from any e-commerce site (Amazon, Shopify, eBay, WooCommerce, etc.).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "language": {
                        "title": "Output Language",
                        "enum": [
                            "en",
                            "nl",
                            "fr",
                            "de",
                            "es",
                            "all"
                        ],
                        "type": "string",
                        "description": "Language for the AI-generated descriptions. Choose 'all' to generate descriptions in all 5 languages at once.",
                        "default": "en"
                    },
                    "tone": {
                        "title": "Writing Tone",
                        "enum": [
                            "professional",
                            "casual",
                            "luxury",
                            "technical"
                        ],
                        "type": "string",
                        "description": "The tone and style for the generated descriptions.",
                        "default": "professional"
                    },
                    "maxResults": {
                        "title": "Max Products",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of products to process. Each product costs one API call.",
                        "default": 10
                    },
                    "openaiApiKey": {
                        "title": "OpenAI API Key",
                        "type": "string",
                        "description": "Your OpenAI API key. Get one at https://platform.openai.com/api-keys. Required for AI description generation unless the actor has an OPENAI_API_KEY environment variable configured."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for scraping product pages. Recommended for large batches or sites with anti-bot protection."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
