> ## Documentation Index
> Fetch the complete documentation index at: https://docs.keyapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Shop Products (Analytics)

> Retrieve the analytics-enriched product list for a TikTok Shop seller, with historical sales data and performance metrics for each product.

<div className="inline-flex items-center gap-2 px-4 py-2 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg">
  <span className="text-base">🪙</span>
  <span className="text-sm font-medium text-yellow-900 dark:text-yellow-100"><span className="font-semibold">1 credit</span><span className="text-yellow-700 dark:text-yellow-300 ml-1">per request</span></span>
</div>

## Copy for AI

<div className="my-6 rounded-xl border border-gray-200 bg-gray-50 p-5 dark:border-gray-800 dark:bg-gray-900/40">
  <div className="min-w-0">
    <p className="text-base font-semibold text-gray-900 dark:text-gray-100">🤖 Why Code When AI Can Do It For You?</p>
    <p className="mt-1 text-sm text-gray-700 dark:text-gray-300">Stop writing code like it's 1970! Let AI do the heavy lifting - click the sparkles to copy a perfectly formatted prompt for ChatGPT, Claude, or your favorite AI assistant.</p>
  </div>

  <div className="mt-4">
    <button
      type="button"
      className="inline-flex items-center gap-2 rounded-md border border-emerald-300 bg-emerald-50 px-3 py-2 text-sm font-medium text-emerald-800 hover:bg-emerald-100 dark:border-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-100 dark:hover:bg-emerald-900/50"
      onClick={() => navigator.clipboard.writeText(`I want to make an API call to https://api.keyapi.ai/v1/tiktok/shop/products/analytics.

Please help me write code to make this API call and handle the response appropriately. Include error handling and best practices.

Here are the details:

Endpoint: GET https://api.keyapi.ai/v1/tiktok/shop/products/analytics

Description: Retrieve the analytics-enriched product list for a TikTok Shop seller, with historical sales data and performance metrics for each product.

Required Headers:
--header 'Authorization: Bearer <YOUR_API_KEY>'

Parameters:
- seller_id (Required): Shop Id
- seller_product_sort_field (Optional): List sorting enumeration.1=total_sale_cnt 2=total_sale_gmv_amt 3=spu_avg_price 4=total_sale_7d_cnt 5=total_sale_gmv_7d_amt
- sort_type (Optional): Sort order 0=asc 1=desc
- page_num (Required): Page numbers start from 1 and go up to a maximum of 100,000.
- page_size (Required): The maximum number of pages is 10.

Example Response:
{
"code": 0,
"message": "success",
"data": [
{
  "category_id": "801928",
  "category_l2_id": "986760",
  "category_l3_id": "926856",
  "cover_url": "[{ \"url\":\"https://echosell-images.tos-ap-southeast-1.volces.com/product-cover/269/1729514239896361740_3.jpeg\",\"index\":3},{ \"url\":\"https://echosell-images.tos-ap-southeast-1.volces.com/product-cover/269/1729514239896361740_2.jpeg\",\"index\":2},{ \"url\":\"https://echosell-images.tos-ap-southeast-1.volces.com/product-cover/269/1729514239896361740_0.jpeg\",\"index\":0},{ \"url\":\"https://echosell-images.tos-ap-southeast-1.volces.com/product-cover/269/1729514239896361740_1.jpeg\",\"index\":1}]",
  "desc_detail": "[{\"type\":\"text\",\"text\":\"Hinweis: AGB, Widerrufsbelehrung, Datenschutzerklärung und Impressum können Sie im Checkout im Feld „Deine Bestellung“ durch Klick auf unseren Verkäufernamen einsehen.\"},{\"type\":\"text\",\"text\":\" \"},{\"type\":\"text\",\"text\":\"Noch nie war Persisch so anschaulich - das Persisch Wörterbuch mit Bildern!\"},{\"type\":\"ul\",\"content\":[\"Alle Wörter, die Sie brauchen: 16.000 Begriffe und Redewendungen in zwei Sprachen aus den wichtigsten Lebensbereichen.\",\"Neu: Jetzt zusätzlich mit zahlreichen kulturspezifischen Begriffen.\",\"Richtig aussprechen: Mit Lautschrift für jedes persische Wort.\",\"Gesehen und einfach gemerkt: Durch Bilder bleibt der Wortschatz besser haften.\",\"Leicht gefunden: Im zweisprachigen Register schnell das richtige Wort n
... (truncated)`)}
    >
      <span>✨</span>
      <span>Copy for AI</span>
    </button>
  </div>
