Skip to main content
Shopee is one of Southeast Asia and Latin America’s leading e-commerce platforms, providing a marketplace for sellers to list products and manage orders. The Shopee Open Platform API enables access to your seller data including products, orders, advertising campaigns, and shop performance metrics.

Configuring Shopee as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Shopee option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

You’ll need to authorize Nekt to access your Shopee seller data. Click on the Shopee Authorization button and log in with your Shopee seller account. Grant the necessary permissions for the shop you want to extract data from. The following configurations are available:
  • API URL: Select the appropriate API endpoint for your region:
    • https://partner.shopeemobile.com - Global (Southeast Asia)
    • https://openplatform.shopee.com.br - Brazil
    • https://openplatform.shopee.cn - China
  • Start Date: The earliest date from which records will be synced. If not provided, all available historical data will be extracted.
Make sure you have the correct API permissions enabled in your Shopee Partner account. The connector requires access to Product, Order, and Ads APIs depending on which streams you select.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
    • Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Below you’ll find all available data streams from Shopee and their corresponding fields:
Complete product catalog with detailed information including pricing, inventory, media, and attributes.
FieldTypeDescription
item_idIntegerUnique identifier for the product
item_nameStringProduct name/title
item_skuStringSKU code
descriptionStringProduct description
description_typeStringType of description
category_idIntegerCategory identifier
conditionStringProduct condition (new, used)
item_statusStringCurrent status (NORMAL, BANNED, UNLIST, REVIEWING, SELLER_DELETE, SHOPEE_DELETE)
create_timeIntegerWhen the product was created (Unix timestamp)
update_timeIntegerWhen the product was last updated (Unix timestamp)
price_infoArrayArray of price information per currency with currency, original_price, current_price, and other pricing details
imageObjectProduct images with image_id_list, image_url_list, and image_ratio
video_infoArrayArray of product videos with video_url, thumbnail_url, and duration
promotion_imageArrayPromotional images
attribute_listArrayArray of product attributes with attribute_id, original_attribute_name, is_mandatory, and attribute_value_list
weightNumberProduct weight
dimensionObjectPackage dimensions with package_length, package_width, and package_height
logistic_infoArrayArray of logistics options with logistic_id, logistic_name, enabled status, and shipping details
stock_info_v2ObjectDetailed stock information with summary_info, seller_stock, shopee_stock, and advance_stock
brandObjectBrand information with brand_id and original_brand_name
gtin_codeStringGTIN/EAN barcode
authorised_brand_idIntegerAuthorized brand ID
ssp_idStringSSP identifier
pre_orderObjectPre-order settings with is_pre_order and days_to_ship
wholesalesArrayWholesale pricing tiers with min_count, max_count, unit_price, and inflated_price_of_unit_price
purchase_limit_infoObjectPurchase limits with min_purchase_limit and max_purchase_limit
deboostBooleanWhether product is deboost (visibility reduced)
has_modelBooleanWhether product has variations/models
has_promotionBooleanWhether currently on promotion
promotion_idIntegerActive promotion ID
is_fulfillment_by_shopeeBooleanWhether fulfilled by Shopee (FBS)
item_dangerousIntegerDangerous goods indicator
scheduled_publish_timeIntegerScheduled publish time (Unix timestamp)
size_chartStringSize chart content
size_chart_idStringSize chart identifier
tagObjectProduct tags with kit information
description_infoObjectExtended description with field_list containing field_type, text, and image_info
compatibility_infoObjectVehicle compatibility with vehicle_info_list
tax_infoObjectTax details by region (Brazil, Poland, India, Taiwan)
complaint_policyObjectWarranty and complaint settings
certification_infoObjectProduct certifications (Philippines)
Complete order details including buyer information, items, payments, and shipping.
FieldTypeDescription
order_snStringUnique order serial number
order_statusStringOrder status
regionStringOrder region/country
currencyStringOrder currency
codBooleanCash on delivery flag
total_amountNumberTotal order amount
message_to_sellerStringBuyer’s message
pending_termsArrayArray of pending terms
pending_descriptionArrayArray of pending descriptions
create_timeIntegerOrder creation time (Unix timestamp)
update_timeIntegerLast update time (Unix timestamp, replication key)
pay_timeIntegerPayment time
ship_by_dateIntegerShip by deadline
days_to_shipIntegerDays allowed to ship
note_update_timeIntegerWhen seller note was last updated
buyer_user_idIntegerBuyer’s user ID
buyer_usernameStringBuyer’s username
buyer_cpf_idStringBuyer’s CPF (Brazil)
recipient_addressObjectDelivery address with name, phone, full_address, and location details
item_listArrayArray of ordered items with item details, quantities, and pricing
shipping_carrierStringCarrier name
checkout_shipping_carrierStringSelected carrier at checkout
estimated_shipping_feeNumberEstimated shipping cost
actual_shipping_feeNumberActual shipping cost
actual_shipping_fee_confirmedBooleanFee confirmation status
reverse_shipping_feeNumberReturn shipping fee
order_chargeable_weight_gramIntegerChargeable weight
fulfillment_flagStringFulfillment type
pickup_done_timeIntegerPickup completion time
goods_to_declareBooleanCustoms declaration required
package_listArrayArray of packages with tracking numbers, logistics status, and item details
payment_methodStringPayment method
payment_infoArrayArray of payment details with payment_method, payment_processor_register, and transaction_id
cancel_byStringWho cancelled
cancel_reasonStringCancellation reason
buyer_cancel_reasonStringBuyer’s cancellation reason
invoice_dataObjectInvoice details (Brazil) with number, series_number, access_key, and values
prescription_imagesArrayArray of prescription image URLs
prescription_check_statusStringCheck status
pharmacist_nameStringPharmacist name
prescription_approval_timeIntegerApproval time
prescription_rejection_timeIntegerRejection time
edt_fromStringEstimated delivery time from
edt_toStringEstimated delivery time to
booking_snStringBooking serial number
advance_packageBooleanAdvance package flag
dropshipperStringDropshipper name
dropshipper_phoneStringDropshipper phone
noteStringSeller notes
split_upBooleanOrder split flag
return_request_due_dateIntegerReturn request deadline
is_buyer_shop_collectionBooleanShop collection flag
buyer_proof_of_collectionArrayArray of collection proof images
hot_listing_orderBooleanHot listing order flag
Product engagement and sales metrics.
FieldTypeDescription
item_idIntegerProduct identifier
saleIntegerTotal sales count
viewsIntegerNumber of product views
likesIntegerNumber of likes/favorites
rating_starNumberAverage rating
comment_countIntegerNumber of reviews/comments

