temu.com logo
temu.com

fetch-all-product-details

Installation

Adds this website's skill for your agents

 

Summary

Extract all product details (title, price, discount, rating, reviews, sold count, variants, images, shipping, store, specifications) from a Temu product page. Read-only. Currently blocked by a deterministic Security Verification image-grid CAPTCHA on every page.

FIG. 01
FIG. 02
SKILL.md
124 lines

Temu Fetch All Product Details

Purpose

Given a single Temu product page URL (pattern https://www.temu.com/<slug>-g-<goodsId>.html), this skill is meant to return every product detail rendered on the page — title, current/original price, discount, currency, star rating, rating/review count, sold count, variant/SKU options, image set, shipping info, store name, and the key specifications — as a structured JSON object. Read-only: it never adds to cart, logs in, or checks out.

Current status: BLOCKED by a deterministic anti-bot CAPTCHA. Across three independent autobrowse iterations (verified+proxies, verified-only, and a homepage-warmed session) Temu served a full-screen "Security Verification" image-grid CAPTCHA on both the homepage and the product page within ~2 seconds of load, before any product content could be reliably read. No browser configuration tested got past it. This document records the optimal known approach, the exact wall, and the confirmed dead-ends so a future agent doesn't re-discover them. Treat the success-path workflow below as aspirational pending a CAPTCHA-solving capability.

When to Use

  • Extracting full product details from a known Temu product URL (price monitoring, catalog enrichment, comparison shopping).
  • Bulk product-detail harvesting across many Temu goodsIds.
  • Do not reach for this skill expecting it to work today without a CAPTCHA-solving step — see Site-Specific Gotchas. Use it as the reference for what the wall looks like and what has already been ruled out.

Workflow

Recommended method: browser (the only viable surface — but currently CAPTCHA-walled). Temu is a fully client-rendered SPA; the static HTML is an empty shell (browse cloud fetch of a product URL returns HTTP 200 but the body contains only JS bundles + i18n strings, no product data). The product data is delivered to the page by POST https://www.temu.com/api/oak/integration/render, which is signed with an anti-content token generated by Temu's own JavaScript — so it cannot be replayed from a plain fetch/curl. A rendered browser session is therefore the only path to the data, but Temu overlays a Security Verification CAPTCHA on automated sessions.

  1. Use the already-open remote session. The Browserbase session is started for you. Do not run browse stop or browse open --remote — both error with "Session already running" and waste turns. Just browse open <product-url>.
  2. Navigate and let the SPA hydrate: browse open https://www.temu.com/<slug>-g-<goodsId>.html, then browse wait load, then browse wait timeout 4000 (data renders 2–4 s after load).
  3. Screenshot + snapshot to detect the page state: browse screenshot --path <out> then browse snapshot.
  4. Branch on what the snapshot shows:
    • Security Verification modal present (≈21–22 a11y refs, heading "Security Verification", an image grid, a "Submit" button, a "Refresh" link, and an "X" close button) → the anti-bot wall (see Gotchas). With no CAPTCHA-solver available, emit the blocked output shape below and STOP. Do not click the X (it 302s the whole site to /login.html) and do not attempt to solve the grid.
    • Product content rendered (title/price visible in browse snapshot / browse get text body) → proceed to extract.
  5. Extract (success path): pull from browse get text body and browse snapshot:
    • title, current price, original (struck-through) price, discount %, currency
    • star rating + rating/review count, sold/"bought" count
    • variant groups (Color/Size/Model …) and their option values from the snapshot's selectable controls
    • image count / representative image URLs, shipping/delivery text, store name
    • the "Product details" / specifications attribute key–values
    • goodsId = the digits after -g- in the URL.
  6. Never click add-to-cart, buy, or checkout. Read-only.

There is no non-browser fallback that works: the HTML fetch is empty and the data API is anti-content-signed (see Gotchas).

Site-Specific Gotchas

  • Deterministic "Security Verification" image-grid CAPTCHA is the hard wall. It appears within ~2 s on a fresh Browserbase session — on both the homepage and product pages — regardless of --verified/--proxies configuration. Observed variants across runs: "Click on the corresponding images in the following order: table, apple, piano"; "Fill each box with the required number of objects"; "Please click on the type of animal that appears most frequently". Each is a 9-image grid with Submit / Refresh / X-close. This is the single reason the skill is blocked.
  • Never click the CAPTCHA's X (close) button. Doing so redirects the entire site to https://www.temu.com/login.html?from=... and locks the session into login-required mode — every subsequent navigation 302s to login. Verified in iter 1.
  • Proxies are NOT the trigger, and turning them off does NOT help. iter 1 (--verified --proxies), iter 2 (--verified only), and iter 3 (--verified --proxies, homepage-warmed) all hit the same CAPTCHA. The host pre-run probe reported "antibots: none detected / likelyNeedsVerified:false / likelyNeedsProxies:false" — that probe only checks the bare homepage HTTP response (a 301 redirect) and does not see the JS-driven client-side risk challenge. Don't trust the probe for this site.
  • The static HTML has no product data. browse cloud fetch https://www.temu.com/...-g-<id>.html --proxies returns HTTP 200 (~300 KB) but the visible body is empty — only <meta property="og:title|og:description|og:url|og:type=product"> tags and JS/i18n. window.__PageContext__ is just routing metadata; there is no JSON-LD (application/ld+json) and no inline product JSON. window.__ServerRenderSuccess__ is undefined under challenge.
  • The data API is POST /api/oak/integration/render and it returns HTTP 200 even while the CAPTCHA is showing — i.e. the data is fetched server-side, then a client-side risk layer overlays the CAPTCHA. But the request body is signed with an anti-content token generated by Temu's bundled JS, so the endpoint cannot be replayed standalone. Don't waste time trying to curl/fetch it directly.
  • /api/poppy/v1/goods/detail?goods_id=<id> is a dead end for cookieless calls — returns {"error_msg":"","error_code":40003}. Under an active CAPTCHA challenge, product API calls return errorCode 54001 ("unknown biz error"). /api/passport/token/touch returns 424 and /api/seo/get_common_biz_data returns 403 on automated sessions.
  • Homepage content flashes then disappears. The homepage briefly renders product cards (Lightning Deals with price/discount/rating/sold) before the CAPTCHA overlays — the render is real but the challenge appears within seconds, so it is not a reliable extraction window.
  • SPA hydration timing: when content does paint, it lands 2–4 s after browse wait load; always add browse wait timeout 4000 before snapshotting.
  • What would unblock this skill: an integrated image-CAPTCHA solver (the grid is a visual-classification task: select/count specific objects), or a session pre-authenticated as a logged-in Temu user that is exempt from the challenge, or an official Temu/affiliate product API with credentials. None of these were available in this environment.

Expected Output

Two outcome shapes.

Blocked (the outcome observed in every run so far):

{
  "success": false,
  "url": "https://www.temu.com/-22-ultra-5g-512gb--black-unlocked--g-602996746358868.html",
  "goodsId": "602996746358868",
  "error_reasoning": "Temu Security Verification image-grid CAPTCHA on both homepage and product page; product data API (/api/oak/integration/render) returns 200 but is anti-content-signed, and under challenge product calls return errorCode 54001. No product fields rendered behind the CAPTCHA."
}

Success (target shape, for when the CAPTCHA is solved/bypassed):

{
  "success": true,
  "url": "https://www.temu.com/<slug>-g-602996746358868.html",
  "goodsId": "602996746358868",
  "title": "Samsung Galaxy S22 Ultra 5G 512GB Black (Unlocked)",
  "currency": "USD",
  "price": "$289.99",
  "original_price": "$499.99",
  "discount_percent": "42",
  "rating": 4.6,
  "rating_count": 1234,
  "sold_count": "10k+ sold",
  "variants": [
    { "name": "Color", "options": ["Black", "White", "Green"] },
    { "name": "Storage", "options": ["256GB", "512GB"] }
  ],
  "image_count": 8,
  "images": ["https://img.kwcdn.com/product/....jpg"],
  "shipping": "Free shipping",
  "store_name": "Example Store",
  "specifications": { "Brand": "Samsung", "Model": "S22 Ultra", "Network": "5G" },
  "error_reasoning": null
}