Updated Oct 2026
Trusted Shops (eTrusted) API in Python: channels, reviews, replies
Trusted Shops moved its API to the eTrusted platform: OAuth client credentials, five-minute tokens, channels (one per shop), a reviews endpoint with cursor pagination that returns service and product reviews together, and a reply endpoint. This guide does all of it with requests, the way Prisma’s Trusted Shops connector does, then shows the same through Prisma. The overview of what each e-commerce review platform allows is on e-commerce reviews API.
pip install requestsFrom the eTrusted Control Centre → Settings → API Client Management: an API client’s client id and client secret.
1. Get a token (lasts about 5 minutes)
import os, time, requests
API = "https://api.etrusted.com"
_tok = {"value": None, "exp": 0}
def token():
if _tok["value"] and _tok["exp"] > time.time() + 30:
return _tok["value"]
r = requests.post("https://login.etrusted.com/oauth/token",
data={"grant_type": "client_credentials", "client_id": os.environ["ETRUSTED_CLIENT_ID"],
"client_secret": os.environ["ETRUSTED_CLIENT_SECRET"], "audience": API}, timeout=30)
r.raise_for_status()
body = r.json()
_tok.update(value=body["access_token"], exp=time.time() + body.get("expires_in", 300))
return _tok["value"]
def h(): return {"Authorization": f"Bearer {token()}", "Accept": "application/json", "Content-Type": "application/json"}2. List your channels
channels = requests.get(f"{API}/channels", headers=h(), timeout=30).json()
for c in channels:
print(c["id"], c.get("name"), c.get("url"))
CHANNEL = channels[0]["id"]3. Page through the reviews (service and product)
def reviews(channel):
url = f"{API}/reviews?channels={channel}&orderBy=updatedAt&count=100&ignoreStatements=true"
while url:
r = requests.get(url, headers=h(), timeout=30)
r.raise_for_status()
page = r.json()
yield from page.get("items", [])
after = ((page.get("paging") or {}).get("cursor") or {}).get("after")
url = f"{API}/reviews?channels={channel}&orderBy=updatedAt&count=100&ignoreStatements=true&after={after}" if after and page.get("items") else None
for rev in reviews(CHANNEL):
kind = rev.get("type") # SERVICE_REVIEW or PRODUCT_REVIEW
title = rev.get("title") or (rev.get("product") or {}).get("name") if kind == "PRODUCT_REVIEW" else rev.get("title")
cust = rev.get("customer") or {}
author = f"{cust['firstName']} {cust['lastName'][0]}." if cust.get("firstName") and cust.get("lastName") else cust.get("fullName")
print(rev["id"], kind, rev.get("rating"), title, (rev.get("comment") or "")[:80], author, "| replied" if (rev.get("reply") or {}).get("comment") else "")Fields: rating (1 to 5), title, comment, type, product.name on product reviews, customer (first name and last name, or a full name), createdAt, submittedAt, updatedAt, state, and reply.comment with reply.createdAt when you’ve answered. ignoreStatements=true skips reviews that are only a rating with a default statement. Pagination is a cursor: follow paging.cursor.after until a page comes back empty.
4. Reply
requests.post(f"{API}/reviews/{rev['id']}/reply", headers=h(),
json={"comment": "Thank you, Laura. The replacement part shipped this morning.", "sendNotification": True}, timeout=30).raise_for_status()sendNotification emails the reviewer. The reply appears under the review on your Trusted Shops profile.
5. The same job through Prisma
Prisma connects a Trusted Shops account with the client id and secret (checked before storing, encrypted), imports every channel as a location, keeps the five-minute tokens fresh, merges service and product reviews into one feed and publishes replies through the same endpoint. One key covers Trusted Shops plus Judge.me, Trustpilot, Google and 50+ other platforms.
H = {"Authorization": f"Bearer {os.environ['PRISMA_API_KEY']}"}
r = requests.get("https://api.prismareviews.com/v1/reviews", headers=H, params={"platform": "trusted_shops", "has_reply": "false", "limit": 100}, timeout=30)
for rev in r.json()["data"]:
print(rev["rating"], rev["author"], rev["title"], rev["text"])
requests.post(f"https://api.prismareviews.com/v1/reviews/{rev['id']}/reply", headers=H,
json={"text": "Thank you, Laura. The replacement part shipped this morning."}, timeout=30).raise_for_status()Replies to Trusted Shops reviews through Prisma are live today, confirmed by a reply.published webhook. Connection fields: Trusted Shops on Platforms. A test key returns sample reviews so the code runs now.
FAQ
Where do I create Trusted Shops API credentials?
In the eTrusted Control Centre under Settings → API Client Management: create an API client and copy its client id and secret. Tokens come from login.etrusted.com with the client-credentials grant and last about five minutes.
Can I reply to Trusted Shops reviews by API?
Yes: POST /reviews/{id}/reply on api.etrusted.com with a comment, and sendNotification to email the reviewer. The reply shows on the review on your Trusted Shops profile.
What is a channel in the eTrusted API?
A channel is one shop (one domain or storefront) in your Trusted Shops account. Reviews are queried per channel, and each channel has its own service and product reviews.
Trusted Shops, Trustpilot, Google and 50 more, one key.
2 locations free. Test keys return sample reviews from every platform.