Temu Product Scraper & Price Monitor avatar

Temu Product Scraper & Price Monitor

Pricing

from $1.40 / 1,000 temu product results

Go to Apify Store
Temu Product Scraper & Price Monitor

Temu Product Scraper & Price Monitor

Search public Temu products with region-bound coverage, extract exact products and SKUs, create commerce-ready rows, or monitor factual changes.

Pricing

from $1.40 / 1,000 temu product results

Rating

0.0

(0)

Developer

Luka

Luka

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

Search Temu by multiple keywords, collect exact public products and variants, create commerce-ready rows, or monitor factual changes without turning a block into an empty result.

Temu product rows with nested SKU variants and explicit coverage

What it does

Use one Actor for keyword discovery, exact product and SKU extraction, commerce-ready exports, and repeat-run price or product monitoring. Every delivered product is tied to a stable Temu goods ID and a literal keyword match; unrelated products are rejected instead of being returned as results.

What the Actor returns

The normalized product shape can contain source-published:

  • stable goodsId / productId, canonical URL, title, category, and description;
  • current price, original/list price, discount, and source-observed currency;
  • rating, reviews, and both raw and normalized sold count with soldCountIsLowerBound for values such as 5K+;
  • shop/seller, availability, shipping text, free-shipping flag, and delivery-day bounds;
  • primary image, gallery images, product video;
  • nested variants with stable SKU ID, label, price, list price, availability, stock, and media.

Every field is nullable when Temu does not publish it. The Actor does not infer demand, “hot product”, trend, risk, value, profit, or recommendations.

Each run also writes:

  • an explicit coverage row with per-target receipts and exact field coverage;
  • an optional free summary row with mechanical counts, price statistics, and source-sold-count ordering;
  • change rows in monitoring mode;
  • a sanitized run summary with coverage, state outcome, accepted charge counts, public-source classification, and resource totals.

Quick start

{
"workflow": "search_products",
"searchKeywords": ["wireless earbuds", "usb c hub"],
"region": "us",
"sortBy": "relevance",
"maxProductsPerKeyword": 20,
"includeVariants": true,
"outputFormat": "default"
}

Keywords run sequentially for the selected market. Products are deduplicated by goodsId; variants remain nested, so one product is one result row.

Three workflows

Search products

Use search_products with one to ten searchKeywords. maxProductsPerKeyword accepts 1–300. The permanent keyword-fidelity contract rejects an unrelated recommendation/funnel surface with WRONG_SURFACE_ZERO_KEYWORD_MATCH.

Sort choices are:

  • relevance: preserves Temu source order;
  • top_sales: mechanical descending normalized source sold count;
  • price_asc / price_desc: mechanical price order;
  • newest: uses a source-published listing timestamp and fails closed when that field is absent.

minPrice and maxPrice are deterministic filters. A completed source scope with removed rows is FILTERED; that status cannot advance an absence counter toward ENDED.

Scrape exact products

Use scrape_exact_products with up to 100 productUrls, 100 bare productIds, or both. First-party *.temu.com share links are allowed. Redirect-only share links must resolve back to a Temu URL with a stable goods ID; external redirects and unresolved IDs fail closed.

Exact targets read public first-party Temu product data. Detail checks are priced separately from search because they require one public product lookup per target.

Track product changes

Use track_product_changes with exact public product URLs or IDs and a stable stateNamespace.

  • First trustworthy run: creates a baseline without a NEW flood.
  • Later trustworthy run: emits factual NEW or UPDATED rows with before, after, and changedFields.
  • ENDED: requires two consecutive comparable complete absences.
  • PARTIAL, FILTERED, CAPPED, BLOCKED, or FAILED: cannot increment the absence counter and cannot prove removal.
  • includeUnchanged: true: adds current snapshots as free rows.

Run the same namespace and scope sequentially. Controlled repeat-run tests prove quiet baseline creation, factual updates, two-absence ENDED, and no duplicate paid change after recovery. A naturally occurring live product change has not yet been observed; universal change coverage is not promised.

Region presets

The input contains 20 bounded presets: us, uk, de, fr, es, it, nl, au, ca, br, mx, jp, kr, pl, se, at, be, pt, cz, and ie.

