# Shopee, Lazada & TikTok Shop Listing Translator (SEA) (`messnomore/sea-listing-localizer`) Actor

Translate and localize your product listings into Bahasa Malaysia, Indonesian, Thai and Vietnamese with AI, trim titles to Shopee, Lazada and TikTok Shop limits, and check Malaysia CPETTR 2024 seller disclosures.

- **URL**: https://apify.com/messnomore/sea-listing-localizer.md
- **Developed by:** [Wong Xian Qi](https://apify.com/messnomore) (community)
- **Categories:** E-commerce, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $17.00 / 1,000 localized listings

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

### What does Shopee, Lazada & TikTok Shop Listing Translator do?

**Shopee, Lazada & TikTok Shop Listing Translator** rewrites your own product listings for Southeast Asian marketplaces. It translates and
localizes titles, descriptions and variations into **Bahasa Malaysia, Bahasa Indonesia, Thai and Vietnamese** with AI,
fits every title to the **Shopee, Lazada or TikTok Shop** limit, and checks each listing against the seller
disclosures required by Malaysia's **CPETTR 2024** (Consumer Protection (Electronic Trade Transaction) Regulations).

Paste your listings as JSON, link a CSV file, or use your **Shopify product export** as it is. Run it in Apify Console
with no code, or call it as a **product listing translation API** from your own scripts.

### Why use Shopee, Lazada & TikTok Shop Listing Translator?

Selling in Malaysia, Indonesia, Thailand and Vietnam means writing every listing four times, fitting it into each
marketplace's character limits, and making sure the seller information the law asks for is there. SEA Listing
Localizer does this for a whole catalogue in one run:

- 🌏 **Local copywriting, not word-for-word translation**: titles put the product type and key specs first, in the
  words local shoppers search for. Malaysian Malay and Indonesian are kept apart ("kereta", not "mobil").
- ✂️ **Fits marketplace limits**: titles are shortened at word boundaries (including Thai, which has no spaces), and
  lengths are counted the way buyers see characters, so Thai marks and Vietnamese accents count correctly.
- 🔒 **Keeps brand names, sizes and model codes**: "750ml", "70x140cm", model codes such as "S24" and your own protected terms stay
  exactly as written, and any term that went missing is flagged.
- 🧹 **Removes what marketplaces reject**: emoji and hashtags in titles; links, phone numbers and e-mail addresses
  anywhere. The AI is also told to drop promotional phrases such as "FREE SHIPPING" or "BEST SELLER".
- ⚖️ **CPETTR 2024 compliance check**: a 0-100 disclosure score per listing, the items that are missing and what to add,
  with the regulation reference for each one.
- 🛍️ **Shopify export ready**: upload the CSV from Shopify admin; products with several variant rows are grouped and
  HTML descriptions are converted to clean text.
- 🤖 **Apify platform features**: run it on a schedule, call it by API, or send the results to Google Sheets, Make or
  Zapier with [integrations](https://docs.apify.com/platform/integrations).

Who uses it: **Malaysian online sellers** expanding to Indonesia, Thailand and Vietnam, **cross-border and Shopify
merchants** listing on Shopee, Lazada and TikTok Shop, and **e-commerce agencies** managing many shops.

### What data does Shopee, Lazada & TikTok Shop Listing Translator return?

You get one result per listing per language:

| Field                            | Description                                                                       |
| -------------------------------- | --------------------------------------------------------------------------------- |
| `sku`                            | Your product SKU.                                                                 |
| `language`                       | `ms`, `id`, `th` or `vi`.                                                         |
| `localizedTitle`                 | Rewritten title, cleaned and fitted to the limit.                                 |
| `titleLength` / `titleMaxLength` | Title length in characters and the limit that was applied.                        |
| `localizedDescription`           | Rewritten description as plain text.                                              |
| `localizedVariations`            | Translated variation names and options, in your order.                            |
| `complianceScore`                | CPETTR 2024 disclosure score, 0-100.                                              |
| `cpettrMissing`                  | Required disclosures that are missing or invalid.                                 |
| `cpettrHints`                    | What to add for each missing item, with the regulation reference.                 |
| `notes`                          | What was changed and what to check before publishing.                             |
| `missingProtectedTerms`          | Brand names, sizes or model codes that are not in the final text (empty is good). |

Also included: `marketplace`, `sourceTitle`, `cpettrRecommended`, `titleTrimmed`, `titleLimitVerified`,
`descriptionLength` and `descriptionTrimmed`. The **SUMMARY** record lists skipped input rows and failed results with
the reason for each.

### How to localize product listings for Shopee, Lazada and TikTok Shop

1. Click **Try for free** and open the **Input** tab.
2. Add your products under **Listings** (or paste a link to a CSV file).
3. Fill in **Seller details** once: they are used for the CPETTR check of every listing.
4. Pick the **Target languages** and the **Marketplace**.
5. Set **Maximum results** and click **Start**.
6. Results are saved as they are ready (100 results take about a minute). Open the **Output** tab. Use the **Localized listings** view to copy titles and
   descriptions, and the **CPETTR compliance** view to see what to add. Export as CSV or Excel if you prefer.

### How much does it cost to localize product listings?

Shopee, Lazada & TikTok Shop Listing Translator uses **pay-per-event pricing**: you pay **$0.02 per localized result** (one listing in one
language) plus **$0.01 per run**. There is no charge for compute time.

- 50 products in Bahasa Malaysia and Thai = 100 results = **$2.01**.
- Results that fail are **not charged**; the SUMMARY record tells you why they failed.
- No result is charged twice: if Apify moves your run to another server, it continues where it stopped.
- **Maximum results** is a hard cap, and the run also stops at the maximum cost per run you set in Apify.
- Runs on the Apify free plan return up to 10 results. Upgrade your Apify plan to localize more per run.

### Input

See the **Input** tab for every option. Example input:

```json
{
    "listings": [
        {
            "sku": "BTL-750",
            "title": "Stainless Steel Water Bottle 750ml Double Wall Vacuum Insulated",
            "description": "Keeps drinks cold for 24 hours and hot for 12 hours. Leak-proof, BPA-free lid.",
            "variations": [{ "name": "Color", "options": ["Black", "Silver", "Pastel Pink"] }],
            "price": 29.9
        }
    ],
    "sellerProfile": {
        "sellerName": "Your Shop Sdn Bhd",
        "sellerAddress": "12 Jalan Contoh, 50450 Kuala Lumpur",
        "sellerEmail": "support@yourshop.my",
        "sellerPhone": "+60 3-1234 5678",
        "paymentMethods": "Online banking (FPX), credit/debit card, e-wallet",
        "termsAndConditions": "7-day return for unused items; refund within 14 days.",
        "shippingFee": 0,
        "estimatedDelivery": "2-4 working days in Peninsular Malaysia"
    },
    "targetLanguages": ["ms", "th"],
    "marketplace": "shopee",
    "maxResults": 100
}
```

- **Listings**: `sku` and `title` are required. `description` can be text or HTML. Add `protectedTerms` for words that
  must not change, such as brand, model or ingredient names. Any seller field can also be set per listing.
- **Listings CSV file**: one product per row with the same column names, or a Shopify export (Shopify admin →
  **Products** → **Export** → "CSV for Excel, Numbers, or other spreadsheet programs"). Save it as UTF-8 and use a
  public link (for example a Google Drive or Dropbox direct download link).
- **Title length limit**: Shopee publishes no official limit, so 120 characters is used and `titleLimitVerified` is
  `false`. Enter the number your Seller Centre shows for your category (up to 255) to use it instead.

### Output

You can download the dataset in various formats such as **JSON, HTML, CSV or Excel**. Titles from a real run
(Shopee, prefilled example input):

| Your title                                                      | Bahasa Malaysia                                              | Thai                                                              |
| --------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------- |
| Stainless Steel Water Bottle 750ml Double Wall Vacuum Insulated | Botol Air Stainless Steel 750ml Double Wall Vacuum Insulated | ขวดน้ำสแตนเลส 750ml ฉนวนสุญญากาศ 2 ชั้น                           |
| Hydrating Facial Serum with Hyaluronic Acid 30ml                | Serum Muka Hydrating dengan Hyaluronic Acid 30ml             | เซรั่มบำรุงผิวหน้า Hydrating ผสม Hyaluronic Acid 30ml เนื้อบางเบา |

The full Thai result for the bottle, including a note asking the seller to back up a claim:

```json
{
    "sku": "BTL-750",
    "language": "th",
    "marketplace": "shopee",
    "sourceTitle": "Stainless Steel Water Bottle 750ml Double Wall Vacuum Insulated",
    "localizedTitle": "ขวดน้ำสแตนเลส 750ml ฉนวนสุญญากาศ 2 ชั้น",
    "titleLength": 34,
    "titleMaxLength": 120,
    "localizedDescription": "เก็บความเย็นได้นาน 24 ชั่วโมง และเก็บความร้อนได้นาน 12 ชั่วโมง\n• ฝาป้องกันการรั่วซึม\n• ฝาไม่มี BPA\n• พอดีกับที่วางแก้วในรถยนต์ส่วนใหญ่",
    "localizedVariations": [
        {
            "name": "สี",
            "options": ["ดำ", "เงิน", "ชมพูพาสเทล"]
        }
    ],
    "complianceScore": 100,
    "cpettrMissing": [],
    "cpettrRecommended": ["sellerWebsite", "safetyCertificate"],
    "cpettrHints": [
        "sellerWebsite (Schedule item 2 (if any)): If you have a website, disclose its address.",
        "safetyCertificate (Schedule item 10 (if any)): If the product must meet a safety or health standard set by a competent authority, disclose the certificate."
    ],
    "notes": [
        "Confirm the BPA-free claim for the lid can be supported with a test certificate or supplier documentation."
    ],
    "missingProtectedTerms": [],
    "titleTrimmed": false,
    "titleLimitVerified": false,
    "descriptionLength": 109,
    "descriptionTrimmed": false
}
```

### What does the CPETTR 2024 check score?

The check follows the Schedule of P.U.(A) 449/2024, in force since 25 December 2024. The points add up to 100:

| Disclosure                                           | Input field                            | Points | Reference       |
| ---------------------------------------------------- | -------------------------------------- | ------ | --------------- |
| Seller or company name                               | `sellerName`                           | 10     | Schedule item 1 |
| E-mail address                                       | `sellerEmail`                          | 5      | Schedule item 3 |
| Telephone number                                     | `sellerPhone`                          | 5      | Schedule item 3 |
| Address of the place of business                     | `sellerAddress`                        | 10     | Schedule item 4 |
| Main characteristics (description of 50+ characters) | `description`                          | 15     | Schedule item 5 |
| Full price                                           | `price`                                | 8      | Schedule item 6 |
| Delivery cost or terms                               | `shippingFee` or `deliveryTerms`       | 7      | Schedule item 6 |
| Payment methods                                      | `paymentMethods`                       | 10     | Schedule item 7 |
| Terms and conditions (or return policy)              | `termsAndConditions` or `returnPolicy` | 10     | Schedule item 8 |
| Estimated delivery time                              | `estimatedDelivery`                    | 10     | Schedule item 9 |
| Bahasa Malaysia version                              | `ms` in `targetLanguages`              | 10     | Regulation 4    |

Recommended but not scored: your website and any safety or health certificate ("if any" items), and your company
registration number, which marketplaces must keep on record (Regulation 8(1)(c)). Enforcement of the
national-language rule (Regulation 4) was postponed in June 2025.

### Use Shopee, Lazada & TikTok Shop Listing Translator as an API

```bash
curl -X POST "https://api.apify.com/v2/acts/messnomore~sea-listing-localizer/run-sync-get-dataset-items" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"listings":[{"sku":"BTL-750","title":"Stainless Steel Water Bottle 750ml"}],"targetLanguages":["ms","id"],"marketplace":"lazada"}'
```

See the **API** tab for clients in JavaScript and Python. You can also run it from AI assistants through the
[Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

### Tips for better results

- Put brand, model and ingredient names in `protectedTerms`. Sizes, capacities and model codes are protected
  automatically.
- Write a full source description: the AI never adds features, claims or specs that are not in your text.
- Read the `notes` before publishing. They point out claims that need proof (for example "dermatologist tested"),
  removed promotional phrases, and anything the seller should check.
- Selling in Malaysia? Include Bahasa Malaysia (`ms`) to cover the CPETTR national-language rule.

### Related guides

- [How do you translate Shopee, Lazada and TikTok Shop listings within the title limits?](https://wong13977-oss.github.io/marketplace-listing-translation/)
- [中文指南：东南亚卖家怎么把 Shopee、Lazada、TikTok Shop 的商品标题翻译成当地语言，又不超字数限制？](https://wong13977-oss.github.io/zh/shopee-lazada-listing-translation/)

### FAQ

#### Which marketplaces and limits are supported?

Shopee (title 120, description 3,000 characters), Lazada (255 / 25,000, from the Lazada Open Platform API) and TikTok
Shop (title 25-255, description 10,000, from the TikTok Shop Partner API). Shopee does not publish official numbers:
120 / 3,000 are the common Seller Centre figures, so check yours and set **Title length limit** if it differs.

#### Does it scrape Shopee, Lazada or TikTok Shop?

No. It only processes the listings you provide. It does not visit marketplace websites or read other sellers' data.

#### Is the AI translation always correct?

It is written by Anthropic's Claude AI and follows strict rules: keep the facts, keep protected terms, no invented
claims. Like any translation, review it before publishing, especially the `notes` and `missingProtectedTerms` fields.

#### Is the CPETTR check legal advice?

No. It is a checklist based on the published regulations to help you spot missing disclosures. For legal questions,
ask a qualified adviser or the Ministry of Domestic Trade and Cost of Living (KPDN).

#### Why did I get fewer results than I asked for?

Results stop at **Maximum results**, at your maximum cost per run, or at 10 per run on the Apify free plan. Input rows
without a SKU or title are skipped, and a result that fails is not returned (or charged). The status message and the
SUMMARY record show which of these applied.

#### Is my data stored or shared?

Your listings are sent to the Anthropic API only to write the localized versions, and Shopee, Lazada & TikTok Shop Listing Translator doesn't
copy them into its logs. Like every Apify run, your input and results stay in your own run storage, which you can
delete at any time.

#### Is it affiliated with Shopee, Lazada, TikTok Shop or Shopify?

No. This Actor is an independent tool. Shopee, Lazada, TikTok Shop and Shopify are trademarks of their
owners and are named only to describe which listing formats and limits are supported.

#### I found a wrong translation or a bug. What can I do?

Open the **Issues** tab and include the SKU, the language and the run link. Feedback and feature requests are welcome
there too.

# Actor input Schema

## `listings` (type: `array`):

Your products, one object each. Required: "sku" and "title". Optional: "description" (text or HTML), "variations" (\[{"name": "Color", "options": \["Black"]}]), "price", "currency", "brand", "protectedTerms" (words to keep exactly as written, such as brand or model names), and any seller field from "Seller details" to override it for this product. Column names such as "Product Name" or "Body (HTML)" are recognized too.

## `listingsCsvUrl` (type: `string`):

Optional: a public link to a CSV file with one product per row (same column names as above), or a Shopify product export (Shopify admin > Products > Export, "CSV for Excel, Numbers, or other spreadsheet programs"). Save the file as UTF-8. Up to 10 MB; rows are added after the listings above.

## `sellerProfile` (type: `object`):

Seller and sale information shared by all listings, used for the Malaysia CPETTR 2024 check: sellerName, sellerRegNo (SSM number), sellerAddress, sellerEmail, sellerPhone, sellerWebsite, paymentMethods, termsAndConditions, returnPolicy, shippingFee (0 = free shipping), deliveryTerms, estimatedDelivery, safetyCertificate. A listing's own value wins.

## `checkCPETTR` (type: `boolean`):

Score each listing 0-100 against the seller disclosures required by Malaysia's Consumer Protection (Electronic Trade Transaction) Regulations 2024, and list what is missing. Switch off if you do not sell to Malaysia.

## `targetLanguages` (type: `array`):

Each listing is returned once per language. Bahasa Malaysia also satisfies the CPETTR national-language rule.

## `marketplace` (type: `string`):

Sets the title and description limits: Shopee 120 / 3,000 characters (common Seller Centre figures, check yours), Lazada 255 / 25,000, TikTok Shop 25-255 / 10,000.

## `titleMaxLength` (type: `integer`):

Your own title limit in characters (10-255), for example the number your Shopee Seller Centre shows for your category. 0 uses the marketplace limit. Lazada and TikTok Shop limits cannot be raised, and TikTok Shop titles need at least 25 characters.

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

Upper limit on returned listing versions (listings x languages). You pay per returned result, so this also caps the cost of a run. Runs on the Apify free plan return up to 10 results.

## Actor input object example

```json
{
  "listings": [
    {
      "sku": "BTL-750",
      "title": "Stainless Steel Water Bottle 750ml Double Wall Vacuum Insulated",
      "description": "Keeps drinks cold for 24 hours and hot for 12 hours. Leak-proof, BPA-free lid. Fits most car cup holders.",
      "variations": [
        {
          "name": "Color",
          "options": [
            "Black",
            "Silver",
            "Pastel Pink"
          ]
        }
      ],
      "price": 29.9,
      "currency": "MYR"
    },
    {
      "sku": "SRM-30",
      "title": "Hydrating Facial Serum with Hyaluronic Acid 30ml",
      "description": "<p>Lightweight serum with <strong>2% hyaluronic acid</strong> and vitamin B5.</p><ul><li>For all skin types</li><li>Use 2-3 drops morning and night</li></ul>",
      "protectedTerms": [
        "Hyaluronic Acid"
      ],
      "price": "RM 49.90"
    }
  ],
  "listingsCsvUrl": "",
  "sellerProfile": {
    "sellerName": "Your Shop Sdn Bhd",
    "sellerRegNo": "202401012345 (1234567-X)",
    "sellerAddress": "12 Jalan Contoh, 50450 Kuala Lumpur",
    "sellerEmail": "support@yourshop.my",
    "sellerPhone": "+60 3-1234 5678",
    "paymentMethods": "Online banking (FPX), credit/debit card, e-wallet",
    "termsAndConditions": "7-day return for unused items; refund within 14 days.",
    "shippingFee": 0,
    "estimatedDelivery": "2-4 working days in Peninsular Malaysia"
  },
  "checkCPETTR": true,
  "targetLanguages": [
    "ms"
  ],
  "marketplace": "shopee",
  "titleMaxLength": 0,
  "maxResults": 100
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "listings": [
        {
            "sku": "BTL-750",
            "title": "Stainless Steel Water Bottle 750ml Double Wall Vacuum Insulated",
            "description": "Keeps drinks cold for 24 hours and hot for 12 hours. Leak-proof, BPA-free lid. Fits most car cup holders.",
            "variations": [
                {
                    "name": "Color",
                    "options": [
                        "Black",
                        "Silver",
                        "Pastel Pink"
                    ]
                }
            ],
            "price": 29.9,
            "currency": "MYR"
        },
        {
            "sku": "SRM-30",
            "title": "Hydrating Facial Serum with Hyaluronic Acid 30ml",
            "description": "<p>Lightweight serum with <strong>2% hyaluronic acid</strong> and vitamin B5.</p><ul><li>For all skin types</li><li>Use 2-3 drops morning and night</li></ul>",
            "protectedTerms": [
                "Hyaluronic Acid"
            ],
            "price": "RM 49.90"
        }
    ],
    "sellerProfile": {
        "sellerName": "Your Shop Sdn Bhd",
        "sellerRegNo": "202401012345 (1234567-X)",
        "sellerAddress": "12 Jalan Contoh, 50450 Kuala Lumpur",
        "sellerEmail": "support@yourshop.my",
        "sellerPhone": "+60 3-1234 5678",
        "paymentMethods": "Online banking (FPX), credit/debit card, e-wallet",
        "termsAndConditions": "7-day return for unused items; refund within 14 days.",
        "shippingFee": 0,
        "estimatedDelivery": "2-4 working days in Peninsular Malaysia"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("messnomore/sea-listing-localizer").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 = {
    "listings": [
        {
            "sku": "BTL-750",
            "title": "Stainless Steel Water Bottle 750ml Double Wall Vacuum Insulated",
            "description": "Keeps drinks cold for 24 hours and hot for 12 hours. Leak-proof, BPA-free lid. Fits most car cup holders.",
            "variations": [{
                    "name": "Color",
                    "options": [
                        "Black",
                        "Silver",
                        "Pastel Pink",
                    ],
                }],
            "price": 29.9,
            "currency": "MYR",
        },
        {
            "sku": "SRM-30",
            "title": "Hydrating Facial Serum with Hyaluronic Acid 30ml",
            "description": "<p>Lightweight serum with <strong>2% hyaluronic acid</strong> and vitamin B5.</p><ul><li>For all skin types</li><li>Use 2-3 drops morning and night</li></ul>",
            "protectedTerms": ["Hyaluronic Acid"],
            "price": "RM 49.90",
        },
    ],
    "sellerProfile": {
        "sellerName": "Your Shop Sdn Bhd",
        "sellerRegNo": "202401012345 (1234567-X)",
        "sellerAddress": "12 Jalan Contoh, 50450 Kuala Lumpur",
        "sellerEmail": "support@yourshop.my",
        "sellerPhone": "+60 3-1234 5678",
        "paymentMethods": "Online banking (FPX), credit/debit card, e-wallet",
        "termsAndConditions": "7-day return for unused items; refund within 14 days.",
        "shippingFee": 0,
        "estimatedDelivery": "2-4 working days in Peninsular Malaysia",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("messnomore/sea-listing-localizer").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 '{
  "listings": [
    {
      "sku": "BTL-750",
      "title": "Stainless Steel Water Bottle 750ml Double Wall Vacuum Insulated",
      "description": "Keeps drinks cold for 24 hours and hot for 12 hours. Leak-proof, BPA-free lid. Fits most car cup holders.",
      "variations": [
        {
          "name": "Color",
          "options": [
            "Black",
            "Silver",
            "Pastel Pink"
          ]
        }
      ],
      "price": 29.9,
      "currency": "MYR"
    },
    {
      "sku": "SRM-30",
      "title": "Hydrating Facial Serum with Hyaluronic Acid 30ml",
      "description": "<p>Lightweight serum with <strong>2% hyaluronic acid</strong> and vitamin B5.</p><ul><li>For all skin types</li><li>Use 2-3 drops morning and night</li></ul>",
      "protectedTerms": [
        "Hyaluronic Acid"
      ],
      "price": "RM 49.90"
    }
  ],
  "sellerProfile": {
    "sellerName": "Your Shop Sdn Bhd",
    "sellerRegNo": "202401012345 (1234567-X)",
    "sellerAddress": "12 Jalan Contoh, 50450 Kuala Lumpur",
    "sellerEmail": "support@yourshop.my",
    "sellerPhone": "+60 3-1234 5678",
    "paymentMethods": "Online banking (FPX), credit/debit card, e-wallet",
    "termsAndConditions": "7-day return for unused items; refund within 14 days.",
    "shippingFee": 0,
    "estimatedDelivery": "2-4 working days in Peninsular Malaysia"
  }
}' |
apify call messnomore/sea-listing-localizer --silent --output-dataset

```

## MCP server setup

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

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/Dizadm5EezwaAPFpS/builds/O6WgfwmuvUBnDuNMM/openapi.json
