6 credits
Per search URL — a full brand sweep costs under a dollar
2 tables
Unauthorised sellers, and partners below floor
08:00–18:00
GMT+8 — this endpoint is approval-gated

If you sell through distributors in Indonesia, some of your product is being listed by shops you have never authorised. That is not a suspicion, it is close to a certainty — the only open questions are how many, how big, and at what price.

Most brands find out when a distributor complains. There is a faster way, and it takes one afternoon to build.

What you are actually looking for

Two separate problems get confused here, and they need different responses.

Unauthorised sellers are shops listing your product that are not on your distributor list. Some are harmless — a retailer who bought legitimately and resells. Some are diverting stock meant for another channel or another country.

Price floor breaches are your authorised partners selling below the price you agreed. That is a commercial conversation, not an enforcement one, and it is often the bigger revenue problem of the two.

A useful audit separates them, because sending the same email to both is how you lose a distributor.

Building it

Search on your own brand. Submit Shopee search URLs for your brand name and its common misspellings — and include the misspellings, because unauthorised listings are often the ones that spell it wrong. Sort by sales so the largest sellers surface first. Up to 50 URLs per request.

Parse carefully. Two details decide whether your numbers mean anything. Units sold is the numeric monthly_sold_count field — the text version is a bucket like "10k+" that makes every listing look identical. And deduplicate by itemid before summing, or you will double-count.

Aggregate by shop. Compute observed GMV per listing as units multiplied by realised price, then roll up by shop. You now have every seller of your product, ranked by size, with location.

Join against your distributor list. Everything not on it goes in table one. Everything on it whose realised price sits more than twenty per cent below your floor goes in table two.

The gating detail that decides your architecture

This uses search-items, which is approval-gated and processes only between 08:00 and 18:00 GMT+8. You cannot run it as an unattended overnight job. Submit it during working hours, or build the recurring version on product-page fetches instead, which have no such restriction.

Cost is 6 credits per URL — a fraction of a cent. A thorough brand sweep across twenty keyword variants is well under a dollar.

The discipline that matters

Do not accuse anyone of counterfeiting. Listing data shows who is selling, at what price, and from where. It does not show provenance, and a brand that sends a legal letter on the strength of a low price is one badly-aimed email from a public problem.

Report what the data supports. "This shop is selling our product at 40% below floor and is not an authorised partner" is a defensible statement. "This shop is selling fakes" is not, unless you have bought one and checked.

Making it a routine

Run the sweep monthly and keep the shop list. What matters is not the snapshot but the delta: shops that appeared since last month, shops that grew, and authorised partners whose realised price is drifting down. Those three lists are a channel management meeting; the raw list is just noise.

Recipe 2.3 in the agent skill carries the full prompt, including the parsing rules.