Temu Products Scraper avatar

Temu Products Scraper

Pricing

from $1.50 / 1,000 products

Go to Apify Store
Temu Products Scraper

Temu Products Scraper

Analyse Temu products from your own export or an Apify dataset: explainable Product Score, filters, price/review history and a visual report. Public temu.com pages are tried politely; when Temu requires sign-in they are reported and never charged.

Pricing

from $1.50 / 1,000 products

Rating

0.0

(0)

Developer

Badr Bouargan

Badr Bouargan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

Temu Products Scraper Pro

Temu Products Scraper: visual report of a real run, key figures and charts

Turn Temu product data into a ranked shortlist. Every product gets an explainable Product Score (0–100), a clean normalized record, price and review history across runs, and a visual report with image galleries, charts and JSON / CSV / Excel export.

Read this first: what works today

SourceStatusWhat happens
Import: your own Temu export (JSON, JSON Lines, CSV URL) or an Apify dataset✅ WorksFull engine: normalization, dedupe, filters, sorting, Product Score, history, report.
Public temu.com product pages: product URLs or ids⚠️ A few per runMeasured on Apify 2026-11-08: the first 7 of 13 product pages were read (title, price, rating, reviews, images, category path, stock), then Temu showed its human-verification page for every following request.
Public temu.com searches and category / listing pages❌ BlockedTemu always answers with its human-verification page.

Every blocked input gets 1 polite request, is reported in FAILED_INPUTS and is never charged. The Actor never solves CAPTCHAs, never logs in, never rotates proxies to dodge blocks and never bypasses protections.

