Shopee Scraper - Suggestions, Products & Shops avatar

Shopee Scraper - Suggestions, Products & Shops

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Shopee Scraper - Suggestions, Products & Shops

Shopee Scraper - Suggestions, Products & Shops

Collect Shopee search suggestions, related product cards, discover-feed products and shop profiles across 11 market codes. Pay per delivered row plus a start fee; available data varies by market.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

20

Total users

6

Monthly active users

15 hours

Issues response

a day ago

Last modified

Categories

Security

Limited permissions

Share

Shopee Scraper

Export Shopee search suggestions, related product cards, discover-feed products and shop profiles as structured rows, with a choice of 11 market codes.

  • Research suggested queries and their linked product and shop IDs.
  • Collect related products with prices, sales counts and ratings when available.
  • Read a market's discover feed or a shop's public profile.
  • Export rows for spreadsheets, applications and AI agents.
  • Pay $3.00 per 1,000 delivered rows on the Free plan, plus a start fee.

What does Shopee Scraper do?

Shopee Scraper collects public Shopee data for keyword research, product comparisons and shop research. Each row represents one suggestion, product card or shop profile. Suggestions are search signals, not full product search results.

  • Suggestions: enter keyword or keywords to receive suggested queries.
  • Products: provide a product seed to collect related product cards, not the seed's full detail page.
  • Discover: collect product cards from a market's homepage feed.
  • Shop: provide a shop ID or username to collect its profile and available categories.

Choose PH (Philippines), SG (Singapore), MY (Malaysia), TH (Thailand), TW (Taiwan), VN (Vietnam), ID (Indonesia), BR (Brazil), MX (Mexico), CO (Colombia) or CL (Chile). Singapore is the default. Available data varies by market and mode.

Optional filters, category trees and category details are off by default. They add supporting information rather than separately billed rows. Every delivered dataset row uses the same row price for your plan.

What data can you extract from Shopee?

All row types include rowType, id, title, market, keyword and captured_at. The examples below illustrate field shapes, not verified offers.

Suggestions: rowType="suggestion"

FieldDescriptionExample
querySuggested search text; also used as title.phone case clear
idNormalized query used to identify the row.phone case clear
rankPosition among returned suggestions.1
marketSelected market code.SG
item_idFirst linked product ID, if present.123456789
shop_idFirst linked shop ID, if present.1234567
product_urlLink assembled from those IDs.https://shopee.sg/product/1234567/123456789
suggestion_item_idsLinked product IDs, capped at 50.["123456789"]
suggestion_shop_idsLinked shop IDs, capped at 50.["1234567"]
suggestion_imagesLinked image URLs, capped at 50.[]
suggestion_item_countProduct-ID count before truncation.1
trackingAvailable ranking information.{"rank_score":0.2}
search_infoAdditional search information supplied by Shopee.{}

Suggestion rows leave price, sold_text and rating_text empty. A linked product ID does not mean its price or stock was collected.

Products and discover: rowType="product_listing"

FieldDescriptionExample
titleProduct name.Clear phone case
item_idProduct ID.123456789
shop_idSeller's shop ID.1234567
product_urlProduct page link.https://shopee.sg/product/1234567/123456789
priceAvailable reference price as a decimal string.12.90
voucher_discounted_priceAvailable voucher-adjusted price.10.90
currency_codeCurrency for the selected market.SGD
discountDiscount information when present.15%
soldAvailable sales count.120
monthly_soldAvailable monthly sales count.25
stockStock count when supplied by the discover feed.40
rating_starAggregate rating.4.8
rating_countTotal rating count.52
rating_count_distributionRating-count array supplied by Shopee.[]
imagesProduct image URLs.[]
shop_nameShop display name when available.Example Shop
is_official_shopOfficial-shop flag when available.true
category_breadcrumbOptional category path.["Mobile & Gadgets"]
global_catPositive category ID, or null.100011
global_cat_rawOriginal category object or array, otherwise null.{"catid":[100011,100046,100780]}
tier_variationsAvailable variation information.[]
item_card_display_pricePrice details retained from the product card.{}

When Shopee supplies a category object or array, global_cat is null and global_cat_raw preserves the complete value without selecting an ID from it.

price prefers a positive strikethrough or original price before other available prices. It is not a guaranteed checkout price; compare it with voucher_discounted_price and the product card's price details.

Shops: rowType="shop_profile"

FieldDescriptionExample
shop_idShop ID.1234567
shop_nameShop display name; also used as title.Example Shop
usernameShop username.example_shop
descriptionPublic shop description.Phone accessories
product_urlShop page link on this row type.https://shopee.sg/shop/1234567
item_countReported product count.80
follower_countReported follower count.500
rating_starAggregate shop rating.4.9
response_rateReported response rate.95
shop_locationPublic shop location.Singapore
shop_categoriesAvailable in-shop categories.[]
mall_categoriesOptional market-level Mall categories.[]

