{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Today's Deals Scraper & Affiliate Link Builder",
    "description": "Amazon Today's Deals Scraper extracts deal listings, prices, discounts, ratings, reviews, ASINs, images, and product URLs, with affiliate link generation. Ideal for deal tracking, affiliate marketing, price monitoring, product research, and e-commerce intelligence.",
    "version": "0.1",
    "x-build-id": "3hqdB23nvp5tuWxg2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~amazon-todays-deals-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-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/simpleapi~amazon-todays-deals-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-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/simpleapi~amazon-todays-deals-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-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": 500,
            "type": "integer",
            "description": "Number of deals to pull from Amazon's Today's Deals. Amazon's deals surface exposes a maximum of 500 deals at a time, so anything above 500 is collected as 500 and noted in the log. Example: 50 for a newsletter issue, 500 for a full daily sweep. Default is 50.",
            "default": 50
          },
          "titleKeywords": {
            "title": "🔍 Only keep deals whose title contains…",
            "type": "array",
            "description": "Optional. Keep only deals whose product title contains at least one of these words (case-insensitive). Applied after collection, because Amazon's deals API has no text-search parameter. Example: [\"headphones\", \"laptop\"] → only those deals reach your dataset. Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "associateTag": {
            "title": "🔗 Your Amazon Associates tag",
            "type": "string",
            "description": "Your own Amazon Associates tracking ID, e.g. yourstore-20. It is appended to each product link as ?tag=… and returned in the affiliateLink column, uncloaked — a plain amazon.com URL with no shortener and no redirect hop, as the Associates Operating Agreement requires. Leave this empty and affiliateLink comes back null; nothing is ever tagged with someone else's ID."
          },
          "linkFormat": {
            "title": "🧭 Link style",
            "enum": [
              "short",
              "full"
            ],
            "type": "string",
            "description": "How the product URL is built before the tag is added. Canonical is the short, clean form most publishers use. Default is canonical.",
            "default": "short"
          },
          "postTemplate": {
            "title": "✍️ Post text template",
            "type": "string",
            "description": "A plain-text template rendered into the postText column for every row. Available placeholders: {title} {asin} {price} {wasPrice} {discount} {savings} {currency} {link} {image} {badge} {category}. {link} uses your affiliate link when a tag is set, otherwise the plain product URL. Use \\n for a line break. Clear this field to leave postText null. This actor only builds the text — it holds no bot token and posts nothing anywhere.",
            "default": "{title} — {discount}% off, now {price} (was {wasPrice})\\n{link}"
          },
          "imageSize": {
            "title": "🖼️ Which image sizes to list",
            "enum": [
              "both",
              "hiRes",
              "lowRes"
            ],
            "type": "string",
            "description": "Picks which URLs go into the flat imageUrls column. High resolution is roughly 2000px wide for hero shots; low resolution is roughly 500px for thumbnails and list views. If a photo is missing the size you asked for, the other one is used rather than returning a blank. Default is both.",
            "default": "both"
          },
          "maxImagesPerProduct": {
            "title": "🔢 Cap photos per product",
            "minimum": 0,
            "maximum": 25,
            "type": "integer",
            "description": "Keep only the first N photos of each product, in Amazon's own order (the MAIN pack shot comes first). Example: 3 → a hero image plus two supporting shots. Set 0 for every photo Amazon has. Default is 0.",
            "default": 0
          },
          "skipNonDealRows": {
            "title": "🧹 Drop carousel filler rows",
            "type": "boolean",
            "description": "Some rows on this surface arrive with a title and an ASIN but no price, no discount and no deal window — carousel filler rather than a deal. How many varies by run: a measured 500-deal sweep returned 2 of them. Leave this on to drop them; they are never billed either way. Turn it off to see every row Amazon returned, flagged by the isDeal column. Default is on.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}