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 pricingWhich fits you?
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.
Deterministic checks reduce listing compliance risk before you publish.
Open full Amazon DE Listing Checker →
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 →
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.
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.
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
- Title stays within the Amazon DE character limit.
- No banned / prohibited words in the localized copy.
- Required category attributes are present.
-
Numbers, model numbers, and units from the source are preserved
exactly (e.g.
42 EU / 8.5 USnever disappears). - Back-translation drift is measured to catch meaning loss; failing output is flagged honestly, not returned silently.
Current MVP covers Amazon and the English → German language pair. More marketplaces and language pairs reuse the same rule-template + glossary + quality-gate framework.
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 |
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.
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.