How to scrape Shopee

  1. Open Shopee Scraper in Apify Console.
  2. Fill a target field and select its market.
  3. Set limit to 3 for a small first run.
  4. Click Start and wait for completion.
  5. Open the dataset and download rows, or read them through the API.

Empty input runs the form's example: phone case, SG, at most three suggestion rows. Normal event charges apply. With fetchMode: "auto", a product link or item ID selects products, a shop ID or username selects shop, and a keyword selects suggestions. When targets conflict, the priority is product link, item ID, shop ID, shop username, then keyword.

Suggestions

Enter one keyword or a keywords list. Each keyword receives its own limit allowance, subject to the run's combined budget.

Products

Enter itemUrl, or itemId with shopId. Use a Shopee link shaped like /product/<shopId>/<itemId> or -i.<shopId>.<itemId>, and select the matching market. Avoid mixing a link with separate IDs. To find related products from a keyword, explicitly select fetchMode: "products"; finding a suitable seed is not guaranteed.

Discover

Explicitly select fetchMode: "discover" and choose the market. No target is required. This is a homepage feed, not a keyword-filtered search.

Shop

Enter shopId or shopUsername. A shop input returns one profile, not all of that shop's products.

What to fill in

FieldWhat to enterDefault
fetchModeauto, suggestions, products, discover or shop.auto
keywordOne search phrase.Example: phone case
keywordsList of search phrases; takes precedence over keyword.Empty
itemUrlShopee product link.Empty
itemIdNumeric product ID, paired with shopId.Empty
shopIdNumeric shop ID.Empty
shopUsernameShop username, without a URL.Empty
marketOne supported market code.SG
limitMaximum rows per input, from 1 to 200.70; form prefill 3
includeFilterConfigSuggestions: add filters to SEARCH_SIGNALS.false
includeCatTreeSuggestions: save CATEGORY_TREE.false
includeSearchFacetProducts: request breadcrumbs for up to three rows. Shop: request Mall categories.false

Suggestions:

{
"keywords": ["phone case", "wireless earbuds"],
"market": "SG",
"limit": 3
}

Related products; replace the illustrative link with a real product:

{
"fetchMode": "products",
"itemUrl": "https://shopee.sg/product/1234567/123456789",
"market": "SG",
"limit": 3
}

Discover feed:

{
"fetchMode": "discover",
"market": "MY",
"limit": 3
}

Shop profile; replace the illustrative shop ID:

{
"shopId": "1234567",
"market": "SG",
"limit": 1
}

maxItems and maxResults are aliases for limit. Unknown fields alone do not fail the run: close misspellings are corrected and other unknown fields are ignored with a note. The resulting input must still be valid.

Input errors stop collection before any row is charged, with messages such as INVALID_INPUT: shopId — fill shopId together with itemId, or give itemUrl instead. The start fee is separate. Runs reaching input validation write INPUT_REPORT in the default key-value store, showing inferred, filled, corrected and ignored fields.

Output example

Illustrative suggestion row:

{
"rowType": "suggestion",
"id": "phone case clear",
"title": "phone case clear",
"query": "phone case clear",
"record_type": "search_suggestion",
"market": "SG",
"keyword": "phone case",
"rank": 1,
"item_id": "123456789",
"shop_id": "1234567",
"product_url": "https://shopee.sg/product/1234567/123456789",
"price": "",
"sold_text": "",
"rating_text": "",
"suggestion_item_ids": ["123456789"],
"suggestion_shop_ids": ["1234567"],
"captured_at": "2026-10-24T08:00:00+00:00",
"source": "suggestion_api",
"provider": "suggestion_api"
}

Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. RUN_SUMMARY holds the outcome and row count. Suggestions also write SEARCH_SIGNALS with keyword hints and optional filters. Other modes write PRODUCT_SIGNALS, DISCOVER_SIGNALS or SHOP_SIGNALS. A requested category tree is stored separately as CATEGORY_TREE, not as product rows.

Why use this Shopee scraper?

  • Pay per delivered row. Row charges follow dataset output, with a separate start fee.
  • Keep row types distinct. Suggestions do not masquerade as zero-price products.
  • Inspect input decisions. INPUT_REPORT explains how fields were interpreted.
  • Process several keywords. Use one keywords list instead of creating separate runs.
  • No proxy setup. You do not need to set up proxies.

Rows already written to the dataset remain available. Do not assume that stopping a run preserves everything collected: this Actor writes its rows after processing the inputs, so an interruption before that write can leave no output.

How much does it cost to scrape Shopee?

