Scraping API · Shopee

A whole search result set, sorted the way you sort it.

You give it the Shopee URL with your filters already applied — best-seller sort, a price band, a category — and the job walks the result pages and returns the listings behind them.

What one call returns.

  • Item and shop id for every listing, so results join to the other endpoints
  • Name, price and shop location as displayed at capture time
  • The sold-count text Shopee shows on the card, where it shows one
  • The result total for that URL, so you can see how much of it you captured

Use this to define a category: what is listed under a term or a category node, at what prices, from which sellers, before you decide what to track.

The specification.

Endpoint
POST /v1/shopee/search-items/submit
Markets
Indonesia, Singapore, Thailand, Philippines, Malaysia, Vietnam, Taiwan, Brazil
Credits
Per page fetched, see the rate card
Batch size
Up to 50 URLs per request; twelve or fewer is the safe size
Approval
Approved by a person before it runs
Processing hours
08:00–18:00 GMT+8

Checked against the live API specification on 2026-09-18.

A real response, not a mock-up.

POST /v1/shopee/search-items/submit → GET .../pgnt/jobs/{job_id}/items/{token}/dataCaptured 2026-09-18
{
  "page_url": "https://shopee.co.id/search?keyword=sabun+mandi&page=0&sortBy=sales&minPrice=15000&maxPrice=25000",
  "total_items": 499,
  "complete": true,
  "items": [
    {
      "itemid": 28693580375,
      "shopid": 1135631643,
      "name": "Duzi Skin Sabun Susu Kuda Batang Pencerah Pemutih Bright Wild Sabun Cerah Lembut 50gr Paket",
      "price": 11200000000,
      "sold_count": {
        "text": "1RB+ Terjual/Bln"
      },
      "rating": {
        "icon": {
          "hash": "id-11134258-7r98o-ly1pxywrszyh0b",
          "height": 10,
          "width": 10
        },
        "rating_text": "4.9",
        "rating_type": 1
      },
      "shop_location": "Kab. Tulungagung"
    },
    {
      "itemid": 8815988544,
      "shopid": 64474495,
      "name": "Nuvo Family Sabun Mandi Batang Multipack Kuning Fresh Protect 100 gr (Beli 3 Gratis 1)",
      "price": 1730000000,
      "sold_count": {
        "text": "1RB+ Terjual/Bln"
      },
      "rating": {
        "icon": {
          "hash": "id-11134258-7r98o-ly1pxywrszyh0b",
          "height": 10,
          "width": 10
        },
        "rating_text": "4.9",
        "rating_type": 1
      },
      "shop_location": "Kab. Bogor"
    }
  ]
}

The limits, stated plainly.

  • Sorting and filtering live in the URL, exactly as on the site: sortBy=sales for best-seller, minPrice and maxPrice for a band
  • A single search URL stops at roughly nine pages, about 540 listings. To go deeper, split the same query into price bands; each band gets its own budget
  • Keep a job to twelve URLs or fewer. Larger jobs drop everything past the first dozen, in submission order, without an error
  • Approval-gated, and Shopee jobs process 08:00–18:00 GMT+8
  • No payload carries a category total, so a capture is a measured floor, never a complete census

When not to use this.

If you want everything one seller lists, the shop endpoint enumerates a store directly and does not depend on a keyword matching. If you want the variant split beneath a listing, that is the per-variant sold endpoint.

See the rate card

Other endpoints.

Price your exact scope before you pay.

The rate card is public and an estimate costs nothing.