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.Basic Info:
  • item_id - Unique identifier for the product
  • item_name - Product name/title
  • item_sku - SKU code
  • description - Product description
  • description_type - Type of description
  • category_id - Category identifier
  • condition - Product condition (new, used)
  • item_status - Current status (NORMAL, BANNED, UNLIST, REVIEWING, SELLER_DELETE, SHOPEE_DELETE)
Timestamps:
  • create_time - When the product was created (Unix timestamp)
  • update_time - When the product was last updated (Unix timestamp)
Pricing:
  • price_info - Array of price information per currency:
    • currency - Currency code
    • original_price - Original list price
    • current_price - Current selling price
    • inflated_price_of_original_price - Inflated original price
    • inflated_price_of_current_price - Inflated current price
    • sip_item_price - SIP item price
    • sip_item_price_source - SIP item price source
    • local_price - Local price
    • local_promotion_price - Local promotional price
Media:
  • image - Product images:
    • image_id_list - Array of image IDs
    • image_url_list - Array of image URLs
    • image_ratio - Image aspect ratio
  • video_info - Array of product videos:
    • video_url - Video URL
    • thumbnail_url - Video thumbnail URL
    • duration - Video duration in seconds
  • promotion_image - Promotional images
Attributes:
  • attribute_list - Array of product attributes:
    • attribute_id - Attribute identifier
    • original_attribute_name - Attribute name
    • is_mandatory - Whether attribute is required
    • attribute_value_list - Array of values with value_id, original_value_name, value_unit
Physical Properties:
  • weight - Product weight
  • dimension - Package dimensions:
    • package_length - Length
    • package_width - Width
    • package_height - Height
Logistics:
  • logistic_info - Array of logistics options:
    • logistic_id - Logistics channel ID
    • logistic_name - Logistics channel name
    • enabled - Whether enabled
    • shipping_fee - Shipping fee
    • size_id - Size tier ID
    • is_free - Free shipping flag
    • estimated_shipping_fee - Estimated shipping cost
Stock Information:
  • stock_info_v2 - Detailed stock information:
    • summary_info - Total reserved and available stock (total_reserved_stock, total_available_stock)
    • seller_stock - Stock by seller location (location_id, stock, if_saleable)
    • shopee_stock - Stock at Shopee warehouses (location_id, stock)
    • advance_stock - Advance stock details (sellable_advance_stock, in_transit_advance_stock)
Brand & Identifiers:
  • brand - Brand information (brand_id, original_brand_name)
  • gtin_code - GTIN/EAN barcode
  • authorised_brand_id - Authorized brand ID
  • ssp_id - SSP identifier
Pre-order & Wholesale:
  • pre_order - Pre-order settings (is_pre_order, days_to_ship)
  • wholesales - Wholesale pricing tiers (min_count, max_count, unit_price, inflated_price_of_unit_price)
Purchase Limits:
  • purchase_limit_info - Purchase limits:
    • min_purchase_limit - Minimum purchase quantity
    • max_purchase_limit - Maximum purchase limit (purchase_limit)
Status & Flags:
  • condition - Product condition (new, used)
  • item_status - Current status (NORMAL, BANNED, UNLIST, REVIEWING, SELLER_DELETE, SHOPEE_DELETE)
  • deboost - Whether product is deboost (visibility reduced)
  • has_model - Whether product has variations/models
  • has_promotion - Whether currently on promotion
  • promotion_id - Active promotion ID
  • is_fulfillment_by_shopee - Whether fulfilled by Shopee (FBS)
  • item_dangerous - Dangerous goods indicator
  • scheduled_publish_time - Scheduled publish time (Unix timestamp)
Size Chart:
  • size_chart - Size chart content
  • size_chart_id - Size chart identifier
Tags:
  • tag - Product tags:
    • kit - Whether product is a kit/bundle
Description:
  • description_info - Extended description:
    • extended_description - Rich description with field_list containing field_type, text, image_info
  • description_type - Type of description
Compatibility (Automotive):
  • compatibility_info - Vehicle compatibility:
    • vehicle_info_list - Array of compatible vehicles (brand_id, model_id, year_id, version_id)
