{
  "openapi": "3.0.1",
  "info": {
    "title": "LockerFox Storage Auction Scraper — Lots, Bids & Facilities",
    "description": "From $3.50 per 1,000 rows, no start fee. Every open storage-unit lien auction on LockerFox: current bid, exact UTC close time, unit size, contents, photos, plus the facility name, street, city, state, ZIP, phone and hours. 4,740 live lots at 1,005 facilities across 43 states, counted.",
    "version": "0.1",
    "x-build-id": "smn5gTPBMcJMw8VB2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~lockerfox-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-lockerfox-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~lockerfox-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-lockerfox-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~lockerfox-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-lockerfox-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": {
          "mode": {
            "title": "Row type",
            "enum": [
              "lots",
              "facilities"
            ],
            "type": "string",
            "description": "LOTS (default): current bid, exact close time, unit size, contents, photos, cleanout deposit, pickup window, plus the full facility contact block. FACILITIES: facility name, address, phone, 7-day opening hours, next sale date and time, open lot count and lot ids, and the bid range across its open lots.",
            "default": "lots"
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "State slugs (\"texas\", \"north-carolina\") or two-letter codes (\"TX\", \"NC\"). Multiple entries are OR-ed. Anything the site does not publish is reported in RUN_SUMMARY.warnings rather than silently dropped. Leave empty for all 43 states.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "facilityUrls": {
            "title": "Specific facilities",
            "type": "array",
            "description": "Restrict the run to named facilities, skipping the state walk entirely. Paste the facility page URL or its path, e.g. \"https://www.lockerfox.com/storage-auctions/us/texas/hallettsville/u-lock-self-storage/\". Takes precedence over States.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "lotIds": {
            "title": "Specific lot IDs (Lots mode only)",
            "type": "array",
            "description": "Look up known lots directly and skip enumeration completely — the cheapest way to re-check prices on a watchlist. The lot ID is the number in /auctions/details/<id>, e.g. \"20942220\". Overrides States and Specific facilities.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "City name contains",
            "type": "array",
            "description": "Keep only lots whose facility address line contains one of these (case-insensitive), e.g. [\"austin\", \"san antonio\"]. Applied to the listing card before any detail page is fetched, so filtered-out lots cost you nothing.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "zipCodes": {
            "title": "ZIP codes",
            "type": "array",
            "description": "Keep only lots whose facility address line contains one of these ZIP codes, e.g. [\"78701\", \"77964\"]. Exact 5-digit strings; there is no radius search because LockerFox does not publish facility coordinates.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Contents keyword",
            "type": "array",
            "description": "Keep only lots whose contents summary or title contains one of these (case-insensitive), e.g. [\"tools\", \"electronics\", \"appliances\"]. Multiple entries are OR-ed. The site's own contents vocabulary includes: Appliances, Bags, Books, Boxes & Totes, Clothes, Electronics, Furniture, Household Goods, Misc Items, Sporting Goods, Tools & Workshop, Toys.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minCurrentBid": {
            "title": "Minimum current bid (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only lots already bid at or above this. Measured spread on a 59-lot national sample: $0 on 16 of 59, then $10-$190, with the busiest facility lot at $710."
          },
          "maxCurrentBid": {
            "title": "Maximum current bid (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only lots at or below this — the bargain filter. Combine with \"No bids yet\" to find units nobody has touched."
          },
          "listingStatus": {
            "title": "Open now or opening soon",
            "enum": [
              "any",
              "open",
              "openSoon"
            ],
            "type": "string",
            "description": "LockerFox lists two kinds of lot. OPEN lots are biddable now and have a full detail page. OPENING SOON lots are already announced with a facility, address, unit size and contents summary, but the site publishes no detail page and no photos until bidding starts, so those rows carry the card fields only and say so via listingStatus. Measured on 2026-09-18: 3,778 open and 963 opening soon, 4,741 lots in all.",
            "default": "any"
          },
          "bidState": {
            "title": "Bidding activity",
            "enum": [
              "any",
              "noBidsYet",
              "hasBids"
            ],
            "type": "string",
            "description": "Measured on a 59-lot national sample: 16 sat at $0 with no bidder, 43 had a bid and a named leading bidder. The two sets are exactly complementary — there were no lots with a bid and no bidder, or a bidder and no bid.",
            "default": "any"
          },
          "minUnitAreaSqFt": {
            "title": "Minimum unit size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Derived from the unit's published dimensions: a \"10 x 15\" unit is 150 sq ft. Use it to skip lockers too small to be worth the trip."
          },
          "maxUnitAreaSqFt": {
            "title": "Maximum unit size (sq ft)",
            "minimum": 0,
            "type": "integer",
            "description": "Derived from the unit's published dimensions. Use it to skip units bigger than your van."
          },
          "closingWithinHours": {
            "title": "Closing within N hours",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only lots whose countdown is under this many hours — the \"what can I still win today\" filter. Read from the listing card's own countdown, so it costs nothing to apply."
          },
          "fetchLotDetails": {
            "title": "Fetch the lot detail page",
            "type": "boolean",
            "description": "ON (recommended, the default): one extra request per lot buys the exact UTC close time, listing type, pickup window, cleanout deposit, minimum bid, the full photo gallery, the unit description, the facility's 7-day opening hours, its seller rating and the free-text payment/cleanout instructions. OFF: about four times faster and lighter, but 16 fields come back null for every row at the same price per row — only worth it for a fast price sweep.",
            "default": true
          },
          "includeBidHistory": {
            "title": "Include live bid history",
            "type": "boolean",
            "description": "Adds liveBid, liveHighBidder, auctionStatus, totalBids, uniqueBidders and the complete bidHistory array (every bid with its amount, date, bidder handle and whether it was a manual or an automatic proxy raise). Read from LockerFox's own public bid database — no login, no extra charge. Measured on a 59-lot sample: the node answered for 59 of 59 lots, and carried a bid history for all 43 lots that had received a bid.",
            "default": false
          },
          "maxRows": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on rows delivered AND charged. Enumeration stops as soon as the cap is reached, so a small cap is genuinely cheap — it does not walk the country first. The whole national inventory was 4,740 lots / 1,005 facilities on 2026-09-18, so 5000 comfortably covers \"everything\".",
            "default": 50
          },
          "concurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Requests in flight. Measured 30 requests/second at 6 with zero errors across 1,250+ requests. Note that lockerfox.com/robots.txt asks for a Crawl-delay of 5 seconds, which no setting here honours — see the README's Source and limits section.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy on the shared datacenter pool is the default because it was measured byte-identical to a residential exit and to a home IP on every surface (state page 277,995 B, lot page 57,253 B), with no Cloudflare, no CAPTCHA and no rate limiting across 1,250+ requests. Switch to RESIDENTIAL only if your own network is treated differently.",
            "default": {
              "useApifyProxy": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}