{
  "openapi": "3.0.1",
  "info": {
    "title": "StorageTreasures Scraper & Auction Monitor",
    "description": "Scrape StorageTreasures storage-unit auctions — current bid, unit size, contents,\n  photos, facility & location — by state, city, ZIP, or facility. Run it on a schedule\n  as a new-lot monitor with Slack, email & webhook alerts.",
    "version": "0.1",
    "x-build-id": "nF72JBxGQ25HiPbJU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~storagetreasures-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-storagetreasures-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/scrapersdelight~storagetreasures-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-storagetreasures-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/scrapersdelight~storagetreasures-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-storagetreasures-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": {
          "searchType": {
            "title": "Search type",
            "enum": [
              "state",
              "city",
              "zipcode",
              "facility",
              "keyword",
              "all"
            ],
            "type": "string",
            "description": "How to scope the crawl. Maps to StorageTreasures' own search modes. 'all' walks every US state.",
            "default": "state"
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "Two-letter state abbreviations to crawl, e.g. tx, fl, nv. Used when Search type = By state (or By city, to disambiguate).",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City name when Search type = By city (pair with a state)."
          },
          "zipcodes": {
            "title": "ZIP codes",
            "type": "array",
            "description": "ZIP codes when Search type = By ZIP + radius. Pair with the radius below.",
            "items": {
              "type": "string"
            }
          },
          "radiusMiles": {
            "title": "Radius (miles)",
            "minimum": 5,
            "maximum": 500,
            "type": "integer",
            "description": "Search radius around each ZIP/city. StorageTreasures supports 5-500.",
            "default": 50
          },
          "facilityId": {
            "title": "Facility ID",
            "type": "string",
            "description": "Restrict to a single facility (facility_id) when Search type = By facility."
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text keyword when Search type = By keyword (matches lot title/contents)."
          },
          "status": {
            "title": "Auction status",
            "enum": [
              "active",
              "sold",
              "all"
            ],
            "type": "string",
            "description": "Filter by status. 'active' = currently biddable; 'sold' enables price-history/comps pulls.",
            "default": "active"
          },
          "maxBid": {
            "title": "Max current bid ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return lots whose current bid is at or below this (bargain filter). Leave empty for no cap."
          },
          "fetchDetails": {
            "title": "Fetch full details",
            "type": "boolean",
            "description": "Call the per-lot detail endpoint to add description, full address, lat/lng and all photos. One extra request per lot.",
            "default": true
          },
          "maxLots": {
            "title": "Max lots per run",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on lots scraped this run (cost/safety guard). Defaults to 50 for a fast first run — set to 0 for an unlimited bulk scrape of the whole scope.",
            "default": 50
          },
          "monitorMode": {
            "title": "Monitor mode (new-lot watcher)",
            "type": "boolean",
            "description": "Recurring watcher: diff against the prior run's seen lots (per scope) and output/alert ONLY newly-listed lots. Pair with an Apify Schedule.",
            "default": false
          },
          "alertOnNewLot": {
            "title": "Alert on new lots",
            "type": "boolean",
            "description": "In monitor mode, deliver an alert for each newly-listed lot via the channels below.",
            "default": true
          },
          "alertOnBidChange": {
            "title": "Alert on bid changes (watchlist)",
            "type": "boolean",
            "description": "Also alert when the current bid changes on a watched lot (see watchlist IDs).",
            "default": false
          },
          "watchlistAuctionIds": {
            "title": "Watchlist auction IDs",
            "type": "array",
            "description": "Specific auction_ids to track for bid changes when 'Alert on bid changes' is on.",
            "items": {
              "type": "string"
            }
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "POST endpoint for new-lot alert payloads (Make / Zapier / n8n / custom). One JSON body per alert."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Slack incoming-webhook URL for formatted new-lot cards."
          },
          "emailRecipients": {
            "title": "Email recipients",
            "type": "array",
            "description": "Email addresses for the new-lot digest (sent via apify/send-mail).",
            "items": {
              "type": "string"
            }
          },
          "apiKey": {
            "title": "API key (optional)",
            "type": "string",
            "description": "Leave EMPTY. The actor reads StorageTreasures' current public API key from the live site at runtime. Only set this if automatic extraction ever fails (the key is published in the site's own page JavaScript)."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy settings. Datacenter rotation is enough; switch to residential only for aggressive full-country bulk pulls.",
            "default": {
              "useApifyProxy": true
            }
          },
          "requestConcurrency": {
            "title": "Request concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Max parallel requests for both page fetches and detail fetches. Higher = faster full-feed scans; keep modest to respect the site's rate limits.",
            "default": 5
          },
          "pageSize": {
            "title": "Page size (records per request)",
            "minimum": 30,
            "maximum": 500,
            "type": "integer",
            "description": "How many lots to pull per list request. Larger = fewer round-trips = faster. The actor auto-detects the server's real cap if this is too high.",
            "default": 200
          },
          "diagnose": {
            "title": "Diagnostic mode (dev)",
            "type": "boolean",
            "description": "Dev only. Dumps the raw API record shapes to the log + key-value store (DEBUG_RAW_LIST / DEBUG_RAW_DETAIL) and probes which param filters by state, then exits. Use to fix field mappings; leave off for normal runs.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}