A preset selects the Temu market, language, and expected currency. Configuration alone is not field proof: currencyObserved becomes true only when the public source publishes the expected currency. Only regions that returned literal keyword matches with matching source-observed currency are listed as supported.

Canary-verified search regions are us, uk, de, fr, es, it, nl, au, ca, br, mx, jp, pl, se, at, be, pt, cz, and ie. South Korea (kr) is not yet supported.

Output formats and exports

outputFormat selects exactly one paid row per factual product:

  • default: normalized Temu product;
  • shopify: mechanical Shopify-ready product and nested variant mapping;
  • google_merchant: mechanical Google Merchant row.

retailMarkup is an optional user-supplied multiplier from 1–10. Every derived row labels the transform; the Actor does not recommend a multiplier or claim profitability.

Apify Dataset can export the chosen rows as JSON, CSV, Excel, XML, or RSS. Dataset views cover products, commerce mappings, changes, summaries, and coverage; recordType always remains visible because the Dataset contains mixed row types.

Coverage contract

StatusMeaning
COMPLETEEvery requested target completed within the declared comparable scope.
FILTEREDThe source scope completed and buyer price filters removed rows.
CAPPEDA row, page, request, byte, runtime, or spend guard stopped traversal while more may exist.
PARTIALUseful rows exist, but one or more targets or required layers did not complete.
BLOCKEDTemu returned a verified block/challenge. This is never empty.
FAILEDA transport, source-shape, identity, region, or parser failure prevented trustworthy coverage.
EMPTY_CONFIRMEDThe expected source result shape explicitly confirmed no matching rows.

Supplemental public fields may enrich only goods IDs already present in the keyword-faithful result set. They can never introduce a new product ID.

Billing contract

The Actor uses four independently priced charge events:

  • search_target: one trustworthy search target attempt;
  • detail_target: one trustworthy exact-detail target attempt;
  • monitor_target: one trustworthy monitoring scan target;
  • product_result: one atomically delivered product, commerce mapping, or verified change.

The primary product price is the same on every plan: $1.40 per 1,000 delivered products. Target-event prices vary by plan:

Apify tierSearch targetProduct resultDetail targetMonitor target
Free$0.100$0.0014$0.008$0.009
Bronze$0.100$0.0014$0.0075$0.0085
Silver$0.100$0.0014$0.007$0.008
Gold$0.100$0.0014$0.0065$0.0075
Platinum$0.100$0.0014$0.006$0.007
Diamond$0.100$0.0014$0.006$0.007

A successful search costs one $0.10 search-target event plus $0.0014 x delivered products. For example, 20 products cost $0.128, 100 cost $0.240, and 300 cost $0.520 on every plan. A useful exact detail costs one detail-target event plus one product event. An unchanged trustworthy monitoring scan costs only the monitor event; each delivered change adds one product event.

Failed, blocked, unrelated, empty-unconfirmed, and unusable partial targets are free. Coverage, summary, warnings, nested variants, and optional unchanged snapshots are also free rows. maxBuyerChargeUsd checks the complete maximum event vector before source work.

Verified scope and limits

The implementation and canaries verify:

  • all three advertised workflows and their buyer-facing input/output contracts;
  • 20 preset configurations and independent per-keyword limits through 300;
  • strict same-goodsId enrichment without admitting unrelated products;
  • rich detail normalization and selectable default/Shopify/Google Merchant rows;
  • stable product/SKU identity, explicit coverage, quiet monitoring baselines, repeat-safe changes, and bounded maximum state.

Not yet supported: South Korea (kr) search; guaranteed presence of secondary fields that remain nullable; login/account/cart data; CAPTCHA solving or bypass; alternate third-party source services; inferred scores or recommendations; concurrent writes to the same monitoring scope.

Safety and source boundaries

The Actor uses anonymous public first-party Temu data only. CAPTCHA or login is a stop condition. A challenge, unrelated result surface, unresolved share link, currency mismatch, or malformed response cannot be billed as a useful product and cannot update monitoring state. The Actor does not place orders or use another scraping Actor as its source.

Support

For a reproducible issue, include the run ID, sanitized input, region, query or goods ID, and coverage status. Never send credentials, payment data, or 2FA codes.