Updated Oct 2026
Feefo reviews API in Python: service and product reviews, no key
Feefo’s public Reviews API is the easiest in this series: a GET with your merchant identifier, no key, 100 reviews a page, and the merchant’s own comments included. The one quirk is structure: a single Feefo review can rate the service and several products, each as its own part with its own id and thread. This guide reads it with requests, exactly as Prisma’s Feefo connector does (checked against Feefo’s example merchant), then the same through Prisma. The store-platform picture is on e-commerce reviews API.
pip install requestsYou need only the merchant identifier, the name in your feefo.com/reviews/<identifier> page.
1. Page through the reviews
import requests
API = "https://api.feefo.com/api/20/reviews/all"
MERCHANT = "example-retail-merchant" # Feefo's demo merchant; replace with yours
def reviews(updated_period="all"):
page = 1
while True:
r = requests.get(API, params={"merchant_identifier": MERCHANT, "page_size": 100, "page": page, "since_period": "all", "since_updated_period": updated_period}, timeout=30)
r.raise_for_status()
body = r.json()
yield from body.get("reviews", [])
if page >= ((body.get("summary") or {}).get("meta") or {}).get("pages", 1):
break
page += 1
def merchant_reply(thread):
"""The merchant's latest comment in the part's thread, or None."""
comments = [t for t in (thread or []) if (t.get("type") or "").lower().startswith("merchant") or t.get("comment")]
return comments[-1] if comments else None
for r in reviews():
author = (r.get("customer") or {}).get("display_name")
parts = [("service", r.get("service"))] + [("product", p) for p in r.get("products") or []]
for kind, part in parts:
if not part or not part.get("id"):
continue
reply = merchant_reply(part.get("thread"))
title = part.get("title") or (kind == "product" and (part.get("product") or {}).get("title"))
print(part["id"], kind, (part.get("rating") or {}).get("rating"), title, (part.get("review") or "")[:80], author, part.get("created_at"), "| replied" if reply else "")Fields per review: url (the review on Feefo), locale, customer.display_name, last_updated_date, a service part and a products list; per part: id, rating.rating (1 to 5), title, review, created_at, thread (comments, including the merchant’s) and, for products, product.title and product.reviews_url. The summary.meta.pages value tells you how many pages to read.
2. Incremental sync
since_updated_period accepts week, month, year or all; pick the smallest that covers your last sync and skip reviews whose last_updated_date you’ve already seen. The list isn’t sorted by update time, so read every page of the chosen period.
3. What the API won’t do
No replies (write them in the Feefo Hub), no unpublished reviews, no webhooks. It’s a public read of what the Feefo page shows, which is also why it needs no key.
4. The same job through Prisma
Prisma connects a Feefo merchant with the identifier (checked against Feefo before storing), splits each review into its service and product parts with their own ids, returns the merchant’s comment as the reply and everything in the same JSON as Trustpilot, Judge.me, Google and 50+ other platforms, with a webhook per new review.
import os
H = {"Authorization": f"Bearer {os.environ['PRISMA_API_KEY']}"}
r = requests.get("https://api.prismareviews.com/v1/reviews", headers=H, params={"platform": "feefo", "has_reply": "false", "limit": 100}, timeout=30)
for rev in r.json()["data"]:
print(rev["rating"], rev["author"], rev["title"], rev["text"], rev["url"])Feefo is read-only in Prisma, like on Feefo; each review carries its url. Connection fields: Feefo on Platforms. A test key returns sample reviews so the code runs now.
FAQ
Do I need an API key for Feefo reviews?
Not for the public Reviews API: GET https://api.feefo.com/api/20/reviews/all?merchant_identifier=<yours> returns the merchant’s published reviews with no credentials. The merchant identifier is the name in your feefo.com/reviews/<identifier> page.
Can I reply to Feefo reviews by API?
No. The merchant’s comments in a review’s thread are returned as data, but there is no endpoint to post one; replies are written in the Feefo Hub.
Why does one Feefo review produce several entries?
A Feefo review can rate the service and several products at once; each part has its own id, rating, text and thread. Treat each part as a review of its own, keyed by the part id.
Feefo, Trustpilot, Judge.me and Google, one key.
2 locations free. Test keys return sample reviews from every platform.