Web Scraping Layers for AI & Automation

back to blog

Monitoring Competitor Prices Across eBay, 1688, and Your Own Shopify Catalog

ParseBird·01 Sep 2026

Key Takeaways

Why does sold price matter more than listed price for competitive intelligence? Listed price is an asking price — anyone can list an iPhone at any number. Sold price is what buyers actually paid, which makes it a far more honest signal of true market clearing price than scraping competitors' storefronts alone.

Can you monitor your supplier cost basis with the same kind of pipeline? Yes — 1688 (China's largest B2B wholesale marketplace) publishes tiered pricing by order quantity directly on listings, which is the actual cost curve behind a huge share of dropshipped and white-label inventory sold on Shopify and elsewhere.

Do you need a paid pricing-intelligence SaaS to run this? Not for a small-to-mid catalog — the three data sources below cover sold comps, supplier cost, and your own storefront without a subscription, though a SaaS tool still wins on repricing automation once you're managing thousands of SKUs.

Three Price Signals, Not One

Most "price monitoring" advice conflates three genuinely different signals into one number:

SignalSourceWhat it tells you
What buyers actually paideBay sold listingsTrue market clearing price, not asking price
What it costs you to source1688 wholesale tiersYour real margin floor at a given order volume
What you're currently chargingYour own Shopify catalogWhether your price still makes sense against the other two

Tracking only the middle one (competitor listed prices) tells you what other sellers hope to get, not what the market actually pays or what your true margin looks like. All three together is a genuinely different, more honest picture.

Sold Price: What the Market Actually Paid

The eBay Sold Listings Scraper returns closed, completed sales — not active listings — across 8 marketplaces, filterable by keyword, condition, and a lookback window:

{
  "title": "iPhone 15 Pro Max - 512 GB - Blue - Unlocked - 99% Batt Health",
  "condition": "Pre-Owned",
  "endedAt": "2026-06-20T05:00:00.000Z",
  "soldPrice": "750",
  "soldCurrency": "USD",
  "listingType": "best_offer_accepted",
  "sellerFeedbackScore": 51
}

listingType matters here: best_offer_accepted sales settled below the original ask, so if you're building a median sold price, weight or flag best-offer sales separately from fixed-price sales rather than treating every closed listing as equally representative of "the price."

Supplier Cost: What It Actually Costs to Source

The 1688 Products Wholesale Scraper returns tiered pricing directly from the listing — the price per unit drops as order quantity increases, which is the real cost curve behind a lot of dropshipped and private-label inventory:

{
  "title": "跨境苹果17pm手机壳磁吸16pro肤感防摔iphone15promax磨砂保护套",
  "price": { "min": 7.58, "max": 9.0, "currency": "CNY" },
  "quantityPrices": [{ "quantityRange": "2~99个", "price": 9.0 }],
  "minOrderQuantity": 2,
  "supplier": { "companyName": "佛山市南海区三丰手机配件有限公司", "isSuperFactory": true }
}

Note the source language — 1688 is a Chinese-language marketplace, so keywords, province, and city input filters take Chinese-language values (e.g. 广东 for Guangdong), not English. If your product research starts in English, translate the search term before querying rather than expecting an English keyword to match.

isSuperFactory is worth filtering on directly: it flags suppliers 1688 has verified as an actual manufacturer rather than a reseller, which matters if margin depends on sourcing at true factory pricing rather than a middleman markup.

Your Own Price: The Third Point of the Triangle

The Shopify Products Scraper reads your own (or any) storefront's public product catalog directly — useful for tracking your own pricing history over time, or watching a specific competitor's Shopify store the same way:

{
  "store": "deathwishcoffee.com", "title": "Maple Cinnamon Tee",
  "vendor": "Planet Apparel", "priceMin": 15.0, "compareAtPrice": 30.0,
  "onSale": true, "productType": "Apparel", "tags": ["Apparel", "Sale", "Unisex"]
}

If your competitive set sells through Turkey's Trendyol instead of Shopify, Trendyol Product Scraper covers the same ground for that marketplace, including its own review/rating signal per listing.

Combining the Three Into a Margin View

function marginCheck(productKeyword) {
  const sold = getEbaySold(productKeyword);       // what it actually sells for
  const supplier = get1688Cost(productKeyword);    // what it costs at your order volume
  const listed = getMyShopifyPrice(productKeyword); // what you're charging now

  const medianSold = median(sold.filter(s => s.listingType !== "best_offer_accepted").map(s => +s.soldPrice));
  const unitCost = supplier.quantityPrices.find(t => matchesYourVolume(t.quantityRange))?.price;
  const cnyToUsd = 0.14; // refresh periodically

  return {
    marketClearingPrice: medianSold,
    yourCostUsd: unitCost * cnyToUsd,
    yourCurrentPrice: listed.priceMin,
    impliedMargin: listed.priceMin - unitCost * cnyToUsd,
    headroom: medianSold - listed.priceMin, // room to raise price before exceeding market rate
  };
}

headroom is the number worth watching weekly — it's the gap between what the market is actually paying (from sold data, not asking price) and what you currently charge. A shrinking or negative headroom is the earliest real signal that your price has drifted out of market, well before a competitor's listed-price change would show it.

FAQ

How often should this run? Weekly is usually enough for sold-price and supplier-cost tracking — both move slower than daily. Run it daily only around high-volatility periods (a new product launch, a supplier price change you've been notified of, or a seasonal demand spike).

Does this work for categories without much eBay sold volume? Less reliably — thin sold-listing volume makes the median noisy. For low-volume or highly differentiated products, weight the 1688 cost-floor and your own historical pricing more heavily than a sparse sold-price sample.

For a lead-generation pipeline built on the same Shopify data source, see Finding and Qualifying Shopify Stores Before You Cold-Email Them, or browse the full e-commerce actor list on ParseBird.