Temu Scraper (Products, Categories & Home Feed)
Pricing
from $0.004 / product listing item
Temu Scraper (Products, Categories & Home Feed)
Scrape Temu products, prices, ratings, review counts, images, video, SKU options, specifications and category taxonomy. Product, category and home-feed URLs. No login or browser required.
Pricing
from $0.004 / product listing item
Rating
0.0
(0)
Developer
Hypebridge
Maintained by CommunityActor stats
0
Bookmarked
531
Total users
111
Monthly active users
15 hours ago
Last modified
Categories
Share
Temu Scraper — Products, Categories & Home Feed
Extract public product data from Temu into a clean, structured Apify dataset: prices, ratings, review counts, images, video, SKU options, specifications and category taxonomy.
No login and no browser required, so runs are fast and inexpensive.
What it scrapes
| Surface | Example start URL | What you get |
|---|---|---|
| Product detail | https://www.temu.com/-g-601099513224343.html | Full record: price, rating, review count, gallery, video, SKU options, specifications, return policy, breadcrumbs |
| Category listing | https://www.temu.com/category-o3-248.html | Up to 120 products per category with price, rating, review count, image, sales signal |
| Home feed | https://www.temu.com/ | Temu's recommendation feed, paginates deep (800+ items) |
You can also point at a product or category by ID alone — https://www.temu.com/-g-<goodsId>.html or https://www.temu.com/-o3-<optId>.html. No need to find the full product URL first.
Country-and-language prefixes such as /se-en/, /ca-fr/ and /de-en/ use the configured country's market while preserving the language prefix in product requests. English aliases /au-en/ and /uk-en/ use Temu's equivalent /au/ and /uk/ paths. Unknown countries are skipped with a warning.
What it does not scrape
Being direct about this so you don't buy the wrong tool:
- Keyword search is not supported. Search results cannot be retrieved reliably enough to sell, so search URLs are rejected up front rather than quietly returning products that don't match your query. Browse by category instead — that's the supported way to discover products.
- Collections and flash-deal channels are unavailable. Best Sellers, Lightning Deals, Local Warehouse and other channel URLs require a current signed product operation that has not been verified. Known US
/us/channel aliases are canonicalized for diagnostics, then rejected before a target request is sent. Products from a homepage redirect are never substituted. - Store / merchant pages (
mall.html) are not supported. - Review text is not available. Temu does not expose review bodies or author names to this Actor, so each review comes back with its rating and date only, flagged
reviewTextRedacted: true. Ratings, review counts and dates are accurate. If you need the written reviews themselves, this Actor cannot supply them.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | https://www.temu.com/ | Product, category or homepage URLs. Search URLs are rejected. |
maxItems | integer | 40 | Maximum records to push (1–5000). |
getProductDetails | boolean | true | Fetch each listing item's product page for specifications, SKUs and gallery. Costs one extra request per item. |
extractReviews | boolean | false | Include the per-product review array (ratings and dates only — see above). |
{"startUrls": [{ "url": "https://www.temu.com/category-o3-248.html" },{ "url": "https://www.temu.com/-g-601099513224343.html" }],"maxItems": 100,"getProductDetails": false}
Output
One row per product. Fields appear only when Temu publishes them for that page type, so listing rows stay compact while enriched rows carry more.
| Field | Type | Example |
|---|---|---|
goodsId | string | "603014127574739" |
title | string | "Wireless Earbuds, Bluetooth 5.4..." |
price / priceText | number / string | 66.71 / "$66.71" |
marketPrice / marketPriceText | number / string | 79.99 / "$79.99" |
discountPercentage / savingsAmount | number | 17 / 13.28 |
currency | string | "USD" |
rating | number | 4.9 |
reviewCount | integer | 401 |
salesTip / salesVolume | string / number | "4.1K+ sold" / 4100 |
imageUrl / galleryImages | string / array | Temu CDN URLs |
hasVideo / videoUrl | boolean / string | product video when present |
productUrl | string | canonical https://www.temu.com/-g-<goodsId>.html |
categoryId / categoryName / categoryPath / breadcrumbs | string / array | category taxonomy |
specifications / skus / returnPolicy | object / array | detail rows only |
reviews | array | ratings + dates (reviewTextRedacted) |
sourcePageType / sourceUrl / extractedAt | string | provenance |
productUrl is always the canonical form, so you can feed output rows straight back in as start URLs.
Proxy
Residential proxy is required and is configured automatically — you don't need to set anything up. Each type of page is routed appropriately on your behalf. Supplying your own proxyConfiguration overrides this and will usually lower success rates, so leave it unset unless you have a specific reason.
Known limitations
- A category can occasionally return no results. Temu does not always serve a given category on demand. The Actor retries automatically before giving up, but a run can still finish with zero rows for that category. An unavailable payload is recorded as a source failure; later recovery is not guaranteed.
- Some words appear as
*in titles and descriptions (for example"with * Display Charging Case"). Temu masks certain brand and claim terms in its own product text; this is how the data is published, not a parsing error. - Category listings return up to ~120 products each. To cover more, use several category URLs rather than expecting deeper paging within one.
- Every row carries its own
currency, so check that field rather than assuming one currency across a dataset.
Notes
The Actor stores a SOURCE_SUMMARY record with outcome counts and up to 20 bounded source samples, including requested/canonical URLs and a final URL when known. Delisted products are a genuine empty result. If every source is invalid, unavailable or blocked, the run fails with a diagnostic error. A mixed run preserves successful products and reports rejected sources in the summary. Unsupported market inputs are skipped with a warning and zero rows. A zero-row dataset alone does not establish that a catalog is empty.