{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Today's Deals Scraper By Discount, Price & Category",
    "description": "Amazon Today's Deals Scraper extracts Amazon deals by discount, price, and category, including product titles, deal prices, discounts, ratings, availability, categories, and product URLs. Ideal for deal tracking, price monitoring, product research, and competitor analysis.",
    "version": "0.1",
    "x-build-id": "bAYZhI5I7QCaVH7tz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~amazon-todays-deals-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-amazon-todays-deals-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/scrapio~amazon-todays-deals-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-amazon-todays-deals-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/scrapio~amazon-todays-deals-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-amazon-todays-deals-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": {
          "maxDeals": {
            "title": "🧮 How many deals to collect",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Total unique deals to return. Amazon caps ANY single filtered query at 500 deals, so values above 500 only pay off when '🚀 Filter sweep' is switched on. Example: maxDeals=2000 + sweepBy=departments walks up to 30 department windows and unions them. Default is 100.",
            "default": 100
          },
          "minDiscountPercent": {
            "title": "🔥 Minimum discount %",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only deals discounted at least this much. Applied by Amazon server-side, so it also changes WHICH 500 deals are reachable. Example: 50 returns 50–76% off items where an unfiltered run tops out around 40%. Leave empty for any discount."
          },
          "maxDiscountPercent": {
            "title": "🎚️ Maximum discount %",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Upper bound on the discount. Useful to carve the catalogue into bands. Example: minDiscountPercent=20 + maxDiscountPercent=40 returns only mid-range discounts. Leave empty for no upper bound."
          },
          "minPrice": {
            "title": "💵 Minimum price (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only deals at or above this price. Example: 100 skips the low-ticket bulk of the deals page. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "🏷️ Maximum price (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only deals at or below this price. Applied server-side — maxPrice=25 returns $6.29–$24.97 items where an unfiltered run reaches $1,339. Leave empty for no maximum."
          },
          "departments": {
            "title": "🗂️ Departments",
            "type": "array",
            "description": "Department names exactly as Amazon writes them, or raw browse-node IDs. The live list of ~30 departments is printed in the run log at startup. Example: [\"Electronics\", \"Home & Kitchen\"]. Names that do not match today's catalogue are reported in the log and ignored, never silently applied.",
            "items": {
              "type": "string"
            }
          },
          "brands": {
            "title": "™️ Brands",
            "type": "array",
            "description": "Brand names from Amazon's live top-20 brand list for today's deals, or the exact \"brandId|Brand Name\" form for any other brand. The available brand list is printed in the run log. Example: [\"Levoit\"] returned only Levoit products in testing.",
            "items": {
              "type": "string"
            }
          },
          "primeExclusiveOnly": {
            "title": "🅿️ Prime Exclusive deals only",
            "type": "boolean",
            "description": "Restrict to deals Amazon marks Prime Exclusive. Verified server-side: switching this on moved the 'With Prime' badge from 5/180 rows to 171/180. Default is false.",
            "default": false
          },
          "titleKeywords": {
            "title": "🔍 Title must contain any of",
            "type": "array",
            "description": "Keep only deals whose product title contains at least one of these words (case-insensitive). Applied after download — Amazon's deals API has no text search. Example: [\"laptop\", \"monitor\"]. Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "🚫 Title must NOT contain",
            "type": "array",
            "description": "Drop deals whose title contains any of these words (case-insensitive). Example: [\"refurbished\", \"renewed\"]. Leave empty to exclude nothing.",
            "items": {
              "type": "string"
            }
          },
          "sweepBy": {
            "title": "🚀 Filter sweep — collect more than 500 deals",
            "enum": [
              "none",
              "departments",
              "discountBands",
              "priceBands",
              "departmentsAndDiscount"
            ],
            "type": "string",
            "description": "Amazon returns at most 500 deals per query, but every filter combination has its OWN 500-deal window. The sweep walks many windows and merges them, deduplicated by ASIN. 'By department' is the widest net (~30 windows). Choose 'Off' to run a single query capped at 500. Default is Off.",
            "default": "none"
          },
          "maxFilterWindows": {
            "title": "🪟 Maximum filter windows to walk",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Caps how many windows the sweep visits, so a deep sweep cannot run away. Example: sweepBy=departments + maxFilterWindows=5 walks the unfiltered window plus the first 4 departments. Default is 30.",
            "default": 30
          },
          "includeIncompleteRows": {
            "title": "🧩 Include non-deal filler rows",
            "type": "boolean",
            "description": "Amazon's deals feed mixes in promotional slots that carry a title and an ASIN but no price and no deal window (measured: ~10% of rows). They are dropped by default and are NEVER charged. Switch on to keep them — they arrive flagged with isCompleteDeal=false. Default is false.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "Optional. The scraper connects directly by default and that is the tested path. Enable a proxy only if your runs start getting blocked."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}