MVP scope: Amazon · English → German

Stop your Amazon DE listings from getting suppressed.

ListLoco checks every listing against five deterministic gates before it reaches Amazon Germany: banned words, GPSR required info, title length limits, model number / numeral / unit preservation, and back-translation divergence — so you catch the issues that get listings suppressed before you publish.

Try the free Amazon DE listing checker — no signup, no API key needed.

Check a listing free — no signup Get API key on RapidAPI See pricing

Which fits you?

Individual sellers (single seller account) — check a listing before you submit → Agencies managing multiple client seller accounts — see the agency workflow →

Deterministic checks surface suppression risk signals before you submit to Amazon DE.

Check suppression risks before opening Seller Central

  • Banned words (e.g. "bestseller", "garantiert") that can flag a listing for removal
  • Missing GPSR required info before you publish to Amazon DE
  • Model numbers, numerals, and units altered during translation

Check your own listing for these risks — free, no signup →

These deterministic checks reduce risk and flag issues before publishing.

Replace with your own listing text to detect compliance risks.

See suppression risks before you translate: banned words, GPSR fields, and model numbers — run the sample below.

Run batch checks or set up a CI pre-publish gate — free trial on RapidAPI →

Deterministic checks reduce listing compliance risk before you publish.

Open full Amazon DE Listing Checker →

See pricing →

Need to check many listings? See batch API pricing →

Not affiliated with Amazon. Tool results are informational only and not legal advice.

Running compliance QA for an agency? ListLoco also works for agencies and consultants who manage multiple seller accounts or client accounts on Amazon DE — the same deterministic gates flag the compliance-risk signals in every client's catalog before you submit. See the agency workflow →

Check your category's compliance rules

Amazon DE applies different required attributes and restricted-term lists by category. Jump straight to the free checker pre-set for your product category:

Cosmetics & Beauty

Check a cosmetics listing →

Toys & Children's Products

Check a toys listing →

General / Other

Check a general listing →

Checking many listings at once? The Hosted API supports batch requests so you don't have to paste them in one at a time — see batch API plans →

Try ListLoco live — no sign-up required

No account needed. Run the sample listing through the same deterministic quality gate the API uses — entirely in your browser.

Live API trial — no signup, no API key required

Edit the JSON below and click Try live — no signup to send your listing to the real API endpoint. Rate-limited to 5 free requests per minute per IP — no account needed.


English input

Edit the JSON above and click Run quality gate.

Compliant German output

Localized result will appear here — model numbers, numeric values, and units are preserved.

Subscribe on RapidAPI for more requests See pricing

Step 1 · Send a request via RapidAPI

Get your key by subscribing on RapidAPI. Replace <YOUR_RAPIDAPI_KEY> and <YOUR_RAPIDAPI_HOST> with the values from your RapidAPI dashboard:

curl -X POST "https://<YOUR_RAPIDAPI_HOST>/localize" \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: <YOUR_RAPIDAPI_KEY>" \
  -H "X-RapidAPI-Host: <YOUR_RAPIDAPI_HOST>" \
  --data @examples/amazon-en-de-cordless-drill.json
Direct / self-hosted (non-RapidAPI) deployments — Authorization: Bearer
curl -X POST https://listloco.hayasaka.app/localize \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  --data @examples/amazon-en-de-cordless-drill.json

Request body (examples/amazon-en-de-cordless-drill.json):

{
  "marketplace": "amazon",
  "sourceLang": "en",
  "targetLang": "de",
  "listing": {
    "title": "Cordless drill AB-1200 with 8.5 kg battery and 2 m cable",
    "description": "Cordless drill AB-1200 with a 8.5 kg battery and a 2 m cable.",
    "brand": "Bosch",
    "material": "Metall",
    "size": "M",
    "color": "blue",
    "quantity": 1
  },
  "glossary": { "preserve": ["Bosch"] },
  "dictionary": {
    "cordless": "kabellos",
    "drill": "Bohrmaschine",
    "with": "mit",
    "and": "und",
    "a": "ein",
    "battery": "Akku",
    "cable": "Kabel",
    "blue": "blau"
  }
}

Step 2 · Get back gate-verified JSON

