How to Track Product Availability and Stockouts Across Marketplaces
A product that is out of stock is a product that cannot generate revenue. That much is obvious. What is less obvious is the cascading damage that stockouts cause beyond the immediate lost sale. On marketplaces like Amazon, Shopee, and Lazada, going out of stock can trigger a downward spiral: lost search ranking, reduced visibility, and a recovery period that costs far more than the stockout itself.
For brands that sell through third-party sellers and distributors, stockout monitoring is even more complex. You may not have direct visibility into your sellers’ inventory levels. The only way to know if your product is available to consumers is to check the marketplace yourself—systematically, continuously, and at scale.
This article explains how to build a stockout monitoring system, why proxy infrastructure makes it possible, and how to turn availability data into actionable intelligence.
The True Cost of Stockouts
Immediate Revenue Loss
The most direct cost of a stockout is the revenue from sales that could not happen. For a product selling 50 units per day at $20 each, a two-day stockout costs $2,000 in lost revenue. Across a portfolio of hundreds of products, stockout costs can be substantial.
Search Ranking Degradation
Marketplace algorithms heavily weight sales velocity in their ranking calculations. When a product goes out of stock, its sales velocity drops to zero. This signals to the algorithm that the product is less relevant, causing it to drop in search rankings. When stock is replenished, the product has to rebuild its ranking momentum from a lower starting position.
The ranking recovery period often takes longer than the stockout itself. A one-day stockout might require two to three weeks to fully recover the lost ranking position.
Customer Loss to Competitors
When a consumer searches for a product and your listing shows “Out of Stock,” they do not wait—they buy from a competitor. If they have a good experience with the alternative product, you may have lost that customer permanently.
Buy Box Loss
On multi-seller platforms, going out of stock means losing the buy box to competing sellers. Even after restocking, regaining the buy box can take time and may require more aggressive pricing.
Advertising Waste
If you are running sponsored product campaigns for products that are out of stock, you are either wasting ad spend (if the campaign continues to run) or losing campaign momentum (if it pauses). Either way, your advertising efficiency suffers.
What to Monitor
Effective stockout monitoring goes beyond a simple in-stock/out-of-stock check. Track these availability dimensions:
Stock Status
The basic availability indicator:
- In stock: Available for immediate purchase
- Out of stock: Not available for purchase
- Limited stock: Available but with low quantity warnings
- Pre-order: Not yet available but accepting orders
Fulfillment Method
How the product is fulfilled affects the consumer experience and marketplace ranking:
- Marketplace fulfilled (FBA, FBL)
- Seller fulfilled
- Dropship
- Store pickup
Delivery Estimates
Delivery timeframe is a proxy for stock location and availability:
- Same-day delivery (stock in local warehouse)
- Next-day delivery
- 2-5 day delivery
- Extended delivery (7+ days, may indicate stock issues)
Seller-Level Availability
For products with multiple sellers, track availability at the seller level:
- Which sellers are in stock?
- Which sellers are out of stock?
- Is at least one authorized seller in stock?
Geographic Availability
A product may be in stock for delivery to some areas but not others. This is common on platforms with distributed fulfillment networks.
Building a Stockout Monitoring System
Data Collection Approach
Stockout monitoring requires regular checks of product pages across all platforms and markets. The data collection process:
- Enumerate all products to monitor, including marketplace-specific product IDs
- Schedule regular checks (every 4-6 hours is typical; more frequently for high-priority products)
- Collect product page data through geo-targeted proxies
- Extract availability indicators from the page data
- Compare against previous status to detect changes
- Generate alerts for stockout events
Proxy Requirements for Availability Monitoring
Stock availability is inherently geographic. A product might be available for delivery in Singapore but out of stock for delivery in Kuala Lumpur. To get accurate availability data for each market:
- Use proxies located in each target country
- Mobile proxies are ideal because they represent how most SEA consumers access marketplaces
- Rotate IPs to avoid detection while maintaining consistent geographic targeting
DataResearchTools provides mobile proxy infrastructure across Singapore, Malaysia, Thailand, Indonesia, the Philippines, and Vietnam, enabling brands to monitor product availability as consumers in each market experience it.
Implementation
class StockoutMonitor:
def __init__(self, proxy_manager, db, alert_manager):
self.proxy_manager = proxy_manager
self.db = db
self.alert_manager = alert_manager
async def check_availability(self, product):
"""Check availability for a single product listing."""
proxy = self.proxy_manager.get_proxy(product['country'])
parser = self.get_parser(product['platform'])
page_data = await self.fetch_page(product['url'], proxy)
if page_data:
availability = parser.extract_availability(page_data)
return {
'product_id': product['product_id'],
'sku': product['sku'],
'platform': product['platform'],
'country': product['country'],
'seller_id': product.get('seller_id'),
'in_stock': availability['in_stock'],
'stock_level': availability.get('stock_level'), # If visible
'stock_indicator': availability.get('indicator'), # "Few left", etc.
'fulfillment_type': availability.get('fulfillment'),
'delivery_estimate': availability.get('delivery_days'),
'checked_at': datetime.utcnow(),
}
return None
async def run_availability_check(self, products):
"""Run availability checks for all products and detect changes."""
results = []
for product in products:
result = await self.check_availability(product)
if result:
previous = self.db.get_last_availability(
result['product_id'],
result['platform'],
result['country']
)
result['status_changed'] = (
previous is not None
and previous['in_stock'] != result['in_stock']
)
result['previous_status'] = (
previous['in_stock'] if previous else None
)
if result['status_changed']:
self.handle_status_change(result)
results.append(result)
self.db.store_availability(result)
return results
def handle_status_change(self, result):
"""Handle a stock status change event."""
if result['previous_status'] and not result['in_stock']:
# Product went from in-stock to out-of-stock
self.alert_manager.send_alert(
severity='high',
title=f"Stockout: {result['sku']}",
message=(
f"{result['sku']} is now out of stock on "
f"{result['platform']} ({result['country']}). "
f"Seller: {result.get('seller_id', 'N/A')}"
),
)
elif not result['previous_status'] and result['in_stock']:
# Product went from out-of-stock to in-stock
self.alert_manager.send_alert(
severity='info',
title=f"Back in stock: {result['sku']}",
message=(
f"{result['sku']} is back in stock on "
f"{result['platform']} ({result['country']})."
),
)Analyzing Availability Data
Availability Rate
The fundamental availability metric:
Availability Rate = (In-stock checks) / (Total checks) x 100Track this metric by product, category, platform, country, and seller. An availability rate below 95% typically indicates a problem worth investigating.
Stockout Duration
Measure how long each stockout event lasts:
def calculate_stockout_duration(stockout_events):
"""Calculate the duration of each stockout event."""
for event in stockout_events:
if event['restored_at']:
event['duration_hours'] = (
event['restored_at'] - event['detected_at']
).total_seconds() / 3600
else:
# Still out of stock
event['duration_hours'] = (
datetime.utcnow() - event['detected_at']
).total_seconds() / 3600
return stockout_eventsStockout Frequency
How often does each product go out of stock? Products with frequent stockouts may have systematic supply chain issues that need addressing.
Revenue Impact Estimation
Estimate the revenue impact of each stockout:
def estimate_stockout_revenue_impact(sku, duration_hours, daily_sales_rate, avg_price):
"""Estimate revenue lost during a stockout."""
days_out = duration_hours / 24
estimated_lost_units = daily_sales_rate * days_out
estimated_lost_revenue = estimated_lost_units * avg_price
# Add estimated ranking recovery cost
# (conservative estimate: 50% reduced sales for 2x the stockout duration
# during recovery period)
recovery_days = days_out * 2
recovery_lost_units = daily_sales_rate * 0.5 * recovery_days
recovery_lost_revenue = recovery_lost_units * avg_price
return {
'direct_lost_revenue': estimated_lost_revenue,
'recovery_lost_revenue': recovery_lost_revenue,
'total_estimated_impact': estimated_lost_revenue + recovery_lost_revenue,
}Cross-Platform Availability Matrix
Create a matrix showing availability status across all platforms and countries for each product:
| SKU | Shopee SG | Shopee MY | Shopee TH | Lazada SG | Lazada MY | Lazada TH |
|---|---|---|---|---|---|---|
| A001 | In Stock | In Stock | Out of Stock | In Stock | Low Stock | In Stock |
| A002 | In Stock | In Stock | In Stock | In Stock | In Stock | In Stock |
| A003 | Out of Stock | In Stock | In Stock | Out of Stock | In Stock | In Stock |
This view immediately highlights availability gaps that need attention.
Proactive Stockout Prevention
Low Stock Alerts
When platforms display low-stock indicators, capture and alert on these before the product goes fully out of stock. This provides a window for intervention.
Velocity-Based Predictions
If you can access sales velocity data (from your seller dashboard), combine it with visible stock indicators to predict when a product will go out of stock:
def predict_stockout(current_stock, daily_sales_rate):
"""Estimate days until stockout based on current velocity."""
if daily_sales_rate <= 0:
return None # No sales data
days_until_stockout = current_stock / daily_sales_rate
return days_until_stockoutSeasonal Pattern Recognition
Some stockouts are predictable based on seasonal patterns. Analyze historical availability data to identify products and periods that are prone to stockouts, and plan inventory accordingly.
Seller Reliability Scoring
Track which sellers maintain consistent availability and which ones have frequent stockouts. Use this data to prioritize stocking recommendations and adjust seller allocations.
Platform-Specific Availability Monitoring
Shopee
Shopee shows stock levels for some products (e.g., “42 pieces available”). Capture this data when visible. Shopee also marks products as “Sold Out” when the last item is purchased, providing a clear signal.
Lazada
Lazada displays availability status and delivery estimates prominently. Products fulfilled by LazMall or FBL generally have more reliable availability data. Monitor both the main seller and alternative offers.
Amazon
Amazon provides detailed availability information, including exact delivery dates and fulfillment method. Track whether the product is available from Amazon directly, FBA sellers, or only third-party sellers with longer delivery times.
Tokopedia
Tokopedia shows stock availability and location-based delivery estimates. Use Indonesian mobile proxies from DataResearchTools to capture accurate availability data for the Indonesian market.
Responding to Stockouts
When a stockout is detected, trigger appropriate responses:
For Your Own Seller Accounts
- Expedite inventory shipments to affected warehouses
- Enable backup fulfillment methods
- Adjust advertising spend (reduce or pause campaigns for out-of-stock products)
For Third-Party Sellers
- Notify the seller of the stockout
- Contact backup sellers to ensure coverage
- Redirect advertising to in-stock sellers
For Competitor Analysis
- Monitor competitor stockouts for opportunities
- Increase advertising spend on products where competitors are out of stock
- Track how quickly competitors recover from stockouts
DataResearchTools for Stockout Monitoring
Reliable stockout monitoring requires consistent, geo-targeted data collection. DataResearchTools mobile proxies provide:
- Carrier-level IPs across SEA markets for accurate local availability data
- Consistent uptime for regular monitoring schedules
- Fast response times for frequent availability checks
- High concurrency for monitoring large product portfolios
With DataResearchTools, brands can maintain continuous visibility into product availability across Southeast Asian marketplaces and respond to stockouts before they cause lasting damage.
Conclusion
Stockout monitoring is a deceptively simple concept with significant business impact. The cost of a stockout extends far beyond the immediate lost sale, affecting search rankings, customer loyalty, and competitive positioning. By building an automated monitoring system powered by geo-targeted mobile proxies, brands gain the real-time visibility needed to detect stockouts quickly, respond effectively, and prevent future occurrences. In competitive marketplace environments, the brands that maintain consistent availability win the long game.
- Building an Automated Price Parity Monitor with Proxies
- How to Build a Digital Shelf Monitoring System with Proxies
- How to Scrape AliExpress Product Data Without Getting Blocked
- Amazon Buy Box Monitoring: Proxy Setup for Continuous Tracking
- AdsPower Proxy Setup: Multi-Account Browser Configuration
- AdsPower vs GoLogin: Features, Pricing, and Proxy Support Compared
- Building an Automated Price Parity Monitor with Proxies
- How to Build a Digital Shelf Monitoring System with Proxies
- How to Scrape AliExpress Product Data Without Getting Blocked
- Amazon Buy Box Monitoring: Proxy Setup for Continuous Tracking
- AdsPower Proxy Setup: Multi-Account Browser Configuration
- AdsPower Tutorial: Team Browser Management Guide 2026
- Building an Automated Price Parity Monitor with Proxies
- How to Build a Digital Shelf Monitoring System with Proxies
- How to Scrape AliExpress Product Data Without Getting Blocked
- Amazon Buy Box Monitoring: Proxy Setup for Continuous Tracking
- AdsPower Proxy Setup: Multi-Account Browser Configuration
- AdsPower Tutorial: Team Browser Management Guide 2026
Related Reading
- Building an Automated Price Parity Monitor with Proxies
- How to Build a Digital Shelf Monitoring System with Proxies
- How to Scrape AliExpress Product Data Without Getting Blocked
- Amazon Buy Box Monitoring: Proxy Setup for Continuous Tracking
- AdsPower Proxy Setup: Multi-Account Browser Configuration
- AdsPower Tutorial: Team Browser Management Guide 2026