Sonny Angel Restock Tracker — Stock Checker & Restock Alerts
Pricing
from $0.50 / 1,000 store checks
Sonny Angel Restock Tracker — Stock Checker & Restock Alerts
Get a Discord or webhook alert the moment Sonny Angel figures restock on the official US store or any Shopify store. Tracks every series and box variant, diffs each run against the last, and outputs only what changed. Schedule it every few minutes for a Shopify inventory monitor.
Pricing
from $0.50 / 1,000 store checks
Rating
0.0
(0)
Developer
Scrapelab Max
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Sonny Angel Restock Tracker: Stock Checker & Restock Alerts
Get a Discord ping the moment Sonny Angel figures restock. This tool checks the official Sonny Angel USA store at sonnyangelusa.com and up to 10 authorized retailers. Each run compares the catalog with the previous run and reports only what changed. Schedule it every few minutes and you have a restock alert service for every series and box size.
It also works on any Shopify store: paste a store or collection URL to use it as a general Shopify restock and inventory monitor.
What you get
- Restock alerts in Discord: product name, box size, price, store, and a direct link to the product page, sent when an item goes from sold out to in stock. Alerts also fire when a new product appears already in stock.
- Any other destination through a webhook: a JSON POST to Zapier, Make, n8n, your own server, or a bot.
- Every box size tracked separately: "1 Piece" and "Box of 12" restock independently, so each is tracked on its own.
- Series names: "Snack Series" becomes
Snackand "HIPPERS - Harvest Series" becomesHIPPERS Harvest. Filter to only the series you care about. - Change-only output: the dataset holds only restocks, sell-outs, new listings, and removals. Turn on
fullCatalogto get every item on every run. - Fails loudly: if a store returns nothing, the run fails with a clear message. It never reports "everything sold out" because of a hiccup.
Stores
| Store | How to enable |
|---|---|
| Sonny Angel USA (official), sonnyangelusa.com | Default |
| Kinokuniya USA, JapanLA, Senpai's Corner, Friends NYC, Gunnzo, Leanna Lin's Wonderland, World of Mirth, Peace Love & Happiness Club, Kiddywampus, Colorful Cute | Tick them under Also check these retailers. All are on Sonny Angel's official retailer list. |
| Any other Shopify store | Add its URL, or a /collections/<handle> URL, to Store URLs |
Quick start
- Create a Discord webhook: open Channel settings, then Integrations, Webhooks, New Webhook, and Copy Webhook URL.
- Paste it into Discord webhook URL and tick any extra retailers you want.
- Click Start once. The first run is a baseline: it records the current stock and sends no alerts.
- Open Schedules and run it every 2–5 minutes. Every later run alerts on changes.
Keep Snapshot store name the same across scheduled runs. That store remembers the previous run's stock. If you change it, the next run starts from a new baseline.
Input
| Field | Default | Description |
|---|---|---|
storeUrls | ["https://www.sonnyangelusa.com"] | Shopify stores, or single collections, to check |
retailerPresets | [] | Retailer ids to add, e.g. ["japanla", "kinokuniya-usa"] |
brandKeyword | Sonny Angel | Track only products whose title, tags, vendor, or type contain this keyword. Leave empty to track everything. |
seriesFilter | [] | Keywords such as ["hippers", "animal"]. Leave empty to track every series. |
fullCatalog | false | Output every item each run, not only changes |
alertOnNewProducts | true | Also alert when a never-seen product appears in stock |
discordWebhookUrl | — | Discord channel webhook |
webhookUrl | — | Generic JSON webhook |
snapshotStoreName | sonny-angel-snapshot | Named key-value store holding the last run's stock |
proxyConfiguration | off | Turn on Apify Proxy only if runs start failing with 403 or 429 |
Output
One row per variant:
{"title": "Snack Series","variantTitle": "Sonny Angel Mini Figure Snack (1 Piece)","series": "Snack","changeType": "restocked","available": true,"previousAvailable": false,"price": 12.25,"currency": "USD","url": "https://www.sonnyangelusa.com/products/snack-series?variant=47033562398934","imageUrl": "https://cdn.shopify.com/...","storeUrl": "https://www.sonnyangelusa.com","productId": "9036689375446","variantId": "47033562398934","sku": "W-SAS-65985ea","tags": ["Sonny Angel", "Regular", "..."],"isBaselineRun": false,"scrapedAt": "2026-10-27T03:40:12.000Z"}
changeType is one of new, restocked, soldOut, unchanged (only with fullCatalog), or removed. Each run's summary is saved in the run's key-value store as OUTPUT.
The generic webhook receives { "event": "restock", "storeUrls": [...], "scrapedAt": "...", "items": [ ...rows ] }.
Cost
These figures were measured on the Apify platform at 256 MB of memory:
| Setup | Run time | Compute per run | Every 2 min, per month |
|---|---|---|---|
| Official store only | about 2–3 s | about 0.0002 CU | about 4 CU |
| Official store plus 10 retailers | about 8 s | about 0.0006 CU | about 12 CU |
Use 256 MB of memory; more does not make it faster. No proxy is needed by default.
Good to know
- "In stock" means reported in stock. The store's own stock flag can lag behind checkout, and per-customer limits still apply. The alert gets you to the page fast; it cannot guarantee checkout.
- Polling interval: 2–5 minutes is the sustainable range. Polling every minute through shared IPs looks like one aggressive client and risks blocks for everyone.
- What it reads: only public catalog data, the same JSON the store serves to every visitor. It never touches carts, accounts, or checkout.
- Stock counts: inventory quantities aren't published by these stores, so
inventoryQuantityis usuallynull.
Feedback
Want a store added, or found a series name that looks wrong? Open an issue on the actor's Issues tab.