{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Today's Deals Scraper With Star Ratings & Deal Badges",
    "description": "Amazon Today’s Deals Scraper extracts live deal data from Amazon. Collect product titles, prices, discounts, categories, ratings, and availability. Ideal for price tracking, deal monitoring, market research, and ecommerce analytics.",
    "version": "0.1",
    "x-build-id": "ST8mcfAnRWv2hXM6Y"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~amazon-todays-deals-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-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/scraper-engine~amazon-todays-deals-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-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/scraper-engine~amazon-todays-deals-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-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": "Number of deals to return. Amazon's Today's Deals feed exposes a fixed window of 500 promotions (its own totalCount is always 500), so anything above 500 is accepted and coerced down to 500 with a warning in the log. Example: 100 → the 100 best-ranked deals. Default is 100.",
            "default": 100
          },
          "skipNonDeals": {
            "title": "🚫 Skip carousel filler that isn't a deal",
            "type": "boolean",
            "description": "About 1 row in 10 of Amazon's deals carousel is promotional filler: it has a title and an ASIN but no price, no discount and no deal window. Leave this on to drop those rows instead of returning (and being billed for) empty results. Default is true.",
            "default": true
          },
          "minRating": {
            "title": "⭐ Minimum star rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only deals rated at or above this many stars. Applied to the rating returned with each deal (present on ~99% of rows); a product with no rating at all is excluded whenever this is above 0. Example: 4 → only 4.0★ and better. Default is 0 (no rating requirement).",
            "default": 0
          },
          "minReviewCount": {
            "title": "🗳️ Minimum number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only deals with at least this many customer reviews — a 4.8★ from 6 reviewers is not the same evidence as a 4.4★ from 8,480. Example: 500 → drops thinly-reviewed listings. Default is 0 (no minimum).",
            "default": 0
          },
          "maxCriticalReviewPercent": {
            "title": "💢 Maximum share of 1–2★ reviews (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "The polarisation guard. Two products can both average 4.3★ — one built from consistent 4s, one from 72% fives and 9% ones. This reads the 1★ and 2★ slices of the star histogram and drops anything above your threshold. Example: 10 → no more than 10% of reviews may be 1–2★. Default is 100 (off).",
            "default": 100
          },
          "onlyBadgedDeals": {
            "title": "🏷️ Only deals Amazon itself badges",
            "type": "boolean",
            "description": "Keep only rows carrying Amazon's own deal badge (about 89% of rows) — the '30% off' label plus its 'Limited time deal' / 'Ends in …' messaging. Default is false.",
            "default": false
          },
          "onlyPrimeExclusiveBadge": {
            "title": "📦 Only deals badged 'With Prime'",
            "type": "boolean",
            "description": "Keep only deals whose badge messaging reads 'With Prime'. Important: this is a label filter, not a Prime search — the scraper can only keep the deals Amazon itself marked that way (a small minority of any run), it cannot ask Amazon for Prime-exclusive deals. Default is false.",
            "default": false
          },
          "includeStarHistogram": {
            "title": "📊 Include the 1–5★ histogram columns",
            "type": "boolean",
            "description": "Adds the five per-star percentage columns (starsOnePercent … starsFivePercent) to every row. Turn off for a narrower table; the positiveReviewPercent and criticalReviewPercent summaries are emitted either way. Default is true.",
            "default": true
          },
          "sortBy": {
            "title": "🔀 Sort the results by",
            "enum": [
              "default",
              "ratingWeightedDiscount",
              "rating",
              "reviewCount",
              "discount"
            ],
            "type": "string",
            "description": "How to order the returned deals. 'Best value for the rating' multiplies the discount by the rating, so 60% off at 4.6★ outranks 70% off at 3.2★. Any option other than Amazon's own ranking makes the scraper read the whole window before returning. Default is Amazon's ranking.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "Optional. The deals feed is reachable directly, so no proxy is needed by default. Enable one 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}