If you already collect Temu data elsewhere (a Temu affiliate feed, your own export, another Actor's dataset), point this Actor at it and get the scoring, filtering and report on top.

What you get

Temu Products Scraper: result cards from a real run

Screenshots from a real platform run.

  • Normalized products: id, title, description (plain text), URL, main image + all images, videos, price, original price, discount %, amount saved (amountSaved, only from a real original price), currency (ISO), rating, review count, category, seller and seller id, availability, variants (SKU, price, stock, options), colours, sizes, specifications, shipping text, listing date, collection time.
  • Missing data stays missing: absent values are null, never guessed. Anything unusual is explained in dataNotes.
  • Product Score 0–100 with every signal, its points and its evidence listed on the row.
  • History between runs: price drops, review growth and stock changes, kept in a named key-value store. newSinceLastRun tells which products no earlier run has seen (null on the first run), and Only products new since the last run (onlyNewProducts) keeps just those, e.g. for a daily schedule.
  • Duplicate detection: the same product (same id or URL) from several inputs is saved once.
  • Visual report (REPORT.html in the key-value store): product grid with up to 3 photos per product (main photo first) and fallbacks, search, filters, sorting, pagination, side-by-side comparison, price / discount / category charts, Product Score ranking, JSON / CSV / Excel export. While the run is in progress it shows live progress (inputs read / total, products so far; refreshed at most once a minute); failed or blocked inputs are grouped by error code at the top, and a data-quality panel shows how complete the key fields are.
  • Run summary (RUN_SUMMARY.json): totals, filter counts, per-input status, request counts, timings, memory and CPU.

Quick start

  1. Export your Temu products (or take the dataset id of another run).
  2. Set Data source to import, paste the file URL in Import file URLs or the id in Apify dataset ids.
  3. Pick filters and a sort order, run, then open REPORT.html from the Storage tab.
{
"source": "import",
"importUrls": ["https://example.com/my-temu-export.jsonl"],
"minDiscountPercent": 40,
"minRating": 4.5,
"sortBy": "productScore",
"maxItems": 200
}

Accepted import formats

  • JSON array, or an object with items, data or products.
  • JSON Lines (one product per line).
  • CSV with a header row.

Common Temu field names are mapped automatically: goods_id, goods_name, link_url, price / price_str / *_cents, market_price, currency, thumb_url, gallery / images, goods_score, comment_num, mall_name, mall_id, sku_list, in_stock, and more. Unknown fields are kept under extra, so nothing is lost.

Prices: texts like $12.99 and fields named *_cents are always understood. Set Unit of numeric prices to cents if your file stores 1299 for 12.99.

Ready-made tasks

The tasks/ folder holds 7 inputs you can save as Apify Tasks:

TaskSourceWhat it does
Temu Products SearchpublicSearch one keyword (blocked by Temu today; reported, not charged)
Temu Product DetailspublicOne product page (blocked by Temu today; reported, not charged)
Temu Products by CategoryimportKeep one category, ranked by Product Score
Temu Discount Finderimport40%+ discounts, biggest first
Temu Best-Rated ProductsimportRating ≥ 4.5 with 100+ reviews
Temu Product ComparisonimportOne product type, cheapest first, top 10
Temu Multi-Keyword SearchpublicSeveral searches in one run (blocked by Temu today)

Filters and sorting

Filters: min / max price (in the product's own currency, no conversion), currency, minimum discount, minimum rating, minimum reviews, minimum variants, in stock only, only new since the last run, categories, sellers, keywords, excluded keywords, minimum Product Score.

Sorting: Product Score, price (low → high, high → low), discount, rating, reviews, newest listed, recently collected. Missing values always go last.

Filtered-out products are never saved and never charged. RUN_SUMMARY.json counts how many each filter removed.

How the Product Score works

Six independent signal groups, each with a maximum:

GroupMaxSignal
Rating quality253.0★ = 0, 5.0★ = 25; ignored below 5 reviews
Review volume20Log scale, 10,000+ reviews = 20
Discount15Only from a real original price above the price; 60%+ = 15
Price vs category15Cheaper than X% of products in the same category and currency (needs 5+ peers in the run)
Availability & variants10In stock + variant depth
History15Price drop and review growth since the previous snapshot

Safety caps: a product with points in only 1 group is capped at 49; 90+ needs at least 3 groups. Each row has scoreSignals (every signal, including zeros, with its evidence), scoreLevel, scoreConfidence and scoreGroups.

The score never uses or estimates sales volume. If your data contains a displayed sales tip, it is kept as displayedSalesTip but not scored.

Output example

Values below are from the Actor's synthetic test data, not a real Temu product.

{
"productId": "900000000000001",
"title": "Compact wireless earbud demo item 1 (synthetic)",
"url": "https://www.temu.com/demo-synthetic-item-g-900000000000001.html",
"imageUrl": "https://img.synthetic.example/demo/900000000000001-1.png",
"images": ["…-1.png", "…-2.png", "…-3.png", "…-4.png"],
"price": 3.85,
"originalPrice": 9.2,
"discountPercent": 58,
"currency": "USD",
"rating": 3.5,
"reviewsCount": 1442,
"category": "Wireless earbuds",
"seller": "Synthetic Demo Shop 2",
"available": true,
"variantsCount": 2,
"colors": ["Black", "White"],
"productScore": 58,
"scoreLevel": "Good",
"scoreConfidence": "high",
"scoreGroups": 5,
"scoreSignals": [
{ "group": "rating", "points": 6, "evidence": "Rated 3.5/5 over 1442 reviews (3.0 = 0 points, 5.0 = 25).", "kind": "verified" },
{ "group": "reviews", "points": 16, "evidence": "1,442 reviews (log scale; 10,000+ = 20).", "kind": "verified" },
{ "group": "discount", "points": 15, "evidence": "58% below the original price 9.2 USD (60%+ = 15).", "kind": "inferred" },
{ "group": "pricePosition", "points": 15, "evidence": "Cheaper than 100% of 6 products in \"Wireless earbuds\" (same currency) in this run.", "kind": "inferred" },
{ "group": "availability", "points": 6, "evidence": "In stock; 2 variant(s), 2 colour(s), 0 size(s).", "kind": "verified" },
{ "group": "history", "points": 0, "evidence": "No earlier snapshot of this product yet (history builds up across runs).", "kind": "historical" }
],
"history": null,
"source": { "type": "import", "synthetic": true },
"dataNotes": ["SYNTHETIC record (test fixture): not real Temu data", "1 image URL(s) invalid or duplicate: dropped"]
}

Storage

KeyContent
DatasetOne row per saved product
REPORT.htmlVisual report (grid, galleries, charts, comparison, export)
RUN_SUMMARY.jsonTotals, per-input status, filters, timings, memory
FAILED_INPUTS.jsonEvery input that could not be read, with a reason. Never charged
temu-products-history (named store)Snapshots for price and review history

Performance

Measured locally on import runs (512 MB):

ProductsRun time
1000.8 s
1,00011.7 s
5,00022.9 s

The report shows up to 5,000 products; the dataset always keeps every row.

Pricing

Pay per saved product, plus a tiny $0.00005 start fee per run (one event per GB of memory). The price depends on your Apify plan:

Apify planPrice per 1,000 products
Free$2.00
Starter$1.80
Scale$1.60
Business and above$1.50
Products savedCost (Free plan)
100$0.20
500$1.00
1,000$2.00
5,000$10.00

Blocked inputs, failed inputs and filtered-out products are never charged. Set a maximum cost per run in the run options if you want a hard cap.

FAQ

Why do only some temu.com URLs return data? Temu serves product pages to a handful of automated requests, then asks for human verification; searches and listing pages are always verified. This Actor respects that: it sends one request per input, reports blocks and charges nothing for them. For large volumes, use the import source.

Will you add a bypass? No. Bypassing sign-in, CAPTCHAs or anti-bot protections breaks Temu's terms and makes an Actor fragile. Official sources (for example a Temu affiliate product feed you are allowed to use) will be added as import sources.

Is my data shared? No. Imported files are read with your run's own token and stored only in your Apify storage.

What are the "synthetic" rows? Test records clearly labelled "synthetic": true. They are never stored in history and the report shows a demo banner when they are present.

Feedback and reviews

If this Actor saved you time, a short review on its Store page helps other users find it. If something did not work as expected, please open an issue on the Issues tab with your run ID: we read every issue.