Temu API — Getting Started — FetchLayer Docs
Documentation menu
FetchLayer FetchLayer API

Getting Started

Read a product once to learn its variants, then check their prices on a schedule with the skuIds it gave you. That is the whole workflow — and the second step is where getting it right saves a thousandfold in bytes.

1. Get your API key

Create an account and generate a FetchLayer API key from your dashboard. There is no Temu account or seller credential to register.

Create free account →

2. Read a product and its variants

bash
curl -X POST https://api.fetchlayer.dev/temu/product \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"product":"607033881415363","market":"US"}'

product takes the product id or any Temu product URL. The response carries the default variant's price, list price, discount and running promotion, the gallery and specifications, and a variants array — each with its own skuId, price and availability. Keep those skuIds.

Tip

Temu publishes each variant's own price only while a promotion runs. For other products the default variant is listed and the rest fall within product.priceRange — the notes array says which case you are looking at.

3. Check prices with skuIds

bash
curl -X POST https://api.fetchlayer.dev/temu/price-check \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"market":"US","items":[{"goodsId":"607033881415363","skuId":"117585735607558"},{"goodsId":"607033881415363","skuId":"117585735640326"}]}'

Up to 50 items per call, each reported as ok, not_found or failed. One failed item never fails the others.

Always send skuId

An item with a skuId is a ~1.6KB check. An item without one first loads the whole product page (~1.5MB) to find the default variant, and is several times slower. If you only have a goodsId, the first check returns the variant it priced as skuId with variantLookedUp: true — store it and send it from then on.

4. Handle refusals

Temu rate-limits tightly. A 503, a 502, or a price-check item with status: "failed" is worth retrying after a short wait. A 400 (bad input, including an unrecognised field) or 404 (the product does not exist or is not sold in that storefront) will not change on retry.

Tip

Have a link someone pasted? /resolve-url turns any Temu URL into its goodsId, skuId and storefront without touching Temu, and does not consume a credit.

Next steps