{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Price & Buy Box Scraper - Change Monitor",
    "description": "Amazon change monitor: track price, Buy Box, stock and listing changes on your own and competitor ASINs. Keeps state; first run creates baseline. See changes in Apify (Overview, Detected changes, Competitors) and route structured events to webhooks, n8n, Make, Zapier or AI agents via Apify MCP.",
    "version": "0.0",
    "x-build-id": "A5QNiglAUyDz9Bdch"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/e-com~amazon-price-buy-box-scraper-change-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-e-com-amazon-price-buy-box-scraper-change-monitor",
        "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/e-com~amazon-price-buy-box-scraper-change-monitor/runs": {
      "post": {
        "operationId": "runs-sync-e-com-amazon-price-buy-box-scraper-change-monitor",
        "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/e-com~amazon-price-buy-box-scraper-change-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-e-com-amazon-price-buy-box-scraper-change-monitor",
        "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",
        "required": [
          "monitorId",
          "marketplace"
        ],
        "properties": {
          "monitorId": {
            "title": "Monitor name",
            "type": "string",
            "description": "Give this setup a name you'll recognize later, e.g. \"my-electronics-shop\". Any name up to 64 characters works — letters, numbers, spaces, dashes. If you run several monitors, this keeps their history and settings separate, so keep the name the same between runs to keep your history."
          },
          "marketplace": {
            "title": "Marketplace",
            "enum": [
              "amazon.com",
              "amazon.ca",
              "amazon.com.mx",
              "amazon.com.br",
              "amazon.co.uk",
              "amazon.ie",
              "amazon.de",
              "amazon.fr",
              "amazon.it",
              "amazon.es",
              "amazon.nl",
              "amazon.com.be",
              "amazon.se",
              "amazon.pl",
              "amazon.com.tr",
              "amazon.ae",
              "amazon.sa",
              "amazon.eg",
              "amazon.in",
              "amazon.co.jp",
              "amazon.sg",
              "amazon.com.au"
            ],
            "type": "string",
            "description": "Which Amazon country site your products are listed on.",
            "default": "amazon.com"
          },
          "asins": {
            "title": "My products (ASIN or URL)",
            "type": "array",
            "description": "Paste your OWN product ASINs or full Amazon links here, one per line. An ASIN is exactly 10 characters, letters and digits only, like B08N5WRWNW — lower case is fine, it gets corrected for you. A product link works too, as long as it contains /dp/ or /gp/product/. Search result pages and shortened amzn.to links don't contain the ASIN and won't work. Anything unusable is named before the run starts, so nothing is charged for a typo. These are what the monitor watches for price, stock, Buy Box and listing changes.",
            "items": {
              "type": "string"
            }
          },
          "competitorAsins": {
            "title": "Competitor products (ASIN or URL)",
            "type": "array",
            "description": "Optional. Paste ASINs or links of OTHER sellers' products you want to keep an eye on too, one per line — same formats and same rules as above. The same product can't be in both lists. Tracked the same way as your own, but kept in a separate group in the results.",
            "items": {
              "type": "string"
            }
          },
          "webhookUrl": {
            "title": "Where to send notifications (https, optional)",
            "type": "string",
            "description": "Optional. Paste a URL here (e.g. from Make, Zapier or n8n) and each change event is sent there as it is detected. Only events that are enabled and meet your notification settings are sent (the same ones charged as change events); smaller changes still appear in Detected changes inside Apify. It must start with https:// — plain http:// and addresses on your own local network are refused, because the data would travel unencrypted. Leave empty if you only want to check results inside Apify."
          },
          "webhookSendMode": {
            "title": "When to send notifications",
            "enum": [
              "changes_only",
              "always"
            ],
            "type": "string",
            "description": "\"Only when something changed\" — you hear from the monitor only when there's real news. \"After every run\" — you also get one short heartbeat message every time it checks, even with nothing new, so you always know it's alive.",
            "default": "changes_only"
          },
          "ownSellerId": {
            "title": "Your Amazon seller ID (optional)",
            "type": "string",
            "description": "If you know it, paste your own Amazon seller ID (5-20 letters/digits, or your seller profile URL). This lets the monitor tell you specifically when YOU lose or gain the Buy Box, instead of just \"the seller changed\". Left empty, \"You have it\" shows no value because the monitor cannot know which seller is you."
          },
          "enableProInsights": {
            "title": "Also watch rating, bestseller rank and new reviews for my products",
            "type": "boolean",
            "description": "Adds three more things to track on your own products: star rating, position in the bestseller list, and new customer reviews. Small extra charge per check, only while this is on.",
            "default": false
          },
          "trackRatingAndRank": {
            "title": "↳ Specifically: rating and bestseller rank",
            "type": "boolean",
            "description": "Turned on automatically together with the switch above. Turn this OFF here if you want reviews tracked but not rating/rank.",
            "default": true
          },
          "trackFeaturedReviews": {
            "title": "↳ Specifically: new customer reviews",
            "type": "boolean",
            "description": "Turned on automatically together with the switch above. Turn this OFF here if you want rating/rank tracked but not reviews.",
            "default": true
          },
          "priceChangeThresholdPercent": {
            "title": "Don't notify me about tiny price changes (my products)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Leave this empty if you want to be notified about EVERY price change, no matter how small. Fill it in only if you want to skip small moves — e.g. 5 means changes smaller than 5% won't trigger a notification."
          },
          "ratingChangeThresholdStars": {
            "title": "Don't notify me about tiny rating changes (my products)",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Leave this empty if you want to be notified about EVERY rating change, no matter how small. Fill it in only if you want to skip small moves — e.g. 0.2 stars."
          },
          "rankChangeThresholdPositions": {
            "title": "Don't notify me about tiny bestseller-rank changes (my products)",
            "minimum": 0,
            "type": "integer",
            "description": "Leave this empty if you want to be notified about EVERY rank change, no matter how small. Fill it in only if you want to skip small moves — e.g. 50 positions."
          },
          "competitorProInsights": {
            "title": "Also watch rating, bestseller rank and new reviews for competitor products",
            "type": "boolean",
            "description": "Adds star rating, bestseller position and new-review tracking to the competitor products you listed. Small extra charge per check, only while this is on.",
            "default": false
          },
          "competitorTrackRatingAndRank": {
            "title": "↳ Specifically: rating and bestseller rank",
            "type": "boolean",
            "description": "Turned on automatically together with the switch above. Turn this OFF here if you want reviews tracked but not rating/rank.",
            "default": true
          },
          "competitorTrackFeaturedReviews": {
            "title": "↳ Specifically: new customer reviews",
            "type": "boolean",
            "description": "Turned on automatically together with the switch above. Turn this OFF here if you want rating/rank tracked but not reviews.",
            "default": true
          },
          "competitorPriceChangeThresholdPercent": {
            "title": "Don't notify me about tiny price changes (competitors)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Leave this empty if you want to be notified about EVERY price change, no matter how small. Fill it in only if you want to skip small moves — e.g. 5 means changes smaller than 5% won't trigger a notification."
          },
          "competitorRatingChangeThresholdStars": {
            "title": "Don't notify me about tiny rating changes (competitors)",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Leave this empty if you want to be notified about EVERY rating change, no matter how small. Fill it in only if you want to skip small moves — e.g. 0.2 stars."
          },
          "competitorRankChangeThresholdPositions": {
            "title": "Don't notify me about tiny bestseller-rank changes (competitors)",
            "minimum": 0,
            "type": "integer",
            "description": "Leave this empty if you want to be notified about EVERY rank change, no matter how small. Fill it in only if you want to skip small moves — e.g. 50 positions."
          },
          "checkCompetitorOffers": {
            "title": "Show me the other sellers competing for the Buy Box on my product",
            "type": "boolean",
            "description": "One-time snapshot of up to 10 other sellers on YOUR OWN product listing: their price, and who currently holds the Buy Box. Not a running tracker — you decide per run when to check. Small charge each time this is on.",
            "default": false
          },
          "enableBrowserFallback": {
            "title": "Use a backup method when needed",
            "type": "boolean",
            "description": "Amazon sometimes blocks a request, or renders a product's price with JavaScript instead of sending it in the page — either way the normal method comes back incomplete. If that happens, the monitor retries that product using a real browser, so you still get the price and the rest of the data. Only kicks in after the normal method has actually fallen short — not used all the time. Small extra charge only when it's actually used.",
            "default": false
          },
          "maxAsinsPerRun": {
            "title": "Max products per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "The most products one run accepts. If you list more than this, the run stops with a clear message before anything is checked or charged, instead of processing only part of your list.",
            "default": 200
          },
          "enabledEventTypes": {
            "title": "Advanced: which change types to send, my products (JSON)",
            "type": "array",
            "description": "For API/integration use. Leave empty for all types. Values: price_drop, price_increase, out_of_stock, back_in_stock, stock_changed, buybox_changed, rating_changed, bestseller_rank_changed, star_breakdown_shifted, new_featured_review, listing_unavailable, listing_restored, brand_changed, title_changed, images_changed.",
            "items": {
              "type": "string"
            }
          },
          "competitorEnabledEventTypes": {
            "title": "Advanced: which change types to send, competitors (JSON)",
            "type": "array",
            "description": "Same as enabledEventTypes, applied to the competitor group independently. For API/integration use.",
            "items": {
              "type": "string"
            }
          },
          "notificationThresholds": {
            "title": "Advanced: minimum change size to notify, my products (JSON)",
            "type": "object",
            "description": "For API/integration use. Overridden by the simple fields above when both are set for the same metric. Keys: price, rating, bestseller_rank. Each value is {\"mode\": \"any\"|\"percent\"|\"absolute\"|\"stars\"|\"positions\", \"value\": number}.",
            "default": {}
          },
          "competitorNotificationThresholds": {
            "title": "Advanced: minimum change size to notify, competitors (JSON)",
            "type": "object",
            "description": "Same shape as notificationThresholds, applied to the competitor group independently. For API/integration use.",
            "default": {}
          },
          "webhookSecret": {
            "title": "Advanced: webhook signing secret",
            "type": "string",
            "description": "Only needed if your endpoint verifies message authenticity. Signs the x-monitor-signature header (HMAC-SHA256). Most people can skip this — available here for API/integration use."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}