How to Track Product Availability and Stockouts Across Marketplaces

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:

  1. Enumerate all products to monitor, including marketplace-specific product IDs
  2. Schedule regular checks (every 4-6 hours is typical; more frequently for high-priority products)
  3. Collect product page data through geo-targeted proxies
  4. Extract availability indicators from the page data
  5. Compare against previous status to detect changes
  6. 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 100

Track 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_events

Stockout 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:

SKUShopee SGShopee MYShopee THLazada SGLazada MYLazada TH
A001In StockIn StockOut of StockIn StockLow StockIn Stock
A002In StockIn StockIn StockIn StockIn StockIn Stock
A003Out of StockIn StockIn StockOut of StockIn StockIn 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_stockout

Seasonal 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.


Related Reading

Scroll to Top