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.

Shell
pip install requests

You need only the merchant identifier, the name in your feefo.com/reviews/<identifier> page.

1. Page through the reviews

Python
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.

Python
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.

Get API key

2 locations free. Test keys return sample reviews from every platform.

Get your API key in a minute

Free Spark plan: 2 locations, no card. Test keys return sample data on all 62 platforms, so you can build before connecting a real one.