Tax Information:
  • tax_info - Tax details by region:
    • Brazil: ncm, diff_state_cfop, same_state_cfop, export_cfop, csosn, origin, cest, measure_unit, pis, cofins, icms_cst, pis_cofins_cst, federal_state_taxes, operation_type, ex_tipi, fci_num, recopi_num, additional_info, group_item_info
    • Poland: invoice_option, vat_rate
    • India: hs_code, tax_code
    • Taiwan: tax_type
Complaint Policy:
  • complaint_policy - Warranty and complaint settings:
    • warranty_time - Warranty duration
    • exclude_entrepreneur_warranty - Exclude entrepreneur warranty
    • complaint_address_id - Complaint address ID
    • additional_information - Additional info
Certification (Philippines):
  • certification_info - Product certifications:
    • certification_list - Array of certifications (permit_id, certification_no, expiry_date, certification_proofs)
Complete order details including buyer information, items, payments, and shipping.Basic Order Info:
  • order_sn - Unique order serial number
  • order_status - Order status
  • region - Order region/country
  • currency - Order currency
  • cod - Cash on delivery flag
  • total_amount - Total order amount
  • message_to_seller - Buyer’s message
  • pending_terms - Array of pending terms
  • pending_description - Array of pending descriptions
Timestamps:
  • create_time - Order creation time (Unix timestamp)
  • update_time - Last update time (Unix timestamp, replication key)
  • pay_time - Payment time
  • ship_by_date - Ship by deadline
  • days_to_ship - Days allowed to ship
  • note_update_time - When seller note was last updated
Buyer Information:
  • buyer_user_id - Buyer’s user ID
  • buyer_username - Buyer’s username
  • buyer_cpf_id - Buyer’s CPF (Brazil)
  • recipient_address - Delivery address:
    • name - Recipient name
    • phone - Phone number
    • full_address - Complete address
    • town, district, city, state, region, zipcode
    • geolocation - Coordinates (latitude, longitude)
Items:
  • item_list - Array of ordered items:
    • item_id, item_name, item_sku
    • model_id, model_name, model_sku
    • model_quantity_purchased - Quantity
    • model_original_price, model_discounted_price
    • weight - Item weight
    • wholesale - Wholesale order flag
    • add_on_deal, main_item, add_on_deal_id - Add-on deal info
    • promotion_type, promotion_id, promotion_group_id - Promotion details
    • promotion_list - Array of promotions (promotion_type, promotion_id)
    • order_item_id - Order item identifier
    • image_info - Item image (image_url)
    • product_location_id - Product location IDs
    • is_prescription_item - Prescription item flag
    • is_b2c_owned_item - B2C owned item flag
    • consultation_id - Consultation ID (prescription items)
    • hot_listing_item - Hot listing flag
Shipping & Logistics:
  • shipping_carrier - Carrier name
  • checkout_shipping_carrier - Selected carrier at checkout
  • estimated_shipping_fee - Estimated shipping cost
  • actual_shipping_fee - Actual shipping cost
  • actual_shipping_fee_confirmed - Fee confirmation status
  • reverse_shipping_fee - Return shipping fee
  • order_chargeable_weight_gram - Chargeable weight
  • fulfillment_flag - Fulfillment type
  • pickup_done_time - Pickup completion time
  • goods_to_declare - Customs declaration required
Packages:
  • package_list - Array of packages:
    • package_number - Package tracking number
    • logistics_status - Package status
    • logistics_channel_id - Logistics channel ID
    • shipping_carrier - Carrier
    • allow_self_design_awb - Allow custom AWB design
    • item_list - Items in package (item_id, model_id, model_quantity, order_item_id, promotion_group_id, product_location_id)
    • parcel_chargeable_weight - Package weight
    • parcel_chargeable_weight_gram - Package weight in grams
    • group_shipment_id - Group shipment ID
    • virtual_contact_number - Virtual contact number
    • package_query_number - Query number
    • sorting_group - Sorting group
Payment:
  • payment_method - Payment method
  • payment_info - Array of payment details:
    • payment_method - Method used
    • payment_processor_register - Payment processor
    • card_brand - Card brand (if applicable)
    • transaction_id - Transaction ID
    • payment_amount - Amount paid
