{
  "openapi": "3.0.1",
  "info": {
    "title": "Marketplace Seller Watch — Third-Party Reseller Monitor",
    "description": "Meta-scraper that tracks which third-party sellers offer a brand's products across European marketplaces (Kaufland.de, Kaufland.pl, Bol.com) and emits new_seller and seller_gone change events run over run — a deduped alert feed, not a full re-export.",
    "version": "0.1",
    "x-build-id": "NuRgc1Fvc5gAW1vIs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/studio-amba~marketplace-seller-watch/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-studio-amba-marketplace-seller-watch",
        "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/studio-amba~marketplace-seller-watch/runs": {
      "post": {
        "operationId": "runs-sync-studio-amba-marketplace-seller-watch",
        "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/studio-amba~marketplace-seller-watch/run-sync": {
      "post": {
        "operationId": "run-sync-studio-amba-marketplace-seller-watch",
        "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": {
          "brandQuery": {
            "title": "Brand or product query",
            "type": "string",
            "description": "The brand (e.g. \"Philips\") or product line to track. Each marketplace is searched for this term and every seller offering a matching listing is tracked. Leave empty to default to \"Philips\"."
          },
          "marketplaces": {
            "title": "Marketplaces",
            "type": "array",
            "description": "Which marketplaces to watch. Leave empty for the healthy defaults (Kaufland.de, Kaufland.pl, Bol.com). Allegro.pl is opt-in only: it exposes the seller only on product detail pages, so the listing scraper returns no seller today (see README).",
            "items": {
              "type": "string",
              "enum": [
                "kaufland-de",
                "kaufland-pl",
                "bol",
                "allegro"
              ],
              "enumTitles": [
                "Kaufland.de (Germany)",
                "Kaufland.pl (Poland)",
                "Bol.com (Netherlands / Belgium)",
                "Allegro.pl (Poland) — opt-in, no seller on listings yet"
              ]
            }
          },
          "productName": {
            "title": "Specific product name (optional)",
            "type": "string",
            "description": "Narrow tracking to one product instead of the whole brand. When set, only listings whose title is similar enough (see match threshold) to this name are counted, so you watch sellers of exactly this SKU. Leave empty to track every listing the brand query returns."
          },
          "matchThreshold": {
            "title": "Match threshold",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Only used when a specific product name is given. Minimum name-similarity (0-1) for a listing to count as that product. Higher = stricter.",
            "default": 0.35
          },
          "maxProductsPerMarketplace": {
            "title": "Max products per marketplace",
            "minimum": 5,
            "maximum": 100,
            "type": "integer",
            "description": "How many product listings to pull from each marketplace per run. More listings find more sellers but cost more. seller_gone is judged against this tracked window (see README).",
            "default": 20
          },
          "emitSellerGone": {
            "title": "Emit seller_gone events",
            "type": "boolean",
            "description": "When on, a previously-seen seller that no longer appears in the tracked listings for this brand emits a seller_gone event (once). Turn off to only ever report new sellers.",
            "default": true
          },
          "timeoutPerSourceSecs": {
            "title": "Timeout per marketplace (seconds)",
            "minimum": 60,
            "maximum": 600,
            "type": "integer",
            "description": "Maximum time to wait for each underlying marketplace scraper. A slow or failing marketplace is skipped after this rather than blocking the whole run.",
            "default": 240
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy passed through to marketplace children that need one (currently Bol.com; Allegro when opted in). The Kaufland children drive Bright Data internally and ignore this. Defaults to a residential proxy scoped to each marketplace's country."
          },
          "resetState": {
            "title": "Reset seen-state (testing only)",
            "type": "boolean",
            "description": "Clears the persistent seen-set for this brand across all marketplaces before the run, so every current seller counts as new_seller. Use for QA so a run always produces items. Never enable on a real scheduled run — it defeats the delta/dedup purpose.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}