Temu Scraper — Products, Prices, Reviews & Variants
Pricing
Pay per usage
Temu Scraper — Products, Prices, Reviews & Variants
Scrape Temu products at scale. Extract titles, prices, discounts, sold counts, ratings, reviews, images, variants, and store info. Search by keyword, browse categories, or scrape product pages. Built for dropshipping and competitive intelligence. Pay-per-result.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Ricardo Akiyoshi
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
7 hours ago
Last modified
Categories
Share
Temu Product Scraper
Scrape Temu.com product data at scale. Extract titles, prices, discounts, sold counts, ratings, reviews, images, variants, store info, and shipping details. Search by keyword, browse categories, or scrape specific product pages.
Why This Scraper?
Temu is one of the fastest-growing e-commerce platforms with ultra-low prices directly from manufacturers. This scraper extracts structured product data using multiple strategies — embedded JSON extraction, server-side rendered data parsing, and HTML DOM analysis — to handle Temu's dynamic content reliably.
Use Cases
- Dropshipping Research — Find winning products with high sold counts and low prices. Compare Temu prices with AliExpress, Amazon, and Shopify to calculate profit margins. Identify trending products before they saturate other marketplaces.
- Competitive Intelligence — Monitor competitor product listings, pricing strategies, and discount patterns. Track which products Temu is promoting heavily to anticipate market trends.
- Price Monitoring — Schedule regular scrapes to track price changes, flash sales, and discount events. Build historical price datasets for market analysis and dynamic pricing models.
- Market Research — Analyze product categories, pricing distributions, rating patterns, and review volumes to understand consumer demand. Identify underserved niches and high-demand product categories.
- Supplier Discovery — Find manufacturers and sellers offering products at wholesale prices. Extract store information to build supplier databases for sourcing operations.
- Product Analytics — Aggregate data across thousands of products to identify best sellers, optimal price points, trending categories, and seasonal patterns.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
searchTerms | array | [] | Keywords to search on Temu (e.g. ["wireless earbuds", "phone case"]) |
productUrls | array | [] | Direct Temu product page URLs to scrape |
category | string | "" | Category slug or URL to browse (e.g. "electronics", "women-clothing") |
maxPrice | integer | 0 | Filter products by max price in USD. Set to 0 for no filter. |
maxResults | integer | 500 | Maximum total products to scrape. Set to 0 for unlimited. |
proxy | object | — | Proxy configuration. Residential proxies strongly recommended. |
Supported Categories
electronics, women-clothing, men-clothing, home-garden, beauty, shoes, bags, jewelry, toys, sports, automotive, baby, pets, office, phone-accessories, computer, watches, home-improvement, kitchen, garden
Output
Each product in the dataset includes:
| Field | Description |
|---|---|
title | Product name |
price | Current sale price (USD) |
originalPrice | Original/list price before discount |
discount | Discount percentage (e.g. "85%") |
sold | Units sold indicator (e.g. "10K+", "500+") |
rating | Average star rating (1.0-5.0) |
reviews | Number of customer reviews |
category | Product category or breadcrumb path |
images | Array of product image URLs |
variants | Array of variant objects (size, color, price, image) |
store | Seller/store name |
shippingInfo | Shipping cost and delivery time |
url | Direct link to product page |
productId | Temu product ID |
brand | Brand name (if available) |
currency | Price currency code |
searchTerm | The search term that found this product |
scrapedAt | ISO timestamp of when the product was scraped |
Example Output
{"title": "Wireless Bluetooth Earbuds with LED Display Charging Case","price": 3.99,"originalPrice": 28.99,"discount": "86%","sold": "50K+","rating": 4.7,"reviews": 12847,"category": "Electronics > Audio > Earbuds","images": ["https://img.kwcdn.com/product/fancy/example1.jpg","https://img.kwcdn.com/product/fancy/example2.jpg"],"variants": [{"skuId": "123456","title": "Black","price": 3.99,"originalPrice": 28.99,"image": "https://img.kwcdn.com/product/fancy/black.jpg","available": true,"attributes": {"Color": "Black"}},{"skuId": "123457","title": "White","price": 4.29,"originalPrice": 28.99,"image": "https://img.kwcdn.com/product/fancy/white.jpg","available": true,"attributes": {"Color": "White"}}],"store": "TechGadgets Official Store","shippingInfo": "Free shipping | Delivery: 7-15 days","url": "https://www.temu.com/wireless-bluetooth-earbuds-g-123456789.html","productId": "123456789","brand": null,"currency": "USD","searchTerm": "wireless earbuds","scrapedAt": "2026-03-01T12:00:00.000Z"}
How It Works
The scraper uses four extraction strategies in priority order:
- Embedded JSON (primary) — Parses
__NEXT_DATA__,window.__rawData__, and__INITIAL_DATA__script tags that contain server-side rendered product data. This is the most reliable method and extracts the richest data. - JSON-LD structured data — Extracts
schema.org/Productmarkup embedded for SEO. Provides standardized product information as a secondary source. - Search result parsing — Navigates Temu search results pages and extracts product cards from the grid layout. Handles pagination to scrape across multiple pages.
- HTML DOM fallback — Uses Cheerio CSS selectors to extract product data directly from HTML elements. Targets multiple selector patterns for resilience against layout changes.
For product detail pages, all four strategies are attempted to extract the maximum amount of data including full image galleries, all variants, store information, and shipping details.
Tips
- Use residential proxies: Temu has aggressive anti-bot protection. Set
proxyto{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }for reliable results. - Start small: Test with
maxResults: 50first to verify the scraper works with your proxy setup before running large scrapes. - Price filtering: Set
maxPriceto find budget products for dropshipping — e.g.,maxPrice: 5for sub-$5 products. - Multiple search terms: Add several search terms to cover different product niches in a single run.
- Scheduled runs: Set up a daily or weekly schedule to track price changes and new product launches.
- Direct URLs: Use
productUrlsto scrape specific products you're tracking for price monitoring. - Category browsing: Use
categorywithout search terms to discover products within a category.
Proxy Recommendations
| Proxy Type | Reliability | Speed | Cost |
|---|---|---|---|
| Residential (recommended) | High | Medium | $$ |
| Datacenter | Low | Fast | $ |
| No proxy | Very Low | Fast | Free |
Temu blocks most datacenter IP addresses. For production scraping, residential proxies are effectively required.
Limitations
- Only works with Temu.com (not Pinduoduo or other PDD Holdings platforms)
- Temu may serve different content based on geographic location — US-based proxies recommended
- Some product variants may require JavaScript rendering for full data (the scraper handles SSR data)
- Rate limiting: the scraper self-throttles to avoid IP bans (20 requests/minute default)
- Flash sale and limited-time prices may change between scrape and purchase
Cost
This actor uses pay-per-event pricing at $0.004 per product scraped. Example costs:
| Products | Cost |
|---|---|
| 100 | $0.40 |
| 500 | $2.00 |
| 1,000 | $4.00 |
| 5,000 | $20.00 |
| 10,000 | $40.00 |
Platform compute costs are additional and depend on proxy usage and run duration. Typical runs scraping 500 products complete in 2-5 minutes.
Integration — Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("sovereigntaylor/temu-scraper").call(run_input={"searchTerm": "temu","maxResults": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item.get('title', item.get('name', 'N/A'))}")
Integration — JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('sovereigntaylor/temu-scraper').call({searchTerm: 'temu',maxResults: 50});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => console.log(item.title || item.name || 'N/A'));