Temu Scraper - Products, Prices and Variants
Pricing
from $2.20 / 1,000 results
Temu Scraper - Products, Prices and Variants
Collect Temu product IDs, prices, images and sales signals from regional storefronts, including the US, UK, Germany and the Philippines. Search by keyword, category or product link. Pay per delivered row plus a start fee.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
0
Bookmarked
39
Total users
16
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Temu Scraper
Extract Temu product IDs, prices, images and available sales signals from regional storefronts into rows you can export.
- Collect product pages, keyword results, categories, channels and home recommendations.
- Choose markets such as the United States, United Kingdom, Germany, France, Australia and the Philippines.
- Add product details or separately billed SKU variant rows when available.
- Export rows or read them through the Apify API and MCP server.
- Pay $3.00 per 1,000 delivered rows on the Free plan, plus a start fee.
What does Temu Scraper do?
Temu Scraper collects public product information from temu.com for price comparisons, assortment research and product monitoring. Each row represents one product, variant or catalog entry. Field availability depends on the page and mode; a discovered product link may have no price or title.
- Products:
seoPdpaccepts product URLs or IDs;productDetailis another explicit product-page mode. - Listings:
keywordSearch,categorySearch,channelSearchandhomeDiscovercollect products from their respective pages. - Discovery:
serpDiscoverfinds product links;seoSearchcollects search listings when available. - Catalog:
regionsreturns region, channel and category entries, not product offers. - Optional details:
enrichDetailsadds available product-page fields to listing rows. It is off by default. - Optional variants:
expandVariantsis off by default. Each additional SKU row is billed at the same row price and shares the input's row limit.
What data can you extract from Temu?
Product rows
These fields cover product pages and listings. rowType is product; type can distinguish a product page from a discovered listing. Examples illustrate the format, not current offers.
| Field | Description | Example |
|---|---|---|
goodsId | Temu product identifier | 601102486859949 |
title | Product name, when available | USB charging cable |
url | Product link | https://www.temu.com/goods.html?goods_id=601102486859949 |
salePrice | Sale price; number or string | 3.99 |
retailPrice | Original price, when shown | 9.99 |
price | Price on search listings or variants | 3.99 |
currency | Currency reported with the price | USD |
image | Main image URL | https://example.com/product.jpg |
images | Available gallery image URLs | [] |
rating | Product-page rating | 4.8 |
ratingValue | Listing rating text | 4.8 |
soldLabel | Displayed sales label, not an exact total | 10k+ sold |
soldQuantity | Numeric sales signal, when supplied | 120 |
availability | Reported availability | InStock |
mall | Available seller name, ID and rating | {} |
degradedFrom | Requested mode when fallback rows were returned | keywordSearch |
scrapedAt | Collection timestamp in UTC | 2026-10-24T00:00:00+00:00 |
Variant rows
With expandVariants: true, rowType and type are variant. Rows also carry the parent product link, currency and available image.
| Field | Description | Example |
|---|---|---|
skuId | Variant identifier | 123456789 |
productId | Parent product's goodsId | 601102486859949 |
productTitle | Parent product name | USB charging cable |
attributes | Available variant specifications | {"Color": "Black"} |
stock | Stock count, when supplied | 5 |
Region rows
rowType is region.
| Field | Description | Example |
|---|---|---|
code | Region selection code | us |
name | Region name | United States |
locale | Catalog locale | en_US |
Channel rows
rowType is channel.
| Field | Description | Example |
|---|---|---|
slug | Channel selection value | best-sellers |
path | Channel page path | /channel/best-sellers.html |
Category rows
rowType is category.
| Field | Description | Example |
|---|---|---|
optId | Category identifier | 2643 |
categorySlug | Category URL name | cables-adapters |
level | Category depth | 2 |
How to scrape Temu
- Open Temu Scraper in Apify Console.
- Fill one target, such as
productUrlorquery. Clear the sample product URL when entering a different target. - Set
maxResultsto a small number, such as3. - Click Start and wait for the run to finish.
- Download the dataset or read it through the API.
Empty input {} selects the sample product URL, seoPdp, region us and a maximum of 1 row. This is a charged example run, not a free preview. With mode: auto, a filled target selects the matching mode. Avoid mixing targets: product URLs take priority over category URLs, then product IDs, category identifiers and keywords. INPUT_REPORT records ignored fields.
Product pages: seoPdp
Enter productUrl, goodsId or a goodsIds array. Auto mode selects this mode for product targets.
Product details: productDetail
Select this mode explicitly and provide one product URL or goods ID.
Keyword listings: keywordSearch
Enter query or keywords. Use English search terms; automatic translation is not configured.
Categories: categorySearch
Provide a Temu categoryUrl, or use optId with categorySlug. Category identifiers select this mode automatically.
Channels: channelSearch
Select the mode explicitly and choose channel. Omitting it selects best-sellers.
Home recommendations: homeDiscover
Select the mode explicitly and choose a region. Recommendations are a snapshot, not the complete catalog.
Catalog entries: regions
Select this mode for region, channel and category metadata. Regions appear first, so a small row limit can exclude channels and categories.
Product discovery: serpDiscover
Select this mode with keywords or seed product IDs. Results can contain only an ID, URL and rank; optional enrichment may add details.
Alternative search: seoSearch
Select this mode with a query. It can return no rows when search listings are unavailable.
No-target limit: channelSearch, homeDiscover and regions can run without a target, but the current input handling then applies the example cap of 1 row, even if you request more. Setting only channel or region does not remove that cap.
What to fill in
| Field | What to enter | Default |
|---|---|---|
mode | Auto selection or one mode described above | auto |
productUrl | Temu link containing goods_id= or -g-<ID>.html | Sample in form |
goodsId / goodsIds | One numeric product ID or an array | Empty |
query / keywords | One search phrase or an array | Empty |
keyword | Alternative name for query | Empty |
categoryUrl | Full Temu category link | Empty |
optId / catId | Category ID; catId is an alternative name | Empty |
categorySlug / bucket | Category name in its URL, or catalog group | Empty |
region | Region code, such as us, uk, de, fr, au, ph | us |
browseCountry | Country alternative; GB selects uk | Empty |
maxResults | Row limit per input, from 1 to 500 | 70; example 1 |
channel | best-sellers, full-star, new-in, lightning-deals, clearance | best-sellers in channel mode |
sort | default, sales, new, price_asc, price_desc, rating | Unset |
minPrice / maxPrice | Requested price bounds | Unset |
refine | Known Temu filter string | Empty |
currency | Currency hint, such as USD; not a conversion | Unset |
enrichDetails / enrichLimit | Add details to up to this many listings | false / 3 |
expandVariants | Return available SKU variants as extra rows | false |
page / maxPages | Starting page and page limit | 1 / 1 |
cursor | Unchanged nextCursor from RUN_SUMMARY, when present | Empty |
pageRetry | Retry limit for unavailable or empty pages | 2 |
seoFallback | Allow alternative product snapshots if the requested page fails | true |
offlineCorpus | Include archived product links in serpDiscover | false |
Examples for each mode:
Product pages
{"mode": "seoPdp", "goodsIds": ["601102486859949"], "maxResults": 3}
Product details
{"mode": "productDetail", "goodsId": "601102486859949", "maxResults": 3}
Keyword listings
{"mode": "keywordSearch", "query": "usb cable", "region": "us", "maxResults": 3}
Categories
{"mode": "categorySearch", "categorySlug": "cables-adapters", "optId": "2643", "maxResults": 3}
Channels
{"mode": "channelSearch", "channel": "best-sellers", "region": "us", "maxResults": 1}
Home recommendations
{"mode": "homeDiscover", "region": "us", "maxResults": 1}
Catalog entries
{"mode": "regions", "maxResults": 1}
Product discovery
{"mode": "serpDiscover", "query": "usb cable", "maxResults": 3}
Alternative search
{"mode": "seoSearch", "query": "usb cable", "maxResults": 3}
maxItems and limit are accepted as maxResults. Close field-name misspellings can be corrected; other unknown fields are ignored with a warning. Invalid channel values are dropped, leaving the default channel. Check INPUT_REPORT in the run's key-value store for filled, corrected and ignored fields.
Unusable targets stop the run before row delivery with an INVALID_INPUT: message naming the field and expected format. No result rows are charged in that case, but the start fee still applies.
Output example
Illustrative product row; actual prices and fields depend on the source:
{"type": "product","rowType": "product","goodsId": "601102486859949","title": "USB charging cable","url": "https://www.temu.com/goods.html?goods_id=601102486859949","salePrice": 3.99,"currency": "USD","region": "us","scrapedAt": "2026-10-24T00:00:00+00:00"}
Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. RUN_SUMMARY records the delivered count, warnings and any nextCursor; ERROR_SUMMARY contains saved failure information when available.
Why use this Temu scraper?
- Row-based pricing: result charges apply to delivered rows, not pages tried.
- Partial delivery: returned partial rows can be saved when collection reaches its deadline. Rows already in the dataset remain available; a manual stop cannot guarantee delivery of rows not yet received.
- Several inputs: submit keyword or product-ID arrays rather than starting a run for each input.
- Visible gaps: unavailable fields can be empty or omitted instead of presented as confirmed values.
- No proxy setup: you do not need to set up proxies.
How much does it cost to scrape Temu?
The Actor uses pay-per-event pricing: $0.005 per start event, plus the price of each delivered row. Platform usage is included in these prices.
| Apify plan | Price per row | Price per 1,000 rows |
|---|---|---|
| Free | $0.003 | $3.00 |
| Starter | $0.003 | $3.00 |
| Scale | $0.0026 | $2.60 |
| Business | $0.0022 | $2.20 |
Platinum and Diamond have the same row price as Business. Start billing is one event per GB of allocated memory, with a minimum of one event. At the default 128 MB, a start costs $0.005.
maxResults defaults to 70 per input; larger values are collected in parts of 70. Product and variant rows share that allowance. The no-target example cap described above takes precedence. Free-plan runs are limited to 200 rows per run and 10 runs of this Actor. Availability and page limits can reduce the number delivered.
The whole run is limited by Maximum cost per run (maxTotalChargeUsd in the API). Choose this alongside your row limit.
Example: three keywords delivering 50 rows each produce 150 rows. On the Free plan, with one start at 128 MB, the event cost is 150 × $0.003 + $0.005 = $0.455. Undelivered rows are not billed.
What happens when the run timeout is too short
If collection is expected to outlast the remaining run time, the Actor can pause automatically. It shows ABORTED with a message such as "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." This pause is not itself a collection failure.
When results are ready, the same run resumes and writes to the same dataset. It skips rows already delivered; successful delivery finishes as SUCCEEDED. When continuing after previously delivered rows, the status can say "Resumed: delivering N rows." A collection error can still fail the run.
Keep the default timeout of 3600 seconds to reduce interruptions. The synchronous API endpoints run-sync and run-sync-get-dataset-items wait at most 300 seconds and can return no rows while the run is paused. For longer requests, start asynchronously and read the dataset after SUCCEEDED, or use a succeeded-event webhook.
Use with AI agents and the API
Apify MCP server (Claude, ChatGPT, Cursor, VS Code)
Add this Actor to a client that supports remote MCP servers:
https://mcp.apify.com?tools=lentic_clockss/temu-scraper
Sign in with Apify using OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool returns run and dataset IDs; use get-dataset-items to read rows. Clients without remote support can run npx @apify/actors-mcp-server --tools lentic_clockss/temu-scraper with APIFY_TOKEN set.
Example prompt: "Find up to three Temu products for usb cable in the US. Return their product IDs, links and any available prices."
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/temu-scraper").call(run_input={"query": "usb cable", "region": "us", "maxResults": 3})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/temu-scraper').call({query: 'usb cable', region: 'us', maxResults: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
For asynchronous HTTP calls, send input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~temu-scraper/runs with the same authorization header. Track that run's status, then read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Integrations
Use Apify Schedules for recurring runs. Connect results to Google Sheets, Make, Zapier, n8n, Slack, Airtable or your webhook through the Integrations tab.
FAQ
Is it legal to scrape Temu?
Use public data responsibly. You are responsible for checking Temu's terms and applicable data-protection law; processing personal data needs a lawful basis. This independent tool is not affiliated with Temu.
Why did my run end as ABORTED?
Check the status message. An automatic queue pause can resume without action, as described above. A manual abort or unrelated failure is not a promise of automatic recovery.
How many results can I get?
maxResults allows up to 500 per input, subject to available rows, page limits and the run's spending limit. Free-plan runs stop at 200 rows. No-target example runs currently use a one-row cap.
Why are some fields empty?
Pages expose different information. Discovery may return a link without a title or price; sold-out products may lack prices. Missing information is not proof that the value is zero.
Can I collect every variant?
Set expandVariants: true. Only variants present in the collected product details can be returned, and the shared row limit may stop before all variants are delivered.
Does selecting a region guarantee local prices?
No. Regional availability varies, and alternative snapshots may not represent a current local offer. Check the returned currency and source information before comparing prices.
Why do rows contain degradedFrom?
The requested page failed and seoFallback returned alternative snapshots. They are not guaranteed current catalog data. Set seoFallback: false if you do not want that fallback.
Can it collect reviews or place orders?
There is no public review-collection input. Review counts may appear, but full review text, checkout, payment and private account data are outside this Actor's documented scope.
Limitations
- A listed market or mode does not guarantee successful collection on every run.
- Sort and price filters are requests to the source, not guaranteed post-filtering.
seoSearchis availability-dependent; discovery and archived links may be stale.- Catalog metadata is a reference list, not proof that every category is currently accessible.
- No-target modes use the example row cap. Do not treat
regionswith a small limit as a complete catalog export. - The Actor reports blocked or unavailable pages; a configured mode does not guarantee access.
Related scrapers
More e-commerce and marketplace scrapers from the same publisher:
- Walmart Product Scraper
- Allegro Scraper
- TikTok Shop Product Scraper
- Amazon Search, Category & Best Sellers Scraper
- Coupang Product Scraper
- MercadoLibre Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Found a problem or need another field? Open an issue in the Issues tab of this Actor's page and include the run ID and the input you used.