Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

souk

License Python Built by

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.

What it can actually see

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.

Install

uv venv && uv pip install -e .

Use

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.

Reviews

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.

Prices

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.

History

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.

Tests

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.

Notes

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.

About

Audit Amazon listings for fake, AI-written and guideline-breaching reviews, and compare prices across marketplaces

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages