Shopee Flash Sale & Price Drop Monitor avatar

Shopee Flash Sale & Price Drop Monitor

Pricing

from $1.40 / 1,000 results

Go to Apify Store
Shopee Flash Sale & Price Drop Monitor

Shopee Flash Sale & Price Drop Monitor

Track every Shopee Flash Sale across 11 country sites. Returns the session calendar plus each item's flash price, original price, saving, discount percent, remaining stock and units sold - as plain numbers, no currency symbols. Schedule it and diff on itemId. No login.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

Faisal Ahdan naufal

Faisal Ahdan naufal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Track every Shopee Flash Sale across 11 country sites, with prices you can actually put in a spreadsheet.

Returns the session calendar — which sale is live now, which starts tonight — and every item inside a session with its flash price, original price, saving, discount percent, remaining stock and lifetime units sold.

No login, no cookies, no API key.

What you get

{
"_country": "MY",
"sessionName": "[CFS] Shocking Sale 20 Sep Slot 5 (4pm - 8pm)",
"sessionIsOngoing": true,
"name": "SKINTIFIC Cover Glow Perfect Pink Cushion Foundation",
"currency": "MYR",
"price": 25.84,
"priceBeforeDiscount": 99.0,
"savingAmount": 73.16,
"discountPercent": 74.0,
"flashSaleStock": 20,
"stockRemainingPercent": 0.14,
"historicalSold": 14506,
"shopId": 1457622087,
"itemId": 44421234179,
"url": "https://shopee.com.my/product-i.1457622087.44421234179"
}

Money is a number, never a string. Shopee quotes prices as integers scaled by 100,000 (45955000000 means 459550). This Actor divides them out, so price is 25.84 — no currency symbol, no thousands separator, nothing to clean up before you sum a column. The currency lives in its own field.

Modes

ModeRequestsWhat you get
monitor1 per country + 1 per sessionSessions and every item — the price-tracking mode
sessions1 per countryJust the calendar. Use it to decide when to run monitor
reference1–2 per countryProbes each site and reports what answered

Using it as a price monitor

Schedule monitor and diff consecutive datasets on itemId:

  • price moving down on a competitor's shopId is a price cut.
  • stockRemainingPercent falling fast is a product selling out — the urgency signal a flash sale is built around.
  • historicalSold rising between runs is real sales velocity.

Pair it with Apify's webhooks to fire when a watched itemId drops below a threshold.

Coverage, measured

Sessions verified live on 2026-09-20:

CountrySiteSessions
Indonesiashopee.co.id3
Singaporeshopee.sg4
Malaysiashopee.com.my5
Philippinesshopee.ph4
Vietnamshopee.vn5
Thailandshopee.co.th4
Brazilshopee.com.br2

Taiwan, Mexico, Colombia and Chile are configured and accepted but were not verified in that run.

Items per session: 42–53 measured. itemsPerSession: 100 returns the whole session in one request; lowering it saves rows, not requests.

What this Actor deliberately does not claim

Shopee gates most of its API at the load balancer. Measured the same day, plain HTTP, no browser:

EndpointResult
search/search_items403
item/get_ratings (reviews)403
shop/get_shop_seo403
product page HTML200 / 848 KB with zero product data
product Q&A — every documented path404, no public API exists
flash_sale/get_all_sessions200 ✅
flash_sale/flash_sale_get_items200 ✅

The refusal is identical every time (error 90309999,

sgw-errmsg: Status generated by alb
) and no Set-Cookie is ever issued, so there is no session warm-up that unlocks it. This Actor uses the two endpoints that sit outside that gate, and when one of them is refused it emits a GATED record naming the endpoint rather than an empty result. Those are very different things and a scraper that conflates them is lying to you.

If GATED records appear, switch on proxyConfiguration with a residential group — the gate is IP-sensitive.

Input example

{
"mode": "monitor",
"countries": ["ID", "MY", "VN"],
"ongoingOnly": true,
"itemsPerSession": 100,
"proxyConfiguration": { "useApifyProxy": true }
}