{
  "openapi": "3.0.1",
  "info": {
    "title": "Konga Product Search Scraper",
    "description": "Scrape products from Konga.com — Nigeria's biggest online marketplace. Search or browse by category, brand, colour, price and delivery options, get full pricing, seller, stock and rating data, and run cheap incremental monitoring that emits only new/updated products and price drops.",
    "version": "1.0",
    "x-build-id": "QPbAq6y4XCkTQdswQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trev0n~konga-product-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trev0n-konga-product-search-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/trev0n~konga-product-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trev0n-konga-product-search-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/trev0n~konga-product-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trev0n-konga-product-search-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": {
          "query": {
            "title": "Search keywords",
            "type": "string",
            "description": "What to search for on Konga (e.g. \"iphone\", \"blender\", \"generator\"). Leave empty to browse by category/filters only or to use Start URLs."
          },
          "category": {
            "title": "Category",
            "enum": [
              "",
              "home-kitchen",
              "beauty-health",
              "electronics",
              "phones-tablets",
              "power-automobile-industrial",
              "computers-accessories",
              "fashion",
              "books-media",
              "baby-kids-toys",
              "drinks-groceries",
              "sports-fitness",
              "office-school",
              "other-categories"
            ],
            "type": "string",
            "description": "Limit results to one top-level Konga category.",
            "default": ""
          },
          "brand": {
            "title": "Brand",
            "type": "string",
            "description": "Filter by brand exactly as Konga lists it (e.g. \"Samsung\", \"Nestle\", \"Huawei\"). Case-sensitive."
          },
          "color": {
            "title": "Colour",
            "type": "string",
            "description": "Filter by colour attribute (e.g. \"Black\", \"Multicolour\")."
          },
          "priceMin": {
            "title": "Minimum price (₦)",
            "minimum": 0,
            "type": "integer",
            "description": "Lower bound of the price range, in Nigerian naira.",
            "default": 0
          },
          "priceMax": {
            "title": "Maximum price (₦)",
            "minimum": 0,
            "type": "integer",
            "description": "Upper bound of the price range, in Nigerian naira (0 = no limit).",
            "default": 0
          },
          "freeShipping": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Only products that ship for free.",
            "default": false
          },
          "payOnDelivery": {
            "title": "Pay on delivery only",
            "type": "boolean",
            "description": "Only products that support pay-on-delivery.",
            "default": false
          },
          "expressDelivery": {
            "title": "Express delivery only",
            "type": "boolean",
            "description": "Only products eligible for express delivery.",
            "default": false
          },
          "pickupAvailable": {
            "title": "Pickup available only",
            "type": "boolean",
            "description": "Only products available for pickup.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "Ordering of search results.",
            "default": "relevance"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional Konga search-result, category, or product URLs to scrape directly instead of (or alongside) a keyword search.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products to collect (0 = unlimited).",
            "default": 100
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on result pages to fetch per search (0 = no cap).",
            "default": 0
          },
          "hitsPerPage": {
            "title": "Products per page",
            "minimum": 1,
            "maximum": 250,
            "type": "integer",
            "description": "Page size for each request (1-250). Larger is fewer requests.",
            "default": 100
          },
          "includeKeywords": {
            "title": "Include keywords",
            "type": "array",
            "description": "Keep only products whose name/brand/description contains at least one of these terms.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop products whose name/brand/description contains any of these terms.",
            "items": {
              "type": "string"
            }
          },
          "inStockOnly": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Drop products that are out of stock.",
            "default": false
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only products with at least this average star rating (0-5).",
            "default": 0
          },
          "maxAgeMinutes": {
            "title": "Max age (minutes)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop products listed more than this many minutes ago (0 = no limit).",
            "default": 0
          },
          "compact": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Output only the core fields — handy for AI workflows.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Exclude empty fields",
            "type": "boolean",
            "description": "Omit null / empty fields from each record.",
            "default": false
          },
          "incrementalMode": {
            "title": "Incremental monitoring mode",
            "type": "boolean",
            "description": "Track state across runs and emit only NEW / UPDATED / REAPPEARED products (price drops, restocks). The first run builds a baseline; later runs charge only for the diff — ideal for cheap recurring monitoring.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Custom identifier for the monitoring baseline. Leave empty to derive it from the search config automatically."
          },
          "emitUnchanged": {
            "title": "Emit unchanged products",
            "type": "boolean",
            "description": "Also output products whose content didn't change since the last run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired products",
            "type": "boolean",
            "description": "Also output a record for products that disappeared since the last run (changeType = EXPIRED).",
            "default": false
          },
          "skipReposts": {
            "title": "Skip reposts",
            "type": "boolean",
            "description": "Drop new products detected as reposts of a recently expired one (same content, new id).",
            "default": false
          },
          "notifyOnlyChanges": {
            "title": "Notify only on changes",
            "type": "boolean",
            "description": "Only send notifications when there are new/updated products.",
            "default": true
          },
          "notificationLimit": {
            "title": "Products per notification",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of products listed in a single notification message.",
            "default": 10
          },
          "includeRunSummary": {
            "title": "Include run summary in webhook",
            "type": "boolean",
            "description": "Attach the run summary object to the generic webhook payload.",
            "default": true
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Generic webhook to POST results to (JSON)."
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Telegram bot token for notifications."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Telegram chat id to send notifications to."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL",
            "type": "string",
            "description": "Discord channel webhook for notifications."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Slack incoming webhook for notifications."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Konga's search works fine without a proxy, but one helps for very large or frequent runs.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}