{
  "localized": {
    "title": "kabellos Bohrmaschine AB-1200 mit 8.5 kg Akku und 2 m Kabel",
    "bullets": [
      "AB-1200 bürstenlos Bohrmaschine, 8.5 kg Akku",
      "2 m Kabel inklusive"
    ]
  },
  "gates": {
    "titleLength": { "pass": true },
    "bannedWords": { "pass": true },
    "requiredAttributes": { "pass": true },
    "preservation": { "pass": true },
    "glossary": { "pass": true },
    "backTranslation": { "pass": true }
  },
  "violations": [],
  "pass": true
}

Notice the model number AB-1200, the 8.5 kg weight and the 2 m cable survive the round-trip exactly — that is the preservation gate, not luck. When any gate fails, pass is false and the offending rule is listed in violations instead of shipping silently.

Code samples — drop into your app

Via RapidAPI — Node.js (built-in fetch):

const body = {
  "marketplace": "amazon",
  "sourceLang": "en",
  "targetLang": "de",
  "listing": {
    "title": "Cordless drill AB-1200 with 8.5 kg battery and 2 m cable",
    "description": "Cordless drill AB-1200 with a 8.5 kg battery and a 2 m cable.",
    "brand": "Bosch",
    "material": "Metall",
    "size": "M",
    "color": "blue",
    "quantity": 1
  },
  "glossary": { "preserve": ["Bosch"] },
  "dictionary": {
    "cordless": "kabellos",
    "drill": "Bohrmaschine",
    "with": "mit",
    "and": "und",
    "a": "ein",
    "battery": "Akku",
    "cable": "Kabel",
    "blue": "blau"
  }
};

const response = await fetch('https://<YOUR_RAPIDAPI_HOST>/localize', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-RapidAPI-Key': '<YOUR_RAPIDAPI_KEY>',
    'X-RapidAPI-Host': '<YOUR_RAPIDAPI_HOST>'
  },
  body: JSON.stringify(body)
});
const result = await response.json();
console.log(result);

Via RapidAPI — Python (requests):

import requests

payload = {
  "marketplace": "amazon",
  "sourceLang": "en",
  "targetLang": "de",
  "listing": {
    "title": "Cordless drill AB-1200 with 8.5 kg battery and 2 m cable",
    "description": "Cordless drill AB-1200 with a 8.5 kg battery and a 2 m cable.",
    "brand": "Bosch",
    "material": "Metall",
    "size": "M",
    "color": "blue",
    "quantity": 1
  },
  "glossary": {"preserve": ["Bosch"]},
  "dictionary": {
    "cordless": "kabellos",
    "drill": "Bohrmaschine",
    "with": "mit",
    "and": "und",
    "a": "ein",
    "battery": "Akku",
    "cable": "Kabel",
    "blue": "blau"
  }
}

response = requests.post(
    "https://<YOUR_RAPIDAPI_HOST>/localize",
    json=payload,
    headers={
        "X-RapidAPI-Key": "<YOUR_RAPIDAPI_KEY>",
        "X-RapidAPI-Host": "<YOUR_RAPIDAPI_HOST>"
    }
)
print(response.json())

Direct / self-hosted (non-RapidAPI) — Node.js (built-in fetch):

const body = {
  "marketplace": "amazon",
  "sourceLang": "en",
  "targetLang": "de",
  "listing": {
    "title": "Cordless drill AB-1200 with 8.5 kg battery and 2 m cable",
    "description": "Cordless drill AB-1200 with a 8.5 kg battery and a 2 m cable.",
    "brand": "Bosch",
    "material": "Metall",
    "size": "M",
    "color": "blue",
    "quantity": 1
  },
  "glossary": { "preserve": ["Bosch"] },
  "dictionary": {
    "cordless": "kabellos",
    "drill": "Bohrmaschine",
    "with": "mit",
    "and": "und",
    "a": "ein",
    "battery": "Akku",
    "cable": "Kabel",
    "blue": "blau"
  }
};

const response = await fetch('https://listloco.hayasaka.app/localize', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer <YOUR_API_KEY>'
  },
  body: JSON.stringify(body)
});
const result = await response.json();
console.log(result);

