API documentation

Connect Data Enricher to your own platform, PIM or import script. One REST API, JSON in and JSON out.

Access and keys

Every store gets its own key: ma- followed by 32 characters. Send it in the X-Worker-Key header (or Authorization: Bearer). A key only works for the store domains that belong to it; send the domain in X-Shop-Domain.

POST /lookup HTTP/1.1
Host: api.data-enricher.com
X-Worker-Key: ma-…
X-Shop-Domain: yourstore.com
Content-Type: application/json

Every key has a monthly request limit. Answers from the cache don't count. Request a key through the contact page.

POST /lookup

Looks a product up by its EAN and returns the facts and checked photos. EAN-8, UPC-A, EAN-13 and GTIN-14 are validated including the check digit; UPC-A becomes EAN-13.

{"ean": "7333377653917", "name": "Husqvarna 550i XP", "refresh": false}
FieldMeaning
eanRequired. The product's barcode.
nameOptional. The name in your store; helps with EANs that are unclear online. At most 128 characters.
refreshOptional. true searches again instead of using the cache.
{"result": {
  "ean": "7333377653917", "identified": true, "name": "Husqvarna 550i XP",
  "description": "…", "specs": {"Battery voltage": "36 V"},
  "images": {"in_use": ["https://…"], "product": ["https://…"]},
  "sources": ["https://…"], "cached": false, "credits_used": 0, "search": "free"
}}

At most eight photos come back, "in use" first, always keeping room for at least three product photos when they exist. An error is in result.error; nothing is stored then, so you can try again later.

POST /text

Writes the product texts in a language: title, short and long description, meta title and meta description.

{"ean": "7333377653917", "name": "Husqvarna 550i XP", "language": "en", "format": "html"}

language is an ISO code: nl, en, de, fr, es, it, pt, pl, da, sv, no, fi, cs, ro, zh, ja, ru or ko. Another code falls back to English, with a warning. format is html or text.

Next to the ready-made description you get the description in parts: intro_html and sections (features, why choose it, pros, cons, what's in the box, frequently asked questions, about the brand), each with a heading in the text's language. Build your own description with the sections and order you want. details has everything as data too: specifications, properties, keywords, colors, materials and sizes.

POST /page-text

Texts for a category or brand page: a short description for the top, a long description in sections, a meta title and a meta description, with internal links to pages of your own store.

{"type": "category", "entity_id": 12, "name": "Chainsaws", "language": "en",
 "path": "Garden > Chainsaws", "subcategories": ["Cordless chainsaws"],
 "brands": ["Husqvarna"], "products": ["Husqvarna 550i XP"],
 "links": [{"type": "subcategory", "title": "Cordless chainsaws", "url": "https://yourstore.com/cordless-chainsaws"}],
 "shop_name": "Your Store"}

Links only go to the urls you send, every url at most once and at most six per text. For a brand ("type": "brand") send categories instead of subcategories and brands; the API then also searches the web for the brand.

POST /jobs

Up to twenty EANs at once, five looked up at the same time. You get a job_id back right away.

{"items": [{"ean": "7333377653917", "name": "Husqvarna 550i XP"}, {"ean": "8716637053167"}]}

Follow the progress with GET /jobs/{job_id}: status is queued, running or done, and results keeps the order of your request.

GET /usage

Your usage and limits in the current period: requests, credits and AI tokens.

Errors

StatusMeaning
400Not valid JSON.
403Wrong key, or the store domain doesn't belong to the key.
413The request is too large.
422No valid EANs in a batch.
429Too many requests, or your package limit is reached.

Content errors, such as a product that can't be found, come back with status 200 and an error in the result.

Questions about the API

How do I get an API key?

Request a key through the contact page. Every shop gets its own key, which only works for the shop domains that belong to it.

Do repeated requests count towards my limit?

No. Answers from the cache do not count.

How many EANs can I send at once?

Up to twenty in one batch through /jobs. Five of them are looked up at the same time.

What if a product cannot be found?

You get status 200 with an error in the result. Nothing is stored, so you can try again later.