{
  "openapi": "3.0.1",
  "info": {
    "title": "Blibli Best Sellers Tracker",
    "description": "Memantau daftar \"Paling Laris\" Blibli per kategori dan melacak produk yang masuk, naik, turun, atau keluar dari daftar antar-run.",
    "version": "1.0",
    "x-build-id": "tbZ0pWZSYbcZ76358"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fanndev~blibli-best-sellers-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fanndev-blibli-best-sellers-tracker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/fanndev~blibli-best-sellers-tracker/runs": {
      "post": {
        "operationId": "runs-sync-fanndev-blibli-best-sellers-tracker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/fanndev~blibli-best-sellers-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-fanndev-blibli-best-sellers-tracker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "categories": {
            "title": "Kategori yang dipantau",
            "type": "array",
            "description": "URL kategori Blibli atau kodenya langsung, mis. https://www.blibli.com/c3/memory-card/ME-1000006 atau ME-1000006. Daftar \"Paling Laris\" ada di kategori level 3 (sub-sub-kategori).",
            "items": {
              "type": "string"
            }
          },
          "discoverCategories": {
            "title": "Telusuri kategori otomatis",
            "type": "boolean",
            "description": "Menelusuri sendiri pohon kategori Blibli sampai level target, bukan memakai daftar di atas. Perhatikan \"Maksimal kategori\" — tiap kategori berarti ratusan permintaan.",
            "default": false
          },
          "rootCategories": {
            "title": "Mulai penelusuran dari",
            "type": "array",
            "description": "Kode kategori tempat penelusuran dimulai, mis. 53270 (Komputer & Gaming). Kosongkan untuk mulai dari seluruh 14 kategori utama Blibli. Hanya dipakai kalau penelusuran otomatis aktif.",
            "items": {
              "type": "string"
            }
          },
          "categoryLevel": {
            "title": "Level kategori target",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Kedalaman kategori yang dipindai. Level 3 adalah kategori penjualan yang punya daftar \"Paling Laris\".",
            "default": 3
          },
          "maxCategories": {
            "title": "Maksimal kategori per run",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Pembatas biaya. Tiap kategori memerlukan sekitar \"Kandidat per kategori\" permintaan halaman produk.",
            "default": 10
          },
          "candidatesPerCategory": {
            "title": "Kandidat per kategori",
            "minimum": 20,
            "maximum": 2000,
            "type": "integer",
            "description": "Berapa produk terlaris di kategori yang diperiksa peringkatnya. Peringkat \"Paling Laris\" tidak sejalan dengan jumlah terjual, jadi produk berperingkat bisa berada cukup dalam. Pengujian menunjukkan 300 memulihkan daftar secara utuh; 100 masih menyisakan lubang.",
            "default": 300
          },
          "maxConcurrency": {
            "title": "Permintaan paralel maksimum",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Turunkan kalau Blibli mulai memblokir; naikkan untuk menyelesaikan lebih cepat saat memakai proxy.",
            "default": 10
          },
          "maxRunSeconds": {
            "title": "Batas waktu pemindaian",
            "minimum": 30,
            "type": "integer",
            "description": "Pemindaian dihentikan dengan rapi setelah sekian detik, lalu hasil yang sudah terkumpul tetap disimpan (kategori yang belum tuntas ditandai leaderboardComplete=false). Kosongkan untuk tanpa batas. Terlepas dari isian ini, actor selalu berhenti sendiri sebelum timeout run tercapai supaya hasil tidak hilang."
          },
          "trackChanges": {
            "title": "Lacak perubahan antar-run",
            "type": "boolean",
            "description": "Membandingkan hasil dengan run sebelumnya untuk memberi status MASUK / NAIK / TURUN / TETAP / KELUAR pada tiap produk. Matikan kalau Anda hanya ingin potret sesaat.",
            "default": true
          },
          "stateStoreName": {
            "title": "Nama penyimpanan snapshot",
            "type": "string",
            "description": "Key-value store bernama tempat snapshot run terakhir disimpan. Run terjadwal dengan nama yang sama akan saling menyambung. Pakai nama berbeda untuk memisahkan pemantauan yang tidak berkaitan.",
            "default": "blibli-best-sellers-state"
          },
          "watchMerchantCodes": {
            "title": "Kode penjual yang disorot",
            "type": "array",
            "description": "Produk milik kode penjual ini ditandai isWatched=true di hasil, mis. BLL-70058. Berguna untuk menyaring posisi toko Anda sendiri di antara pesaing.",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Sangat disarankan: proxy residensial. Blibli menolak semua IP datacenter dan sebagian IP residensial secara acak (actor otomatis ganti IP). Pada pengujian, residensial tanpa negara lebih jarang ditolak dibanding residensial Indonesia, jadi itu yang dijadikan default.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}