Cancellation:
  • cancel_by - Who cancelled
  • cancel_reason - Cancellation reason
  • buyer_cancel_reason - Buyer’s cancellation reason
Invoice (Brazil):
  • invoice_data - Invoice details:
    • number - Invoice number
    • series_number - Series number
    • access_key - Access key
    • issue_date - Issue date (Unix timestamp)
    • total_value - Total invoice value
    • products_total_value - Products total value
    • tax_code - Tax code
Prescription (Indonesia, Philippines):
  • prescription_images - Array of prescription image URLs
  • prescription_check_status - Check status
  • pharmacist_name - Pharmacist name
  • prescription_approval_time - Approval time
  • prescription_rejection_time - Rejection time
EDT (Brazil):
  • edt_from - Estimated delivery time from
  • edt_to - Estimated delivery time to
Advanced Fulfillment:
  • booking_sn - Booking serial number
  • advance_package - Advance package flag
Dropshipping:
  • dropshipper - Dropshipper name
  • dropshipper_phone - Dropshipper phone
Other:
  • note - Seller notes
  • split_up - Order split flag
  • return_request_due_date - Return request deadline
  • is_buyer_shop_collection - Shop collection flag
  • buyer_proof_of_collection - Array of collection proof images
  • hot_listing_order - Hot listing order flag
Advertising campaign settings and configuration for product-level campaigns.Campaign Info:
  • campaign_id - Unique campaign identifier
  • common_info - Common campaign settings:
    • ad_type - Campaign type (auto, manual)
    • ad_name - Campaign name
    • campaign_status - Status (ongoing, scheduled, ended, paused, deleted, closed)
    • bidding_method - Bidding method (auto, manual)
    • campaign_placement - Where ads appear (search, discovery, all)
    • campaign_budget - Budget (0 = unlimited)
    • campaign_duration - Start and end times
    • item_id_list - Products in campaign
Manual Bidding:
  • manual_bidding_info - Manual bidding settings:
    • enhanced_cpc - Enhanced CPC enabled
    • selected_keywords - Array of keywords:
      • keyword - Keyword text
      • status - Keyword status
      • match_type - Match type (exact, broad)
      • bid_price_per_click - Bid amount
    • discovery_ads_locations - Discovery placement settings
Auto Bidding:
  • auto_bidding_info - Auto bidding settings:
    • roas_target - Target ROAS
Product Ads:
  • auto_product_ads_info - Array of products:
    • product_name - Product name
    • status - Ad status (learning, ongoing, paused, ended, unavailable)
    • item_id - Product ID
Daily performance metrics for product advertising campaigns.Identifiers:
  • campaign_id - Campaign identifier
  • ad_type - Campaign type (auto, manual)
  • campaign_placement - Placement (search, discovery, all)
  • ad_name - Campaign name
  • date - Report date (YYYY-MM-DD, replication key)
Basic Metrics:
  • impression - Number of ad impressions
  • clicks - Number of clicks
  • ctr - Click-through rate (clicks ÷ impressions × 100%)
  • expense - Amount spent on ads
Broad Attribution (7-day window, any product):
  • broad_gmv - Revenue from any shop product within 7 days of ad click
  • broad_order - Orders for any shop product within 7 days
  • broad_order_amount - Quantity of products purchased
  • broad_roi - ROAS (GMV ÷ expense)
  • broad_cir - ACOS (expense ÷ GMV × 100%)
  • cr - Conversion rate (conversions ÷ clicks × 100%)
  • cpc - Cost per conversion (expense ÷ conversions)
Direct Attribution (7-day window, advertised product only):
  • direct_gmv - Revenue from advertised product within 7 days
  • direct_order - Orders for advertised product within 7 days
  • direct_order_amount - Quantity of advertised product purchased
  • direct_roi - Direct ROAS
  • direct_cir - Direct ACOS
  • direct_cr - Direct conversion rate
  • cpdc - Cost per direct conversion
Product engagement and sales metrics.Key Fields:
  • item_id - Product identifier
  • sale - Total sales count
  • views - Number of product views
  • likes - Number of likes/favorites
  • rating_star - Average rating
  • comment_count - Number of reviews/comments
