{
  "openapi": "3.0.1",
  "info": {
    "title": "Sheng Siong Online (SG) Grocery API Scraper",
    "description": "Scrape Sheng Siong Singapore grocery products by search keyword or category, with full product detail (price, promo, stock, images, ratings, country of origin and more) via the app's own mobile API.",
    "version": "0.1",
    "x-build-id": "SJQwzfKKxw4I0x9wt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rl1987~shengsiong-api-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rl1987-shengsiong-api-scraper",
        "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/rl1987~shengsiong-api-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rl1987-shengsiong-api-scraper",
        "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/rl1987~shengsiong-api-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rl1987-shengsiong-api-scraper",
        "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": {
          "q": {
            "title": "Search keyword",
            "type": "string",
            "description": "Search products by keyword (e.g. \"milk\", \"chicken\"). Leave empty to browse a category instead."
          },
          "includeDetails": {
            "title": "Include full product detail",
            "type": "boolean",
            "description": "Fetch the full detail record (description, barcodes, dimensions, stock, supplier, rating, etc.) for every product. Slower but maximum fields.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Maximum number of products to return (0 = all).",
            "default": 100
          },
          "category": {
            "title": "Category",
            "enum": [
              "our-housebrands",
              "support-local",
              "breakfast-spreads",
              "dairy-chilled-eggs",
              "fruits",
              "vegetables",
              "meat-poultry-seafood",
              "beverages",
              "alcohol",
              "rice-noodles-pasta",
              "frozen-goods",
              "dried-food-herbs",
              "cooking-baking",
              "convenience-food-113",
              "snacks-confectioneries",
              "mum-baby-kids",
              "health-wellness",
              "personal-care",
              "household",
              "lifestyle-outdoors",
              "pet-care",
              "bake-for-you",
              "golden-swiss",
              "happy-family",
              "heritage-farm-267",
              "homeniks",
              "jean-fresh",
              "matahari",
              "le-bao",
              "powerplus",
              "royal-golden-grain",
              "royal-golden-mali",
              "sing-food-family",
              "softess",
              "tasty-bites",
              "madam-lee",
              "phizz",
              "local-eggs",
              "local-produce",
              "bakery",
              "oats-cereals-granola-bars",
              "spreads-jams-honey",
              "traditional-pastries",
              "fresh-milk",
              "eggs",
              "chilled-beverages",
              "cheese",
              "jelly-pudding",
              "yoghurt-160",
              "butter-margarine",
              "whipped-cooking-cream",
              "tofu-beancurd",
              "fishball-fishcakes",
              "convenience-food",
              "cultured-milk",
              "apple-pears-73",
              "citrus-fruits",
              "stone-fruits",
              "berries",
              "grapes-kiwi",
              "melons",
              "tropical-exotic-fruit",
              "fruit-snacks",
              "fresh-cut-fruits",
              "organic",
              "leafy-greens",
              "peas-beans-nuts",
              "spices-herbs",
              "mushrooms",
              "broccoli-cabbages-cauliflower",
              "potatoes-carrots-root-vegetables",
              "gourds-corns",
              "salads-lettuce-tomatoes",
              "brinjals-lady-finger",
              "other-vegetables",
              "chilled-meat",
              "frozen-meat",
              "fresh-seafood",
              "frozen-seafood-31",
              "fresh-pork",
              "frozen-pork",
              "asian-drinks",
              "instant-beverages",
              "soft-drinks",
              "coffee",
              "sports-energy-drinks",
              "tea",
              "sparkling",
              "uht-other-milk",
              "juices-syrup",
              "water",
              "yoghurt",
              "beer",
              "wine",
              "spirit-liquor",
              "ciders",
              "soju-sake-umeshu",
              "other-alcohol",
              "rice",
              "noodles",
              "pasta",
              "chicken-delights",
              "potato-sides",
              "seafood-convenience",
              "prata-chapatti-tondoori-104",
              "meatballs-franks-sausages",
              "pastries-dumplings-buns",
              "burger-patties",
              "ready-meals",
              "pizza",
              "frozen-vegetables-vegetarian",
              "satays-otah",
              "frozen-fruits",
              "dried-beans-nuts-seeds",
              "dried-salted-vegetable",
              "dried-beancurd-chilli",
              "dried-herbs-tonics",
              "dried-fruits",
              "dried-meat-sausages",
              "dried-shallots-crackers",
              "dried-seafood",
              "condiments",
              "sauces-pastes",
              "herbs-spices-seasonings",
              "cooking-oil",
              "salt-sugar-sweetener",
              "flour",
              "baking-dessert-mix",
              "canned-food",
              "instant-porridge-rice",
              "instant-noodles",
              "instant-soup-mix",
              "instant-mashed-potato",
              "preserved-food",
              "snacks",
              "chips-crisps",
              "biscuits-cookies-361",
              "chocolates-sweets",
              "jelly-pudding-159",
              "nuts-seeds",
              "stage-1-milk-formula",
              "diapers",
              "stage-2-milk-formula",
              "baby-toiletries",
              "stage-3-milk-formula",
              "baby-kids-healthcare",
              "stage-4-above-milk-formula",
              "baby-food-bites",
              "adult-diapers-392",
              "childrens-health",
              "adult-milk-powder",
              "medicine-first-aid",
              "family-planning-393",
              "tonic-supplement",
              "hair",
              "hand-soap-sanitizers",
              "body",
              "grooming-390",
              "facial-care",
              "sanitary",
              "oral-care",
              "paper-tissue",
              "laundry-care",
              "cleaning-supplies",
              "kitchen-dining",
              "pest-control",
              "air-freshener",
              "shoe-care",
              "miscellaneous",
              "electrical-appliances-231",
              "prayer-needs",
              "stationery",
              "car-care",
              "gardening-needs",
              "bbq-party-supplies",
              "dog-food",
              "cat-food",
              "pet-cleaning-supplies",
              "grooming"
            ],
            "type": "string",
            "description": "Browse a product category (used when no search keyword is given)."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Route requests through a proxy. Sheng Siong is behind an Imperva Incapsula WAF that blocks datacenter IPs, so a Singapore residential (or ISP) proxy is required.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "SG"
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}