The Actor uses pay-per-event pricing. The start event costs $0.005 per GB of allocated memory, with a minimum of one event. At the default 1024 MB, the start charge is $0.005. Platform usage is included in these prices.

Apify planStart at 1024 MBPrice per rowPrice per 1,000 rows
Free$0.005$0.003$3.00
Starter$0.005$0.003$3.00
Scale$0.005$0.0026$2.60
Business$0.005$0.0022$2.20
  • limit applies to each input, not the whole run. With a supplied target and no limit, it defaults to 70; the maximum accepted value is 200.
  • Free Apify plan users are capped at 200 rows per run and 10 runs of this Actor.
  • Set Maximum cost per run (maxTotalChargeUsd in the API) to bound the combined run charge. An insufficient budget can reduce row delivery or stop collection.
  • Requested counts are ceilings, not guarantees. Fewer available rows mean fewer row charges.

Example: three keywords delivering 50 rows each produce 150 rows. On the Free plan at 1024 MB, the charge is 150 × $0.003 + $0.005 = $0.455.

What happens when the run timeout is too short

Some Shopee collections, such as a long keywords list or a large limit, can take longer than the run timeout you chose. In that case the run does not fail. It ends early with the status message "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." and shows as ABORTED for a while.

When the results are ready, the same run starts again by itself, reports "Resumed: delivering N rows.", writes the rows to the same dataset and finishes as SUCCEEDED. Rows that were already delivered are skipped, so no row is delivered or charged twice. You do not need to start another run.

  • This can happen at most 3 times per run. To avoid it, keep the default timeout of 3600 seconds.
  • The synchronous API endpoints (run-sync, run-sync-get-dataset-items) wait at most 300 seconds and can return an empty dataset while the run is paused. For larger jobs, start the run asynchronously and read the dataset after the run reaches SUCCEEDED, or use a webhook on the "succeeded" event.

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/shopee-search-scraper

Sign in with Apify using OAuth when prompted, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; read rows with get-dataset-items.

For clients without remote support, run npx @apify/actors-mcp-server --tools lentic_clockss/shopee-search-scraper with APIFY_TOKEN set.

Example prompt: "Collect three Shopee search suggestions for phone case in Singapore and return the suggested text and linked product URLs."

Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/shopee-search-scraper").call(
run_input={"keyword": "phone case", "market": "SG", "limit": 3}
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/shopee-search-scraper').call({
keyword: 'phone case', market: 'SG', limit: 3
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Or send POST https://api.apify.com/v2/acts/lentic_clockss~shopee-search-scraper/runs with your input as JSON and an Authorization: Bearer <YOUR_APIFY_TOKEN> header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.

Integrations

Use the Integrations tab to connect results to Google Sheets, Make, Zapier, n8n, Slack, Airtable or a webhook. Use Apify Schedules for repeated runs.

FAQ

Collect only data you are entitled to use. Public availability does not remove your responsibility for Shopee's terms and applicable data-protection law. Processing personal data requires a lawful basis; obtain legal advice for your intended use.

Why did my run end as ABORTED?

Check the run's status message and log to establish why it stopped. An aborted run is not proof of successful collection, and this Actor does not promise automatic restart. Check the dataset before starting a replacement run, which incurs its own start fee.

How many results can I get?

Request up to 200 rows per input. Actual counts depend on available suggestions, recommendations or feed products and the run's budget. A shop target returns one profile. Raising limit cannot create additional source data.

Why are some fields empty?

Shopee does not supply every field in every mode. Suggestions deliberately have no price or sales data. Missing values may appear as empty strings, empty arrays or null, rather than invented values.

Can this return every product matching a keyword?

No. Suggestions contain suggested queries, while products mode collects recommendations from a seed. Neither is a complete keyword-search catalog.

Why did my Free-plan run stop with a limit message?

This Actor's developer sets a 10-run allowance and a 200-row per-run cap for Free-plan users. The run status explains when that allowance is exhausted. Paid plans still have input limits and the cost cap you choose.

Can I collect reviews or private shop data?

No. The Actor returns rating aggregates when present, not individual review bodies, private messages or account-only information.

Is this an official Shopee API?

No. This is an independent Actor returning structured Shopee data through Apify.

Limitations

  • Only the 11 listed market codes are accepted. A configured market does not guarantee every mode has data.
  • Colombia and Chile can have empty recommendation pools or unavailable discover feeds.
  • Product cards are not full product-detail records. Prices, stock, ratings and optional category data may be missing.
  • Source-confirmed empty results can succeed with zero rows and emptyReason: "NO_MATCH"; collection errors are not treated as proof of no matches.
  • Linked suggestion lists are capped at 50 entries each. Counts can be higher than the retained lists.
  • Product breadcrumbs are requested for at most the first three rows when enabled.

More e-commerce and marketplace scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Report a problem or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.