{
  "data": {
    "id": "0xhqWRRyaZ3YnEnaW",
    "actId": "bOmVHQGZm6vdyV601",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-10-25T17:23:11.347Z",
    "finishedAt": "2026-10-25T17:23:16.355Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 4920,
      "runTimeSecs": 4.92,
      "computeUnits": 0.0054666666666666665,
      "imageSizeBytes": 358501376
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Tokopedia Scraper Input\",\n  \"description\": \"Search Tokopedia, browse categories, or fetch product details.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to scrape.\",\n      \"editor\": \"select\",\n      \"enumTitles\": [\n        \"Search products\",\n        \"Browse a category\",\n        \"Get product details by URL\",\n        \"Top products (legacy)\"\n      ],\n      \"prefill\": \"search\",\n      \"enumSuggestedValues\": [\n        \"search\",\n        \"categoryBrowse\",\n        \"productDetails\",\n        \"topProducts\"\n      ]\n    },\n    \"searchQueries\": {\n      \"title\": \"Search queries\",\n      \"type\": \"array\",\n      \"description\": \"Keywords to search (mode=search). Example: smartphone, sepatu lari, kopi arabika.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": [\n        \"smartphone\"\n      ]\n    },\n    \"searchUrls\": {\n      \"title\": \"Search URLs (mode=search)\",\n      \"type\": \"array\",\n      \"description\": \"Tokopedia search or /find/ URLs. Filters and sort already in the URL are applied.\",\n      \"editor\": \"stringList\",\n      \"default\": []\n    },\n    \"categoryUrls\": {\n      \"title\": \"Category URLs (mode=categoryBrowse)\",\n      \"type\": \"array\",\n      \"description\": \"Tokopedia category URLs such as https://www.tokopedia.com/p/handphone-tablet/handphone.\",\n      \"editor\": \"stringList\",\n      \"default\": []\n    },\n    \"categoryIds\": {\n      \"title\": \"Category IDs (mode=categoryBrowse)\",\n      \"type\": \"array\",\n      \"description\": \"Numeric Tokopedia category IDs, for example 24 for Handphone.\",\n      \"editor\": \"stringList\",\n      \"default\": []\n    },\n    \"productUrls\": {\n      \"title\": \"Product URLs (mode=productDetails)\",\n      \"type\": \"array\",\n      \"description\": \"Tokopedia product page URLs. Numeric IDs alone are not supported.\",\n      \"editor\": \"stringList\",\n      \"default\": []\n    },\n    \"sortBy\": {\n      \"title\": \"Sort by\",\n      \"type\": \"string\",\n      \"description\": \"Result order.\",\n      \"editor\": \"select\",\n      \"enumTitles\": [\n        \"Most relevant\",\n        \"Newest\",\n        \"Price: low to high\",\n        \"Price: high to low\",\n        \"Most reviewed\",\n        \"Best seller (legacy)\",\n        \"Price ascending (legacy)\",\n        \"Price descending (legacy)\"\n      ],\n      \"default\": \"relevance\",\n      \"prefill\": \"relevance\",\n      \"enumSuggestedValues\": [\n        \"relevance\",\n        \"newest\",\n        \"price_low\",\n        \"price_high\",\n        \"most_reviewed\",\n        \"best_seller\",\n        \"price_asc\",\n        \"price_desc\"\n      ]\n    },\n    \"priceMin\": {\n      \"title\": \"Min price (IDR)\",\n      \"type\": \"integer\",\n      \"description\": \"Minimum price in Indonesian Rupiah.\",\n      \"minimum\": 0,\n      \"maximum\": 1000000000\n    },\n    \"priceMax\": {\n      \"title\": \"Max price (IDR)\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum price in Indonesian Rupiah.\",\n      \"minimum\": 0,\n      \"maximum\": 1000000000\n    },\n    \"condition\": {\n      \"title\": \"Condition\",\n      \"type\": \"string\",\n      \"description\": \"Filter by product condition.\",\n      \"editor\": \"select\",\n      \"enumTitles\": [\n        \"Any condition\",\n        \"New\",\n        \"Used\",\n        \"New (legacy code 1)\",\n        \"Used (legacy code 2)\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\",\n      \"enumSuggestedValues\": [\n        \"any\",\n        \"new\",\n        \"used\",\n        \"1\",\n        \"2\"\n      ]\n    },\n    \"shopType\": {\n      \"title\": \"Shop type\",\n      \"type\": \"string\",\n      \"description\": \"Filter by Tokopedia shop type.\",\n      \"editor\": \"select\",\n      \"enumTitles\": [\n        \"Any shop\",\n        \"Mall\",\n        \"Power Shop\",\n        \"Mall (legacy code 2)\",\n        \"Power Shop (legacy code 3)\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\",\n      \"enumSuggestedValues\": [\n        \"any\",\n        \"mall\",\n        \"power_shop\",\n        \"2\",\n        \"3\"\n      ]\n    },\n    \"minRating\": {\n      \"title\": \"Minimum rating\",\n      \"type\": \"string\",\n      \"description\": \"Only show products rated 4 or higher.\",\n      \"editor\": \"select\",\n      \"enumTitles\": [\n        \"Any rating\",\n        \"4 stars and up\",\n        \"4.5 stars (legacy)\",\n        \"4+ (legacy library value)\",\n        \"3 stars (legacy, not supported)\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\",\n      \"enumSuggestedValues\": [\n        \"any\",\n        \"4\",\n        \"4.5\",\n        \"4,5\",\n        \"3\"\n      ]\n    },\n    \"city\": {\n      \"title\": \"Seller location\",\n      \"type\": \"string\",\n      \"description\": \"Filter by a common seller location. Leave Any for all of Indonesia.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"DKI Jakarta\",\n        \"Jabodetabek\",\n        \"Bandung\",\n        \"Medan\",\n        \"Surabaya\",\n        \"Bali\",\n        \"Banten\",\n        \"D.I. Yogyakarta\",\n        \"Semarang\",\n        \"Makassar\",\n        \"Palembang\",\n        \"Denpasar\",\n        \"Bekasi\",\n        \"Tangerang\",\n        \"Depok\",\n        \"Bogor\",\n        \"Jakarta Pusat\",\n        \"Jakarta Selatan\",\n        \"Jakarta Barat\",\n        \"Jakarta Utara\",\n        \"Jakarta Timur\"\n      ],\n      \"enumTitles\": [\n        \"Any location\",\n        \"DKI Jakarta\",\n        \"Jabodetabek\",\n        \"Bandung\",\n        \"Medan\",\n        \"Surabaya\",\n        \"Bali\",\n        \"Banten\",\n        \"Yogyakarta\",\n        \"Semarang\",\n        \"Makassar\",\n        \"Palembang\",\n        \"Denpasar\",\n        \"Bekasi\",\n        \"Tangerang\",\n        \"Depok\",\n        \"Bogor\",\n        \"Jakarta Pusat\",\n        \"Jakarta Selatan\",\n        \"Jakarta Barat\",\n        \"Jakarta Utara\",\n        \"Jakarta Timur\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"cityId\": {\n      \"title\": \"City ID (advanced)\",\n      \"type\": \"string\",\n      \"description\": \"Exact Tokopedia city ID(s), comma-separated. Overrides the location dropdown.\",\n      \"editor\": \"textfield\"\n    },\n    \"latestProductDays\": {\n      \"title\": \"Listed within\",\n      \"type\": \"string\",\n      \"description\": \"Only show products added recently.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"7\",\n        \"14\",\n        \"30\",\n        \"90\"\n      ],\n      \"enumTitles\": [\n        \"Any time\",\n        \"Last 7 days\",\n        \"Last 14 days\",\n        \"Last 30 days\",\n        \"Last 90 days\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"discountOnly\": {\n      \"title\": \"Discounted products only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only show products currently on discount.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"codOnly\": {\n      \"title\": \"Cash on delivery only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only show products that offer cash on delivery.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"freeShippingOnly\": {\n      \"title\": \"Extra free shipping only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only show products with the free-shipping offer.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"preorder\": {\n      \"title\": \"Availability\",\n      \"type\": \"string\",\n      \"description\": \"Filter by ready stock or preorder.\",\n      \"editor\": \"select\",\n      \"enumTitles\": [\n        \"Any availability\",\n        \"Ready stock\",\n        \"Preorder\",\n        \"Preorder (legacy)\",\n        \"Ready stock (legacy)\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\",\n      \"enumSuggestedValues\": [\n        \"any\",\n        \"ready_stock\",\n        \"preorder\",\n        \"true\",\n        \"false\"\n      ]\n    },\n    \"includeDetails\": {\n      \"title\": \"Include product details\",\n      \"type\": \"boolean\",\n      \"description\": \"Add condition, stock, variants, description, and rating breakdown to search and category results. Slower and makes one extra request per product.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of products to return.\",\n      \"minimum\": 1,\n      \"maximum\": 6000,\n      \"default\": 100,\n      \"prefill\": 3\n    }\n  }\n}",
    "readme": "# Tokopedia Search, Category & Price Drop Scraper\n\nTokopedia is Indonesia's largest marketplace, and this actor turns its public product pages into a clean dataset. Search by keyword or search URL, browse a category, or paste product URLs to collect prices in Rupiah, discounts, ratings, sold counts, seller details, condition, stock, variants, and images. No account, login, or proxy setup is needed.\n\n## What this actor does\n\n- **Search products** by keyword or a Tokopedia search/find URL, with Tokopedia's real filters and five real sort orders.\n- **Browse categories** from a `/p/...` URL or a numeric category ID.\n- **Fetch product details** from Tokopedia product URLs: condition, stock, weight, minimum order, variants and child SKUs, description, rating breakdown, and campaign dates.\n- **Price-drop view:** every record exposes the current price, original price, discount percentage, discount amount, and a `priceDropped` flag. Tokopedia does not publish historical prices, so this is a current-snapshot view rather than a price history.\n- **Overview or detail:** keep search results fast, or enable `includeDetails` to enrich each row with the full product page.\n- Empty fields are omitted from each record instead of being returned as null or blank.\n\n## Output per product\n\n| Field | Description |\n|---|---|\n| `productId` | Tokopedia product ID |\n| `name` | Product name |\n| `productUrl` | Direct product page URL |\n| `price`, `priceText` | Current price in IDR, numeric and as displayed |\n| `originalPrice`, `originalPriceText` | Pre-discount price when shown |\n| `discountPercent`, `discountAmount` | Current discount |\n| `priceDropped` | True when the original price is above the current price |\n| `currency` | Always `IDR` |\n| `rating`, `reviewCount` | Rating and, in detail mode, review count |\n| `sold`, `soldText` | Units sold, parsed into a number plus the source label |\n| `shop`, `shopId`, `shopUrl`, `shopLocation` | Seller identity and location |\n| `shopTier` | `mall`, `power_shop`, or `regular` when known |\n| `imageUrl`, `imageUrlOriginal` | Main image plus the signed source URL. Most normalized links are durable; a minority stay on a signed host and expire. |\n| `categoryId`, `categoryName`, `categoryPath` | Category identity and breadcrumb path |\n| `labels` | Promotional and service labels shown on the card |\n| `badge` | Official/Power/Mall badge when one is visible |\n| `preorder` | Whether the listing is a preorder |\n| `condition`, `conditionText` | NEW/USED and its local display text (detail) |\n| `status` | Product status such as ACTIVE (detail) |\n| `stock`, `minOrder`, `maxOrder` | Availability and order limits (detail) |\n| `weight`, `weightUnit` | Shipping weight (detail) |\n| `isVariant`, `variants`, `variantChildren` | Variation axes and child SKUs with their prices and stock (detail) |\n| `description` | Seller description (detail) |\n| `specifications` | Best-effort key/value specifications parsed from the description (detail) |\n| `ratingBreakdown` | Per-star rating counts and percentages (detail) |\n| `imageUrls` | Full gallery of image URLs (detail; mostly durable) |\n| `categoryBreadcrumb` | Category path with names and URLs (detail) |\n| `campaignType`, `campaignEndsAt`, `campaignDiscountPercent`, `campaignStockSoldPercent` | Active campaign details when present (detail) |\n| `mode`, `searchQuery`, `position`, `scrapedAt` | Provenance: mode, query, result position, and scrape time |\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | – | `search`, `categoryBrowse`, or `productDetails` |\n| `searchQueries` | array | `[]` (prefill `[\"smartphone\"]`) | Keywords to search (mode=search) |\n| `searchUrls` | array | `[]` | Tokopedia search or `/find/` URLs (mode=search) |\n| `categoryUrls` | array | `[]` | Tokopedia category URLs (mode=categoryBrowse) |\n| `categoryIds` | array | `[]` | Numeric category IDs (mode=categoryBrowse) |\n| `productUrls` | array | `[]` | Product page URLs (mode=productDetails) |\n| `sortBy` | string | `relevance` | `relevance`, `newest`, `price_low`, `price_high`, `most_reviewed` |\n| `priceMin`, `priceMax` | integer | – | Price range in IDR |\n| `condition` | string | `any` | `any`, `new`, `used` |\n| `shopType` | string | `any` | `any`, `mall`, `power_shop` |\n| `minRating` | string | `any` | `any` or `4` |\n| `city` | string | `any` | Common seller locations, or `any` |\n| `cityId` | string | – | Exact Tokopedia city ID(s), comma-separated |\n| `latestProductDays` | string | `any` | `any`, `7`, `14`, `30`, `90` |\n| `discountOnly` | boolean | `false` | Only discounted products |\n| `codOnly` | boolean | `false` | Only cash-on-delivery products |\n| `freeShippingOnly` | boolean | `false` | Only products with the free-shipping offer |\n| `preorder` | string | `any` | `any`, `ready_stock`, `preorder` |\n| `includeDetails` | boolean | `false` | Enrich search/category rows from each product page |\n| `maxItems` | integer | `100` | Maximum products, 1–6000 |\n\n### Example: search with filters\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"sepatu lari\"],\n  \"sortBy\": \"price_low\",\n  \"priceMin\": 100000,\n  \"priceMax\": 500000,\n  \"shopType\": \"mall\",\n  \"minRating\": \"4\",\n  \"maxItems\": 50\n}\n```\n\n### Example: browse a category\n\n```json\n{\n  \"mode\": \"categoryBrowse\",\n  \"categoryUrls\": [\"https://www.tokopedia.com/p/handphone-tablet/handphone\"],\n  \"sortBy\": \"newest\",\n  \"maxItems\": 100\n}\n```\n\n### Example: full product details\n\n```json\n{\n  \"mode\": \"productDetails\",\n  \"productUrls\": [\n    \"https://www.tokopedia.com/pxofficialindonesia/kabel-data-usb-type-c-ultra-fast-charging-pd240w-charger-nylon-braided-laptop-tablet-smartphone-samsung-oppo-huawei-vivo-px-fcc-2m-1736805261334316721\"\n  ]\n}\n```\n\n## Use cases\n\n- **Price and discount monitoring** — compare current prices, discounts, and campaign end dates across a category or keyword.\n- **Seller intelligence** — compare shop type, location, sold counts, and ratings across merchants.\n- **Assortment planning** — browse a category to see the current product mix and pricing ladder.\n- **Product research** — collect variants, child SKUs, stock, weight, condition, and descriptions for a shortlist.\n- **Marketplace analytics** — feed clean product records into dashboards, spreadsheets, or a database.\n\n## FAQ\n\n**Do I need a Tokopedia account or login?**\nNo. The actor reads public product, search, and category pages.\n\n**What currency are prices in?**\nIndonesian Rupiah (IDR), returned as integers.\n\n**What does \"price drop\" mean here?**\nIt means the product currently has a lower price than its displayed original price. Tokopedia does not publish a historical price series, so the actor cannot show a true past price. Run it on a schedule and compare `price` values to build your own history.\n\n**Why are some fields missing?**\nTokopedia does not show every field on every listing. A product without a discount has no `originalPrice`; a listing without a description spec block has no `specifications`. The actor omits missing fields instead of guessing.\n\n**Why do some product URLs fail?**\nThe actor needs the normal Tokopedia product URL (`/{shop}/{product-slug}-{id}`). Numeric product IDs alone do not resolve through the public site.\n\n**How many products can I get per search?**\nUp to 6,000 products per search slice. Tokopedia caps pagination at that point. For larger sets, split the work by keyword, category, price range, or location.\n\n**Can I filter by seller city?**\nYes. Use the location dropdown for common cities, or `cityId` for an exact Tokopedia city ID from a Tokopedia search URL.\n\n**Are image links permanent?**\nThe actor returns a normalized image URL and keeps the original signed URL in `imageUrlOriginal`. Most normalized links are durable, but a minority remain on Tokopedia's signed host; those expire within hours. Use `imageUrlOriginal` promptly or re-run the actor to refresh them.\n\n**Is this affiliated with Tokopedia?**\nNo. This is an independent third-party actor that reads publicly available Tokopedia pages and is not operated by or affiliated with Tokopedia.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "tokopedia-search-category-and-price-drop-scraper",
      "title": "Tokopedia Search, Category & Price Drop Scraper",
      "description": "Search Tokopedia by keyword or URL, browse categories, or fetch product details. Get prices, discounts, ratings, sold counts, shop info, condition, stock, variants, and images for Indonesian marketplace listings.",
      "version": "1.1",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Tokopedia Search, Category & Price Drop Scraper\n\nTokopedia is Indonesia's largest marketplace, and this actor turns its public product pages into a clean dataset. Search by keyword or search URL, browse a category, or paste product URLs to collect prices in Rupiah, discounts, ratings, sold counts, seller details, condition, stock, variants, and images. No account, login, or proxy setup is needed.\n\n## What this actor does\n\n- **Search products** by keyword or a Tokopedia search/find URL, with Tokopedia's real filters and five real sort orders.\n- **Browse categories** from a `/p/...` URL or a numeric category ID.\n- **Fetch product details** from Tokopedia product URLs: condition, stock, weight, minimum order, variants and child SKUs, description, rating breakdown, and campaign dates.\n- **Price-drop view:** every record exposes the current price, original price, discount percentage, discount amount, and a `priceDropped` flag. Tokopedia does not publish historical prices, so this is a current-snapshot view rather than a price history.\n- **Overview or detail:** keep search results fast, or enable `includeDetails` to enrich each row with the full product page.\n- Empty fields are omitted from each record instead of being returned as null or blank.\n\n## Output per product\n\n| Field | Description |\n|---|---|\n| `productId` | Tokopedia product ID |\n| `name` | Product name |\n| `productUrl` | Direct product page URL |\n| `price`, `priceText` | Current price in IDR, numeric and as displayed |\n| `originalPrice`, `originalPriceText` | Pre-discount price when shown |\n| `discountPercent`, `discountAmount` | Current discount |\n| `priceDropped` | True when the original price is above the current price |\n| `currency` | Always `IDR` |\n| `rating`, `reviewCount` | Rating and, in detail mode, review count |\n| `sold`, `soldText` | Units sold, parsed into a number plus the source label |\n| `shop`, `shopId`, `shopUrl`, `shopLocation` | Seller identity and location |\n| `shopTier` | `mall`, `power_shop`, or `regular` when known |\n| `imageUrl`, `imageUrlOriginal` | Main image plus the signed source URL. Most normalized links are durable; a minority stay on a signed host and expire. |\n| `categoryId`, `categoryName`, `categoryPath` | Category identity and breadcrumb path |\n| `labels` | Promotional and service labels shown on the card |\n| `badge` | Official/Power/Mall badge when one is visible |\n| `preorder` | Whether the listing is a preorder |\n| `condition`, `conditionText` | NEW/USED and its local display text (detail) |\n| `status` | Product status such as ACTIVE (detail) |\n| `stock`, `minOrder`, `maxOrder` | Availability and order limits (detail) |\n| `weight`, `weightUnit` | Shipping weight (detail) |\n| `isVariant`, `variants`, `variantChildren` | Variation axes and child SKUs with their prices and stock (detail) |\n| `description` | Seller description (detail) |\n| `specifications` | Best-effort key/value specifications parsed from the description (detail) |\n| `ratingBreakdown` | Per-star rating counts and percentages (detail) |\n| `imageUrls` | Full gallery of image URLs (detail; mostly durable) |\n| `categoryBreadcrumb` | Category path with names and URLs (detail) |\n| `campaignType`, `campaignEndsAt`, `campaignDiscountPercent`, `campaignStockSoldPercent` | Active campaign details when present (detail) |\n| `mode`, `searchQuery`, `position`, `scrapedAt` | Provenance: mode, query, result position, and scrape time |\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | – | `search`, `categoryBrowse`, or `productDetails` |\n| `searchQueries` | array | `[]` (prefill `[\"smartphone\"]`) | Keywords to search (mode=search) |\n| `searchUrls` | array | `[]` | Tokopedia search or `/find/` URLs (mode=search) |\n| `categoryUrls` | array | `[]` | Tokopedia category URLs (mode=categoryBrowse) |\n| `categoryIds` | array | `[]` | Numeric category IDs (mode=categoryBrowse) |\n| `productUrls` | array | `[]` | Product page URLs (mode=productDetails) |\n| `sortBy` | string | `relevance` | `relevance`, `newest`, `price_low`, `price_high`, `most_reviewed` |\n| `priceMin`, `priceMax` | integer | – | Price range in IDR |\n| `condition` | string | `any` | `any`, `new`, `used` |\n| `shopType` | string | `any` | `any`, `mall`, `power_shop` |\n| `minRating` | string | `any` | `any` or `4` |\n| `city` | string | `any` | Common seller locations, or `any` |\n| `cityId` | string | – | Exact Tokopedia city ID(s), comma-separated |\n| `latestProductDays` | string | `any` | `any`, `7`, `14`, `30`, `90` |\n| `discountOnly` | boolean | `false` | Only discounted products |\n| `codOnly` | boolean | `false` | Only cash-on-delivery products |\n| `freeShippingOnly` | boolean | `false` | Only products with the free-shipping offer |\n| `preorder` | string | `any` | `any`, `ready_stock`, `preorder` |\n| `includeDetails` | boolean | `false` | Enrich search/category rows from each product page |\n| `maxItems` | integer | `100` | Maximum products, 1–6000 |\n\n### Example: search with filters\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"sepatu lari\"],\n  \"sortBy\": \"price_low\",\n  \"priceMin\": 100000,\n  \"priceMax\": 500000,\n  \"shopType\": \"mall\",\n  \"minRating\": \"4\",\n  \"maxItems\": 50\n}\n```\n\n### Example: browse a category\n\n```json\n{\n  \"mode\": \"categoryBrowse\",\n  \"categoryUrls\": [\"https://www.tokopedia.com/p/handphone-tablet/handphone\"],\n  \"sortBy\": \"newest\",\n  \"maxItems\": 100\n}\n```\n\n### Example: full product details\n\n```json\n{\n  \"mode\": \"productDetails\",\n  \"productUrls\": [\n    \"https://www.tokopedia.com/pxofficialindonesia/kabel-data-usb-type-c-ultra-fast-charging-pd240w-charger-nylon-braided-laptop-tablet-smartphone-samsung-oppo-huawei-vivo-px-fcc-2m-1736805261334316721\"\n  ]\n}\n```\n\n## Use cases\n\n- **Price and discount monitoring** — compare current prices, discounts, and campaign end dates across a category or keyword.\n- **Seller intelligence** — compare shop type, location, sold counts, and ratings across merchants.\n- **Assortment planning** — browse a category to see the current product mix and pricing ladder.\n- **Product research** — collect variants, child SKUs, stock, weight, condition, and descriptions for a shortlist.\n- **Marketplace analytics** — feed clean product records into dashboards, spreadsheets, or a database.\n\n## FAQ\n\n**Do I need a Tokopedia account or login?**\nNo. The actor reads public product, search, and category pages.\n\n**What currency are prices in?**\nIndonesian Rupiah (IDR), returned as integers.\n\n**What does \"price drop\" mean here?**\nIt means the product currently has a lower price than its displayed original price. Tokopedia does not publish a historical price series, so the actor cannot show a true past price. Run it on a schedule and compare `price` values to build your own history.\n\n**Why are some fields missing?**\nTokopedia does not show every field on every listing. A product without a discount has no `originalPrice`; a listing without a description spec block has no `specifications`. The actor omits missing fields instead of guessing.\n\n**Why do some product URLs fail?**\nThe actor needs the normal Tokopedia product URL (`/{shop}/{product-slug}-{id}`). Numeric product IDs alone do not resolve through the public site.\n\n**How many products can I get per search?**\nUp to 6,000 products per search slice. Tokopedia caps pagination at that point. For larger sets, split the work by keyword, category, price range, or location.\n\n**Can I filter by seller city?**\nYes. Use the location dropdown for common cities, or `cityId` for an exact Tokopedia city ID from a Tokopedia search URL.\n\n**Are image links permanent?**\nThe actor returns a normalized image URL and keeps the original signed URL in `imageUrlOriginal`. Most normalized links are durable, but a minority remain on Tokopedia's signed host; those expire within hours. Use `imageUrlOriginal` promptly or re-run the actor to refresh them.\n\n**Is this affiliated with Tokopedia?**\nNo. This is an independent third-party actor that reads publicly available Tokopedia pages and is not operated by or affiliated with Tokopedia.\n",
      "input": {
        "title": "Tokopedia Scraper Input",
        "description": "Search Tokopedia, browse categories, or fetch product details.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to scrape.",
            "editor": "select",
            "enumTitles": [
              "Search products",
              "Browse a category",
              "Get product details by URL",
              "Top products (legacy)"
            ],
            "prefill": "search",
            "enumSuggestedValues": [
              "search",
              "categoryBrowse",
              "productDetails",
              "topProducts"
            ]
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search (mode=search). Example: smartphone, sepatu lari, kopi arabika.",
            "editor": "stringList",
            "default": [],
            "prefill": [
              "smartphone"
            ]
          },
          "searchUrls": {
            "title": "Search URLs (mode=search)",
            "type": "array",
            "description": "Tokopedia search or /find/ URLs. Filters and sort already in the URL are applied.",
            "editor": "stringList",
            "default": []
          },
          "categoryUrls": {
            "title": "Category URLs (mode=categoryBrowse)",
            "type": "array",
            "description": "Tokopedia category URLs such as https://www.tokopedia.com/p/handphone-tablet/handphone.",
            "editor": "stringList",
            "default": []
          },
          "categoryIds": {
            "title": "Category IDs (mode=categoryBrowse)",
            "type": "array",
            "description": "Numeric Tokopedia category IDs, for example 24 for Handphone.",
            "editor": "stringList",
            "default": []
          },
          "productUrls": {
            "title": "Product URLs (mode=productDetails)",
            "type": "array",
            "description": "Tokopedia product page URLs. Numeric IDs alone are not supported.",
            "editor": "stringList",
            "default": []
          },
          "sortBy": {
            "title": "Sort by",
            "type": "string",
            "description": "Result order.",
            "editor": "select",
            "enumTitles": [
              "Most relevant",
              "Newest",
              "Price: low to high",
              "Price: high to low",
              "Most reviewed",
              "Best seller (legacy)",
              "Price ascending (legacy)",
              "Price descending (legacy)"
            ],
            "default": "relevance",
            "prefill": "relevance",
            "enumSuggestedValues": [
              "relevance",
              "newest",
              "price_low",
              "price_high",
              "most_reviewed",
              "best_seller",
              "price_asc",
              "price_desc"
            ]
          },
          "priceMin": {
            "title": "Min price (IDR)",
            "type": "integer",
            "description": "Minimum price in Indonesian Rupiah.",
            "minimum": 0,
            "maximum": 1000000000
          },
          "priceMax": {
            "title": "Max price (IDR)",
            "type": "integer",
            "description": "Maximum price in Indonesian Rupiah.",
            "minimum": 0,
            "maximum": 1000000000
          },
          "condition": {
            "title": "Condition",
            "type": "string",
            "description": "Filter by product condition.",
            "editor": "select",
            "enumTitles": [
              "Any condition",
              "New",
              "Used",
              "New (legacy code 1)",
              "Used (legacy code 2)"
            ],
            "default": "any",
            "prefill": "any",
            "enumSuggestedValues": [
              "any",
              "new",
              "used",
              "1",
              "2"
            ]
          },
          "shopType": {
            "title": "Shop type",
            "type": "string",
            "description": "Filter by Tokopedia shop type.",
            "editor": "select",
            "enumTitles": [
              "Any shop",
              "Mall",
              "Power Shop",
              "Mall (legacy code 2)",
              "Power Shop (legacy code 3)"
            ],
            "default": "any",
            "prefill": "any",
            "enumSuggestedValues": [
              "any",
              "mall",
              "power_shop",
              "2",
              "3"
            ]
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "string",
            "description": "Only show products rated 4 or higher.",
            "editor": "select",
            "enumTitles": [
              "Any rating",
              "4 stars and up",
              "4.5 stars (legacy)",
              "4+ (legacy library value)",
              "3 stars (legacy, not supported)"
            ],
            "default": "any",
            "prefill": "any",
            "enumSuggestedValues": [
              "any",
              "4",
              "4.5",
              "4,5",
              "3"
            ]
          },
          "city": {
            "title": "Seller location",
            "type": "string",
            "description": "Filter by a common seller location. Leave Any for all of Indonesia.",
            "editor": "select",
            "enum": [
              "any",
              "DKI Jakarta",
              "Jabodetabek",
              "Bandung",
              "Medan",
              "Surabaya",
              "Bali",
              "Banten",
              "D.I. Yogyakarta",
              "Semarang",
              "Makassar",
              "Palembang",
              "Denpasar",
              "Bekasi",
              "Tangerang",
              "Depok",
              "Bogor",
              "Jakarta Pusat",
              "Jakarta Selatan",
              "Jakarta Barat",
              "Jakarta Utara",
              "Jakarta Timur"
            ],
            "enumTitles": [
              "Any location",
              "DKI Jakarta",
              "Jabodetabek",
              "Bandung",
              "Medan",
              "Surabaya",
              "Bali",
              "Banten",
              "Yogyakarta",
              "Semarang",
              "Makassar",
              "Palembang",
              "Denpasar",
              "Bekasi",
              "Tangerang",
              "Depok",
              "Bogor",
              "Jakarta Pusat",
              "Jakarta Selatan",
              "Jakarta Barat",
              "Jakarta Utara",
              "Jakarta Timur"
            ],
            "default": "any",
            "prefill": "any"
          },
          "cityId": {
            "title": "City ID (advanced)",
            "type": "string",
            "description": "Exact Tokopedia city ID(s), comma-separated. Overrides the location dropdown.",
            "editor": "textfield"
          },
          "latestProductDays": {
            "title": "Listed within",
            "type": "string",
            "description": "Only show products added recently.",
            "editor": "select",
            "enum": [
              "any",
              "7",
              "14",
              "30",
              "90"
            ],
            "enumTitles": [
              "Any time",
              "Last 7 days",
              "Last 14 days",
              "Last 30 days",
              "Last 90 days"
            ],
            "default": "any",
            "prefill": "any"
          },
          "discountOnly": {
            "title": "Discounted products only",
            "type": "boolean",
            "description": "Only show products currently on discount.",
            "default": false,
            "prefill": false
          },
          "codOnly": {
            "title": "Cash on delivery only",
            "type": "boolean",
            "description": "Only show products that offer cash on delivery.",
            "default": false,
            "prefill": false
          },
          "freeShippingOnly": {
            "title": "Extra free shipping only",
            "type": "boolean",
            "description": "Only show products with the free-shipping offer.",
            "default": false,
            "prefill": false
          },
          "preorder": {
            "title": "Availability",
            "type": "string",
            "description": "Filter by ready stock or preorder.",
            "editor": "select",
            "enumTitles": [
              "Any availability",
              "Ready stock",
              "Preorder",
              "Preorder (legacy)",
              "Ready stock (legacy)"
            ],
            "default": "any",
            "prefill": "any",
            "enumSuggestedValues": [
              "any",
              "ready_stock",
              "preorder",
              "true",
              "false"
            ]
          },
          "includeDetails": {
            "title": "Include product details",
            "type": "boolean",
            "description": "Add condition, stock, variants, description, and rating breakdown to search and category results. Slower and makes one extra request per product.",
            "default": false,
            "prefill": false
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Maximum number of products to return.",
            "minimum": 1,
            "maximum": 6000,
            "default": 100,
            "prefill": 3
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Tokopedia Search, Category & Price Drop Scraper Output",
        "description": "One record per Tokopedia product from keyword search, category browse, or product-detail URLs, with pricing, discount, rating, sold count, shop, condition, stock, variants, and images.",
        "properties": {
          "products": {
            "type": "string",
            "title": "Tokopedia products",
            "description": "Dataset containing all scraped Tokopedia products.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Tokopedia Products",
              "transformation": {
                "fields": [
                  "name",
                  "price",
                  "originalPrice",
                  "discountPercent",
                  "shop",
                  "shopLocation",
                  "rating",
                  "sold",
                  "condition",
                  "productUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.1.2",
    "imageDigest": "c38a6ef1cdd4460cb413e25ba810532158cb6f34598ef03d6e22e87e88904a3e",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.0054666666666666665
    }
  }
}