Audit Amazon listings for manipulated reviews, and compare one product's price across marketplaces.
Fakespot shut down in July 2025 and ReviewMeta went dark in early 2026, so there is currently nothing credible doing this. souk does not try to replace their trust grade. It gathers the evidence, cites the rule a review appears to break, and leaves the judgment to you or to an agent reading its JSON.
Amazon renders roughly a dozen full reviews on a public product page, each with a review ID, reviewer profile, star rating, title, body, date, country, verified-purchase badge and the variation it was left on, plus the aggregate rating and star histogram. That is what this reads.
The paginated review pages (/product-reviews/ and /portal/customer-reviews/) redirect to a sign-in wall. souk does not touch them. That ceiling is deliberate, and it means the sample is Amazon's selection rather than a random one: treat results as evidence about a listing, not a census of its reviews.
uv venv && uv pip install -e .
souk reviews B09B94956P --market es # audit the reviews
souk price B09B94956P # compare across es,de,fr,it,nl,uk
souk history B09B94956P --markets es,uk # download price-history charts
souk markets # supported marketplaces
--json on any of the first three gives structured output. --refresh bypasses the six-hour cache.
Three layers run over the sample:
Authenticity signals cover verified-purchase share, how tightly review dates cluster, the shape of the star curve, near-duplicate bodies, repeat reviewers, variation spread and body-length distribution. Each reports its value, the n it was computed over, and whether it reads as suspicious. A signal that could not be evaluated returns null rather than a confident zero.
Guideline checks match review text against Amazon's published Community Guidelines, with the rule and a verbatim citation attached to every hit. They cover seller and shipping feedback, cross-store price comparisons, private information, external links, compensated reviews, promotional conflicts of interest, spam and profanity, plus duplicate text appearing under different reviewers. These are candidates: regexes over short multilingual text over-trigger, so read the excerpt before calling anything a breach.
Prose features measure sentence-length variance, vocabulary ratio, stock LLM connectives, the absence of the typos and emoji that real reviews carry, and generic-praise density. No classifier, no verdict. Tidy human writers trip these too.
Fetches the same ASIN across marketplaces concurrently and normalises to a common currency using ECB daily reference rates. ASINs are shared across the big European marketplaces but not with .com, .se or .pl, which is flagged per quote.
The output distinguishes "not listed here" from "listed but Amazon will not ship it to your location" from "no price could be read", because the last one is a parser problem and the other two are not. Listed prices carry local VAT and exclude shipping, and a UK order into the EU can attract import VAT on arrival.
CamelCamelCamel's product pages sit behind a Cloudflare challenge that headless stealth browsers do not clear. Its chart renderer is open, and the rendered legend prints the exact lowest, highest and current price with dates, so the image is the data source. souk history saves the PNGs; open them, or have an agent read them.
Camel covers es, de, fr, it, uk and com.
pytest
Golden tests pin the parsers against a captured detail page, since Amazon changes that markup without notice. Every guideline rule has a positive case proving it fires and a clean case proving it stays quiet, because a rule that can never match is indistinguishable from a listing that passed.
The captured page was fetched unauthenticated and then scrubbed: anonymous CSRF tokens and the delivery-location glow are replaced with placeholders. If you recapture it, scrub it again before committing.
Requests are throttled and cached. Scraping public pages is contrary to Amazon's terms of service, whatever the status of public data generally; this fetches at human rates for personal purchasing decisions and does not go near anything behind a login.