Daily shop-level performance metrics for affiliate marketing.Key Fields:
  • report_date - Report date (YYYY-MM-DD, replication key)
  • fetched_date_range - Actual data range
Sales Metrics:
  • sales - Total affiliate sales revenue
  • gross_item_sold - Total items sold through affiliates
  • orders - Number of affiliate orders
Engagement:
  • clicks - Clicks on affiliate links
Commission:
  • est_commission - Estimated commission payout
  • roi - Return on investment (sales ÷ commission)
Buyers:
  • total_buyers - Total affiliate buyers
  • new_buyers - New buyers through affiliates

Data Model

The following diagram illustrates the relationships between the core data streams in Shopee. The arrows indicate the join keys that link the different entities.

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

3. Advertising Campaign Performance

Analyze advertising ROI and identify top-performing campaigns. Business Value:
  • Track advertising spend efficiency
  • Compare direct vs broad attribution
  • Optimize campaign budgets based on performance
WITH campaign_metrics AS (
   SELECT
      apc.campaign_id,
      apc.common_info.ad_name AS campaign_name,
      apc.common_info.ad_type,
      apc.common_info.campaign_status,
      apc.common_info.campaign_placement,
      SUM(adp.impression) AS total_impressions,
      SUM(adp.clicks) AS total_clicks,
      SUM(adp.expense) AS total_spend,
      SUM(adp.broad_gmv) AS total_broad_gmv,
      SUM(adp.broad_order) AS total_broad_orders,
      SUM(adp.direct_gmv) AS total_direct_gmv,
      SUM(adp.direct_order) AS total_direct_orders
   FROM
      nekt_raw.shopee_ads_product_campaigns apc
      LEFT JOIN nekt_raw.shopee_ads_daily_product_campaign_performance adp 
         ON apc.campaign_id = adp.campaign_id
   WHERE
      DATE(adp.date) >= CURRENT_DATE - INTERVAL '30' DAY
   GROUP BY
      apc.campaign_id,
      apc.common_info.ad_name,
      apc.common_info.ad_type,
      apc.common_info.campaign_status,
      apc.common_info.campaign_placement
)
SELECT
   campaign_name,
   ad_type,
   campaign_status,
   campaign_placement,
   total_impressions,
   total_clicks,
   ROUND(total_spend, 2) AS total_spend,
   ROUND(total_broad_gmv, 2) AS broad_gmv,
   total_broad_orders AS broad_orders,
   ROUND(total_direct_gmv, 2) AS direct_gmv,
   total_direct_orders AS direct_orders,
   ROUND(total_broad_gmv / NULLIF(total_spend, 0), 2) AS broad_roas,
   ROUND(total_direct_gmv / NULLIF(total_spend, 0), 2) AS direct_roas
FROM
   campaign_metrics
ORDER BY
   total_spend DESC
campaign_namead_typecampaign_statuscampaign_placementtotal_impressionstotal_clickstotal_spendbroad_gmvbroad_ordersdirect_gmvdirect_ordersbroad_roasdirect_roas
Best Sellers Q4autoongoingall245,6708,9201,784.0012,450.001568,920.00986.985.00
Flash Sale Promomanualongoingsearch189,4506,2341,246.809,870.001247,650.00897.926.14
New Arrivalsautoscheduleddiscovery98,3403,456691.204,560.00673,210.00456.604.64

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.
Shopee Ads provides two types of conversion attribution:
  • Broad Attribution: Tracks purchases of ANY product from your shop within 7 days of an ad click
  • Direct Attribution: Tracks purchases of the ADVERTISED product only within 7 days
Use broad metrics for overall campaign impact, direct metrics for product-specific ROI.
The connector supports incremental sync for:
  • Products: Uses update_time as the replication key
  • Orders: Uses update_time as the replication key
  • Ads Daily Performance: Uses date as the replication key
  • Daily Shop Performance: Uses report_date as the replication key
For products and orders, only records modified since the last sync will be extracted.
Shopee data contains nested structures. When querying:
  • Use UNNEST to flatten arrays (e.g., item_list in orders)
  • Access nested objects using dot notation (e.g., common_info.ad_name)
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