Direct / self-hosted (non-RapidAPI) — Python (requests):

import requests

payload = {
  "marketplace": "amazon",
  "sourceLang": "en",
  "targetLang": "de",
  "listing": {
    "title": "Cordless drill AB-1200 with 8.5 kg battery and 2 m cable",
    "description": "Cordless drill AB-1200 with a 8.5 kg battery and a 2 m cable.",
    "brand": "Bosch",
    "material": "Metall",
    "size": "M",
    "color": "blue",
    "quantity": 1
  },
  "glossary": {"preserve": ["Bosch"]},
  "dictionary": {
    "cordless": "kabellos",
    "drill": "Bohrmaschine",
    "with": "mit",
    "and": "und",
    "a": "ein",
    "battery": "Akku",
    "cable": "Kabel",
    "blue": "blau"
  }
}

response = requests.post(
    "https://listloco.hayasaka.app/localize",
    json=payload,
    headers={"Authorization": "Bearer <YOUR_API_KEY>"}
)
print(response.json())

Language quickstarts (full request body + copy-paste code): Python · Node.js · PHP — see the examples page.

Get your API key on RapidAPI See pricing

How it works

Three deterministic steps — same input always produces the same output. Full API reference in OpenAPI spec →

Step 1 — Apply marketplace compliance rules

Amazon DE rule templates enforce title character limits, banned-word policies, and required category attributes before any output leaves the pipeline.

Step 2 — Localize EN→DE with an enforced customer glossary

Each field is translated using your dictionary. Brand terms and model numbers listed in your glossary are pinned — never altered by the translation step.

Step 3 — Run deterministic quality gates

Numbers, model numbers, and units from the source must survive the round-trip exactly. A back-translation divergence score is also checked. Any failure surfaces in violations — nothing ships silently.

Why ListLoco instead of raw machine translation

Rule compliance

Marketplace rule templates enforce title length limits, banned-word policies, and required attributes — so listings pass review instead of getting suppressed or suspended.

Customer glossary

Brand terms, model numbers, sizes and color names stay consistent across every listing. Your glossary becomes an asset that improves with use.

Deterministic quality gate

Title length, banned words, required attributes, preservation of numbers / model numbers / units, and a back-translation drift score — all checked mechanically before output is returned.

Why a deterministic quality gate, not just machine translation

Current MVP covers Amazon and the English → German language pair. More marketplaces and language pairs reuse the same rule-template + glossary + quality-gate framework.

Check a listing free — no signup

Pricing — predictable, stepped tiers

Prices in USD. One listing = one language for ~200–500 words. Figures match our single source of truth in src/pricing/plans.js.

Plan Price Included listings / mo Overage / listing
Free $0 100 $0.08
Basic $2/mo 200 $0.08
Pro $9/mo 1000 $0.05
Scale $29/mo 3000 $0.03
Pay-as-you-go $0.08 $0.08

Subscribe — get your API key Read the API docs

Built for developers

A dependency-free, deterministic JSON-over-HTTP API: the same input always returns the same output. Send a listing, get back marketplace-compliant, gate-verified structured JSON.

API reference OpenAPI spec

Frequently Asked Questions

How does ListLoco preserve model numbers, units, and numeric values?

A dedicated preservation gate inspects every localized field before the response is returned. Any model number, numeric measurement, or unit string found in the source (for example AB-1200, 8.5 kg, 2 m) must appear verbatim in the target. If a unit or model number is altered or dropped during translation, the gate marks the output as failed and the violations array lists the exact breach — so a corrupted model number is never returned silently to your catalog.

How does ListLoco handle Amazon marketplace compliance rules?

ListLoco applies a rule template specific to the Amazon DE marketplace before output is returned. The template enforces the title character limit set by Amazon, screens for banned or prohibited words, and confirms that required category attributes are present. These checks are deterministic: the same input always produces the same compliance verdict, so you can integrate the API into a CI pipeline or bulk-upload workflow and rely on consistent results.

How is my listing data handled and stored?

Listing data you send to the API is processed to produce the localized output and is not retained for training or resold to third parties. For the full details on data processing and your rights, please read our Privacy Policy and Terms of Service.