CoolFace
Datasetpublic

Octoparse/temu-ecommerce-pricing-workflow-sample

Temu E-commerce Pricing & SKU Variant Dataset 85 products · 382 SKUs · $2.14–$219.72 price range · avg 29.5% discount where measurable A real, production-quality sample of Temu product listings and SKU-level pricing data, captured by Octoparse Managed Data Service via a managed anti-bot pipeline. Every row is real market data — no synthetic expansion, no mock prices. Built for teams working on competitor price monitoring, dynamic pricing models, product matching, and e-commerce… See the full description on the dataset page: https://huggingface.co/datasets/Octoparse/temu-ecommerce-pricing-workflow-sample.

sourceHugging Facecc-by-nc-4.0updated 4mo agoView on Hugging Face
0likes45downloads
Dataset Card

Temu E-commerce Pricing & SKU Variant Dataset

85 products · 382 SKUs · $2.14–$219.72 price range · avg 29.5% discount where measurable

A real, production-quality sample of Temu product listings and SKU-level pricing data, captured by [Octoparse Managed Data Service](https://www.octoparse.com/data-service/competitor-price-monitoring) via a managed anti-bot pipeline. Every row is real market data — no synthetic expansion, no mock prices.

Built for teams working on competitor price monitoring, dynamic pricing models, product matching, and e-commerce AI pipelines.

Enterprise Data Pipelines & Production-Grade Delivery

This dataset is a curated, static sample provided by [Octoparse Managed Data Service](https://www.octoparse.com/data-service). If your organization requires: - Real-time automated updates: Daily/Hourly feeds via API, Snowflake, AWS S3, or BigQuery - Custom schema alignment and production-grade anti-bot operations with 99.9% SLA-backed delivery - Compliance-aware data delivery workflows for public or properly authorized data, with support for GDPR/CCPA-aligned requirements [Request a Custom Data Pipeline Workshop on Octoparse Data Service](https://www.octoparse.com/data-service)
v2.0.0 — Complete rebuild. Previous version contained synthetic data; this release contains 100% real scraped data normalized into a clean two-table schema.

Why This Dataset

Most public e-commerce datasets are:

  • Stale — from Kaggle uploads years old, prices meaningless
  • Synthetic — generated to look like pricing data, not real market signals
  • Flat and noisy — video metadata and SKU variants collapsed into one bloated table

This dataset is different:

  • 100% real market data from Temu's live catalogue
  • Normalized schema: products.parquet (SPU-level) + skus.parquet (variant-level), joined on spu_id
  • Anti-bot provenance: captured through Akamai Bot Manager bypass and TLS fingerprint randomization — the hard infrastructure problem solved for you
  • Pricing signal transparency: discount_pct computed where Temu surfaces both prices; sparsity documented, not hidden

Dataset Structure

temu-ecommerce-pricing-workflow-sample/
├── products.parquet        ← 85 rows, 5 columns (SPU-level)
├── skus.parquet            ← 382 rows, 14 columns (SKU-level)
├── schema.json             ← Machine-readable field definitions
├── data_dictionary.md      ← Business context for every field
├── workflow_stats.json     ← Pipeline provenance and anti-bot metadata
└── LICENSE                 ← CC BY-NC 4.0

products.parquet — SPU Level

FieldTypeDescription
spu_idstringProduct ID (join key)
product_urlstringTemu product URL
is_on_salebooleanCurrently purchasable
not_on_sale_reasonstringReason if inactive (null for all active)
goods_property_summarystringSemicolon-delimited property bag

skus.parquet — SKU Level

FieldTypeDescription
sku_idstringVariant ID
spu_idstringFK → products.spu_id
sku_main_picstringCDN image URL
sku_original_pricefloat64List price USD (null if Temu not showing strikethrough)
sku_discounted_pricefloat64Current selling price USD
discount_pctfloat64(original - discounted) / original
sale_attr_colorstringColor variant
sale_attr_sizestringSize variant
sale_attr_quantitystringBundle/quantity variant
sale_property_summarystringPipe-delimited summary of all variant attrs

Quick Start

python
import pandas as pd

products = pd.read_parquet("hf://datasets/Octoparse/temu-ecommerce-pricing-workflow-sample/products.parquet")
skus     = pd.read_parquet("hf://datasets/Octoparse/temu-ecommerce-pricing-workflow-sample/skus.parquet")

# Join: full product + SKU view
df = skus.merge(products[["spu_id", "product_url", "goods_property_summary"]], on="spu_id")

# Products with highest discount (where data available)
top_discounts = (
    skus[skus["discount_pct"].notna()]
    .groupby("spu_id")["discount_pct"]
    .max()
    .sort_values(ascending=False)
    .head(10)
)

# Price spread per product (variant pricing range)
price_spread = (
    skus.groupby("spu_id")["sku_discounted_price"]
    .agg(["min", "max"])
    .assign(spread=lambda x: x["max"] - x["min"])
    .sort_values("spread", ascending=False)
)

# SKUs with strikethrough pricing (visible discount signal)
has_strikethrough = skus[skus["sku_original_price"].notna()].copy()
print(f"{len(has_strikethrough)} SKUs with measurable discount — avg {has_strikethrough['discount_pct'].mean():.1%}")

Dataset Stats

MetricValue
Products (SPUs)85
SKUs (variants)382
Avg SKUs per product4.5
SKUs with strikethrough price120 (31.4%)
Avg discount (where measurable)29.5%
Max discount81.9%
Price range$2.14 – $219.72
All products on saleYes (100%)

The Hard Problem: Why Temu Data is Difficult to Scrape

Temu runs one of the most aggressive anti-bot stacks in consumer e-commerce:

  • Akamai Bot Manager with TLS/JA3 fingerprinting — blocks standard HTTP clients instantly
  • Device fingerprinting — canvas, WebGL, and font enumeration checks
  • Dynamic price rendering — prices are injected via JavaScript after page load; HTML-only scrapers return empty price fields
  • Signed CDN URLs — image URLs rotate signatures; naive URL caching breaks within hours
  • Algorithmic discount visibility — Temu controls when strikethrough prices appear; the same SKU may show or hide the original price depending on session context, geo, and time

This dataset was captured through Octoparse's managed pipeline that handles all of the above. The sku_original_price sparsity you see (69% null) is a real market signal, not a data quality failure — it accurately reflects which SKUs Temu was displaying comparison pricing for at scrape time.


Pricing Signal Notes

Why is `sku_original_price` 69% null?

Temu uses algorithmic price display — the strikethrough "was" price is only rendered when Temu's system determines it increases conversion for that session. This means:

  • Null sku_original_price ≠ no discount
  • Null sku_original_price = Temu chose not to show the comparison at this moment
  • For true discount rate measurement, you need repeated captures at different times and sessions

For production-cadence pricing (hourly snapshots, session rotation), see our managed pipeline service.


Use Cases

1. Competitor Price Monitoring Pipeline Design

Use sku_discounted_price + discount_pct as features in a price alert system. The sale_attr_* columns let you track price moves at variant granularity (not just product level).

2. Product Matching & Deduplication

spu_id + sku_id + sku_main_pic give you the triplet needed for visual and text-based product matching across platforms.

3. Dynamic Pricing Model Training

The discount_pct distribution (mean 29.5%, max 81.9%) and the presence/absence of sku_original_price are themselves signals for modeling Temu's promotional logic.

4. E-commerce Schema Design

Use goods_property_summary to build a product taxonomy. The ~178 unique property keys across 85 products show the schema complexity of a live multi-category catalogue.

5. Anti-Bot Research

workflow_stats.json documents the specific bot-management systems encountered during collection, useful for anti-scraping research and pipeline architecture planning.


Data Limitations

LimitationDetail
Price is a snapshotNo time-series in this sample. Temu prices change multiple times daily.
sku_original_price sparsity69% null — intentional (see Pricing Signal Notes above)
sale_attr_* sparsityEach SKU uses at most 1–2 of 7 attribute columns
Property key inconsistencygoods_property_summary has ~178 keys with typos/case variations
Sample size85 products — sufficient for schema/pipeline design, not for statistical price benchmarking

Related Resources


Want Production-Scale Temu Data?

This is a sample dataset. If you need:

  • Hourly price capture across thousands of SKUs
  • Multi-category coverage (apparel, electronics, home, beauty)
  • Session-rotated scraping to expose hidden discount pricing
  • Delivery to Snowflake, BigQuery, or S3 in Parquet or JSONL

[Talk to Octoparse Managed Data Service](https://www.octoparse.com/data-service/competitor-price-monitoring)

We operate the anti-bot infrastructure so your team doesn't have to.


Citation

bibtex
@dataset{octoparse_temu_pricing_2025,
  title        = {Temu E-commerce Pricing and SKU Variant Dataset},
  author       = {{Octoparse Managed Data Service}},
  year         = {2025},
  publisher    = {Hugging Face},
  url          = {https://huggingface.co/datasets/Octoparse/temu-ecommerce-pricing-workflow-sample},
  license      = {CC BY-NC 4.0},
  note         = {Real scraped Temu product and SKU pricing data, anti-bot pipeline provenance documented}
}

Built by [Octoparse Managed Data Service](https://www.octoparse.com/data-service) · [LinkedIn](https://www.linkedin.com/company/octoparse)