</div>


## OpenAPI

````yaml en/tiktok.openapi.json GET /v1/tiktok/shop/products/analytics
openapi: 3.0.1
info:
  title: Tiktok API english documentation
  description: >-
    The english reference documentation of the Tiktok API includes the
    interface's purpose, parameter description, response status, and sample
    structure.
  version: 1.0.0
servers:
  - url: https://api.keyapi.ai
    description: Production
security: []
tags:
  - name: TikTok Influencer
  - name: TikTok Shop
  - name: TikTok Content
  - name: TikTok Intelligence
paths:
  /v1/tiktok/shop/products/analytics:
    get:
      tags:
        - TikTok Shop
      summary: Shop Products (Analytics)
      description: >-
        Retrieve the analytics-enriched product list for a TikTok Shop seller,
        with historical sales data and performance metrics for each product.
      operationId: get_api_v3_echotik_seller_product_list
      parameters:
        - name: seller_id
          in: query
          description: Shop Id
          required: true
          schema:
            type: string
        - name: seller_product_sort_field
          in: query
          description: >-
            List sorting enumeration.1=total_sale_cnt 2=total_sale_gmv_amt
            3=spu_avg_price 4=total_sale_7d_cnt 5=total_sale_gmv_7d_amt
          required: false
          schema:
            type: integer
        - name: sort_type
          in: query
          description: Sort order 0=asc 1=desc
          required: false
          schema:
            type: integer
        - name: page_num
          in: query
          description: Page numbers start from 1 and go up to a maximum of 100,000.
          required: true
          schema:
            type: integer
        - name: page_size
          in: query
          description: The maximum number of pages is 10.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  message:
                    type: string
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        category_id:
                          type: string
                        category_l2_id:
                          type: string
                        category_l3_id:
                          type: string
                        cover_url:
                          type: string
                        desc_detail:
                          type: string
                        discount:
                          type: string
                        first_crawl_dt:
                          type: integer
                        free_shipping:
                          type: integer
                        is_s_shop:
                          type: integer
                        max_price:
                          type: number
                        min_price:
                          type: number
                        off_mark:
                          type: integer
                        product_commission_rate:
                          type: integer
                        product_id:
                          type: string
                        product_name:
                          type: string
                        product_rating:
                          type: number
                        region:
                          type: string
                        review_count:
                          type: integer
                        sale_props:
                          type: string
                        sales_flag:
                          type: integer
                        sales_trend_flag:
                          type: integer
                        seller_id:
                          type: string
                        skus:
                          type: string
                        spu_avg_price:
                          type: number
                        total_ifl_cnt:
                          type: integer
                        total_ifl_live_15d_cnt:
                          type: integer
                        total_ifl_live_1d_cnt:
                          type: integer
                        total_ifl_live_30d_cnt:
                          type: integer
                        total_ifl_live_60d_cnt:
                          type: integer
                        total_ifl_live_7d_cnt:
                          type: integer
                        total_ifl_live_90d_cnt:
                          type: integer
                        total_ifl_video_15d_cnt:
                          type: integer
                        total_ifl_video_1d_cnt:
                          type: integer
                        total_ifl_video_30d_cnt:
                          type: integer
                        total_ifl_video_60d_cnt:
                          type: integer
                        total_ifl_video_7d_cnt:
                          type: integer
                        total_ifl_video_90d_cnt:
                          type: integer
                        total_live_15d_cnt:
                          type: integer
                        total_live_1d_cnt:
                          type: integer
                        total_live_30d_cnt:
                          type: integer
                        total_live_60d_cnt:
                          type: integer
                        total_live_7d_cnt:
                          type: integer
                        total_live_90d_cnt:
                          type: integer
                        total_live_cnt:
                          type: integer
                        total_live_sale_15d_cnt:
                          type: integer
                        total_live_sale_1d_cnt:
                          type: integer
                        total_live_sale_30d_cnt:
                          type: integer
                        total_live_sale_60d_cnt:
                          type: integer
                        total_live_sale_7d_cnt:
                          type: integer
                        total_live_sale_90d_cnt:
                          type: integer
                        total_live_sale_gmv_15d_amt:
                          type: integer
                        total_live_sale_gmv_1d_amt:
                          type: integer
                        total_live_sale_gmv_30d_amt:
                          type: integer
                        total_live_sale_gmv_60d_amt:
                          type: integer
                        total_live_sale_gmv_7d_amt:
                          type: integer
                        total_live_sale_gmv_90d_amt:
                          type: integer
                        total_sale_15d_cnt:
                          type: integer
                        total_sale_1d_cnt:
                          type: integer
                        total_sale_30d_cnt:
                          type: integer
                        total_sale_60d_cnt:
                          type: integer
                        total_sale_7d_cnt:
                          type: integer
                        total_sale_90d_cnt:
                          type: integer
                        total_sale_cnt:
                          type: integer
                        total_sale_gmv_15d_amt:
                          type: integer
                        total_sale_gmv_1d_amt:
                          type: integer
                        total_sale_gmv_30d_amt:
                          type: integer
                        total_sale_gmv_60d_amt:
                          type: number
                        total_sale_gmv_7d_amt:
                          type: integer
                        total_sale_gmv_90d_amt:
                          type: number
                        total_sale_gmv_amt:
                          type: number
                        total_video_15d_cnt:
                          type: integer
                        total_video_1d_cnt:
                          type: integer
                        total_video_30d_cnt:
                          type: integer
                        total_video_60d_cnt:
                          type: integer
                        total_video_7d_cnt:
                          type: integer
                        total_video_90d_cnt:
                          type: integer
                        total_video_cnt:
                          type: integer
                        total_views_15d_cnt:
                          type: integer
                        total_views_1d_cnt:
                          type: integer
                        total_views_30d_cnt:
                          type: integer
                        total_views_60d_cnt:
                          type: integer
                        total_views_7d_cnt:
                          type: integer
                        total_views_90d_cnt:
                          type: integer
                        total_views_cnt:
                          type: integer
                    title: >-
                      Please refer to the product list API for descriptions of
                      the returned fields.
                  requestId:
                    type: string
                required:
                  - code
                  - message
                  - data
                  - requestId
                example:
                  code: 0
                  message: success
                  data:
                    - category_id: '801928'
                      category_l2_id: '986760'
                      category_l3_id: '926856'
                      cover_url: >-
                        [{
                        "url":"https://echosell-images.tos-ap-southeast-1.volces.com/product-cover/269/1729514239896361740_3.jpeg","index":3},{
                        "url":"https://echosell-images.tos-ap-southeast-1.volces.com/product-cover/269/1729514239896361740_2.jpeg","index":2},{
                        "url":"https://echosell-images.tos-ap-southeast-1.volces.com/product-cover/269/1729514239896361740_0.jpeg","index":0},{
                        "url":"https://echosell-images.tos-ap-southeast-1.volces.com/product-cover/269/1729514239896361740_1.jpeg","index":1}]
                      desc_detail: >-
                        [{"type":"text","text":"Hinweis: AGB,
                        Widerrufsbelehrung, Datenschutzerklärung und Impressum
                        können Sie im Checkout im Feld „Deine Bestellung“ durch
                        Klick auf unseren Verkäufernamen
                        einsehen."},{"type":"text","text":"
                        "},{"type":"text","text":"Noch nie war Persisch so
                        anschaulich - das Persisch Wörterbuch mit
                        Bildern!"},{"type":"ul","content":["Alle Wörter, die Sie
                        brauchen: 16.000 Begriffe und Redewendungen in zwei
                        Sprachen aus den wichtigsten Lebensbereichen.","Neu:
                        Jetzt zusätzlich mit zahlreichen kulturspezifischen
                        Begriffen.","Richtig aussprechen: Mit Lautschrift für
                        jedes persische Wort.","Gesehen und einfach gemerkt:
                        Durch Bilder bleibt der Wortschatz besser
                        haften.","Leicht gefunden: Im zweisprachigen Register
                        schnell das richtige Wort nachschlagen.","Für Anfänger
                        (A1) und Fortgeschrittene (B2)"]}]
                      discount: '-'
                      first_crawl_dt: 20250702
                      free_shipping: 1
                      is_s_shop: 0
                      max_price: 15.08
                      min_price: 15.08
                      off_mark: 0
                      product_commission_rate: 0
                      product_id: '1729514239896361740'
                      product_name: >-
                        PONS Bildwörterbuch Persisch / 16.000 Wörter und
                        Wendungen mit kulturspezifischem Sonderteil /
                        Taschenbuch / Kartoniert Broschiert / Deutsch / 2021 /
                        PONS / EAN 9783125162426
                      product_rating: 4.5
                      region: DE
                      review_count: 8
                      sale_props: >-
                        [{"prop_name":"Spezifikation","has_image":"false","prop_id":"7041375622794364677","sale_prop_values":[{"image":"","prop_value_id":"7493847507764741930","prop_value":"Standard"}]}]
                      sales_flag: 1
                      sales_trend_flag: 0
                      seller_id: '7496107241529510668'
                      skus: >-
                        [{"sku_id":"1729514246559079180","sale_prop_value_ids":"7493847507764741930","real_price":{"price_str":"12,95
                        €","price_val":"12.95","currency":"EUR"}}]
                      spu_avg_price: 15.08
                      total_ifl_cnt: 8
                      total_ifl_live_15d_cnt: 0
                      total_ifl_live_1d_cnt: 0
                      total_ifl_live_30d_cnt: 0
                      total_ifl_live_60d_cnt: 0
                      total_ifl_live_7d_cnt: 0
                      total_ifl_live_90d_cnt: 0
                      total_ifl_video_15d_cnt: 0
                      total_ifl_video_1d_cnt: 0
                      total_ifl_video_30d_cnt: 0
                      total_ifl_video_60d_cnt: 0
                      total_ifl_video_7d_cnt: 0
                      total_ifl_video_90d_cnt: 5
                      total_live_15d_cnt: 0
                      total_live_1d_cnt: 0
                      total_live_30d_cnt: 0
                      total_live_60d_cnt: 0
                      total_live_7d_cnt: 0
                      total_live_90d_cnt: 0
                      total_live_cnt: 0
                      total_live_sale_15d_cnt: 0
                      total_live_sale_1d_cnt: 0
                      total_live_sale_30d_cnt: 0
                      total_live_sale_60d_cnt: 0
                      total_live_sale_7d_cnt: 0
                      total_live_sale_90d_cnt: 0
                      total_live_sale_gmv_15d_amt: 0
                      total_live_sale_gmv_1d_amt: 0
                      total_live_sale_gmv_30d_amt: 0
                      total_live_sale_gmv_60d_amt: 0
                      total_live_sale_gmv_7d_amt: 0
                      total_live_sale_gmv_90d_amt: 0
                      total_sale_15d_cnt: 0
                      total_sale_1d_cnt: 0
                      total_sale_30d_cnt: 0
                      total_sale_60d_cnt: 16
                      total_sale_7d_cnt: 0
                      total_sale_90d_cnt: 76
                      total_sale_cnt: 97
                      total_sale_gmv_15d_amt: 0
                      total_sale_gmv_1d_amt: 0
                      total_sale_gmv_30d_amt: 0
                      total_sale_gmv_60d_amt: 241.53
                      total_sale_gmv_7d_amt: 0
                      total_sale_gmv_90d_amt: 1142.17
                      total_sale_gmv_amt: 1460.08
                      total_video_15d_cnt: 0
                      total_video_1d_cnt: 0
                      total_video_30d_cnt: 0
                      total_video_60d_cnt: 0
                      total_video_7d_cnt: 0
                      total_video_90d_cnt: 5
                      total_video_cnt: 8
                      total_views_15d_cnt: 0
                      total_views_1d_cnt: 0
                      total_views_30d_cnt: 0
                      total_views_60d_cnt: 0
                      total_views_7d_cnt: 0
                      total_views_90d_cnt: 339582
                      total_views_cnt: 344086
                  requestId: a90a1c99-9e90-4a5b-9b1c-7fa1bf11b2cc
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 400
                  data: null
                  message: 'Missing required parameter: handle'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 401
                  data: null
                  message: apiKey is null
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 402
                  data: null
                  message: apiKey quota is not enough
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 429
                  data: null
                  message: qps limit exceeded
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 500
                  data: null
                  message: Internal server error
      deprecated: false
      security:
        - JWT Bearer: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.keyapi.ai/v1/tiktok/shop/products/analytics' \
              --header 'Authorization: Bearer <YOUR_API_KEY>'
        - lang: python
          label: Python
          source: |-
            import requests

            response = requests.get(
                'https://api.keyapi.ai/v1/tiktok/shop/products/analytics',
                params={},
                headers={'Authorization': 'Bearer <YOUR_API_KEY>'}
            )
            print(response.json())
        - lang: javascript
          label: JavaScript
          source: >-
            const response = await
            fetch('https://api.keyapi.ai/v1/tiktok/shop/products/analytics',
              {
                method: 'GET',
                headers: { 'Authorization': 'Bearer <YOUR_API_KEY>' }
              }
            );

            const data = await response.json();

            console.log(data);
components:
  securitySchemes:
    JWT Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |-
        API key for authentication. Format: `sk_live_xxxxxxxxxxxxx`
        Get your API key from the [Dashboard](http://keyapi.ai/app/dashboard).

````