Use Cases for Data Analysis

This guide outlines valuable business intelligence use cases when consolidating Shopee data, along with ready-to-use SQL queries that you can run on Explorer.

1. Product Performance Overview

Analyze product performance combining catalog data with engagement metrics. Business Value:
  • Identify best-selling and most-viewed products
  • Understand conversion from views to sales
  • Optimize product listings based on engagement
WITH product_metrics AS (
   SELECT
      p.item_id,
      p.item_name,
      p.item_status,
      p.category_id,
      pa.sale AS total_sales,
      pa.views AS total_views,
      pa.likes AS total_likes,
      pa.rating_star,
      pa.comment_count,
      CASE 
         WHEN pa.views > 0 THEN ROUND(pa.sale * 100.0 / pa.views, 2)
         ELSE 0 
      END AS conversion_rate
   FROM
      nekt_raw.shopee_products p
      LEFT JOIN nekt_raw.shopee_product_analytics pa ON p.item_id = pa.item_id
   WHERE
      p.item_status = 'NORMAL'
)
SELECT
   item_id,
   item_name,
   total_sales,
   total_views,
   total_likes,
   rating_star,
   comment_count,
   conversion_rate
FROM
   product_metrics
ORDER BY
   total_sales DESC
LIMIT 50
item_iditem_nametotal_salestotal_viewstotal_likesrating_starcomment_countconversion_rate
123456789Wireless Bluetooth Earbuds2,45045,2301,8904.88565.42
234567890Phone Case Premium1,89032,4501,2344.64235.82
345678901USB-C Fast Charger1,56728,9009874.73125.42
456789012Screen Protector Pack1,23418,4505674.52346.69

2. Order Status Analysis

Track order distribution by status to monitor fulfillment health. Business Value:
  • Monitor order processing efficiency
  • Identify bottlenecks in fulfillment
  • Track cancellation rates and reasons
WITH order_stats AS (
   SELECT
      order_status,
      COUNT(*) AS order_count,
      SUM(total_amount) AS total_revenue,
      AVG(total_amount) AS avg_order_value
   FROM
      nekt_raw.shopee_orders
   WHERE
      FROM_UNIXTIME(create_time) >= CURRENT_DATE - INTERVAL '30' DAY
   GROUP BY
      order_status
),
total AS (
   SELECT SUM(order_count) AS total_orders FROM order_stats
)
SELECT
   os.order_status,
   os.order_count,
   ROUND(os.order_count * 100.0 / t.total_orders, 2) AS percentage,
   ROUND(os.total_revenue, 2) AS total_revenue,
   ROUND(os.avg_order_value, 2) AS avg_order_value
FROM
   order_stats os, total t
ORDER BY
   os.order_count DESC
order_statusorder_countpercentagetotal_revenueavg_order_value
COMPLETED1,24562.2589,234.5071.67
SHIPPED45622.8031,245.0068.52
READY_TO_SHIP1899.4514,523.0076.84
CANCELLED1105.507,856.0071.42

Implementation Notes

Shopee uses Unix timestamps (seconds since epoch) for date/time fields. To convert in queries:
-- AWS Athena
FROM_UNIXTIME(create_time) AS created_at

-- GCP BigQuery
TIMESTAMP_SECONDS(create_time) AS created_at
The connector supports multiple regional API endpoints:
  • Global (SEA): Singapore, Malaysia, Thailand, Vietnam, Philippines, Indonesia, Taiwan
  • Brazil: Specific endpoint for Brazilian marketplace
  • China: Mainland China operations
Make sure to select the correct API URL for your shop’s region.
The connector supports incremental sync for:
  • Products: Uses update_time as the replication key
  • Orders: Uses update_time as the replication key
For products and orders, only records modified since the last sync will be extracted.
The connector automatically manages access token refresh to prevent authentication failures:
  • Access tokens are refreshed proactively 30 minutes before expiration
  • The signing key is dynamically updated when generating new tokens
  • Refresh tokens are stored securely in the Meltano database
  • Token expiration defaults to 4 hours if not specified by the API
Shopee data contains nested structures. When querying:
  • Use UNNEST to flatten arrays (e.g., item_list in orders)
Example for order items:
-- AWS Athena
SELECT o.order_sn, i.item_name, i.model_quantity_purchased
FROM orders o
CROSS JOIN UNNEST(o.item_list) AS t(i)

-- GCP BigQuery
SELECT o.order_sn, i.item_name, i.model_quantity_purchased
FROM orders o, UNNEST(o.item_list) AS i