{
  "openapi": "3.0.1",
  "info": {
    "title": "BidSpotter Auction Scraper — Industrial & Machinery Lots",
    "description": "Paste any BidSpotter URL — catalogue, category, search or lot — for one row per lot: lot title, lot number, current bid, opening price, currency, bid count, watchers, category, brand, lot location, venue address, exact closing time, auction title, auctioneer and lot URL. No login, no browser.",
    "version": "0.1",
    "x-build-id": "B3iFmhWHRtb5g2wUK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~bidspotter-auction-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-bidspotter-auction-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~bidspotter-auction-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-bidspotter-auction-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~bidspotter-auction-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-bidspotter-auction-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": {
          "startUrls": {
            "title": "Start URLs — paste any BidSpotter page",
            "type": "array",
            "description": "Any bidspotter.com URL. An auction catalogue (https://www.bidspotter.com/en-us/auction-catalogues/bscpau/catalogue-id-bscpau10398) returns live current bids, because BidSpotter only renders bids into catalogue HTML. A category (https://www.bidspotter.com/en-us/for-sale/metalworking) or a keyword search (https://www.bidspotter.com/en-us/search-forklift) is for discovery and leaves currentBid empty — bidCount still shows which lots have action. A single lot URL is trimmed back to its catalogue and the whole catalogue is scraped. A non-BidSpotter URL stops the run with an error listing the accepted shapes rather than returning nothing.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "source": {
            "title": "…or build the scope here (used only when Start URLs is empty)",
            "enum": [
              "category",
              "search",
              "allAuctions",
              "auctionUrls"
            ],
            "type": "string",
            "description": "Ignored whenever Start URLs above has a value. 'Category' walks one of BidSpotter's 14 primary categories, 'Search' walks a keyword search across every live lot, 'All live auctions' walks every catalogue in BidSpotter's own sitemap (~2,200 live). All of them return the same lot row shape, so you can mix runs in one dataset.",
            "default": "category"
          },
          "categories": {
            "title": "Categories (when source = Category)",
            "type": "array",
            "description": "One or more of BidSpotter's 14 primary category slugs. An unrecognised slug logs a warning listing the 14 valid ones rather than silently returning nothing. Valid: agricultural-equipment, automotive-and-vehicles, computers-and-electronics, drilling-mining-and-forestry, food-and-beverage-equipment, heavy-construction-equipment, industrial-and-commercial, laboratory-and-pharmaceutical-equipment, metalworking, other-industries, plastics-and-rubber-machinery, printing-equipment, real-estate, woodworking.",
            "default": [
              "metalworking"
            ],
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search terms (when source = Search)",
            "type": "array",
            "description": "Keywords typed exactly as you would into BidSpotter's search box, e.g. 'forklift', 'cnc lathe', 'excavator'. Each term is walked page by page until the lot cap is hit, and lots are de-duplicated by lot ID across terms so an overlapping pair of keywords never bills you twice for the same lot.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeLotDetails": {
            "title": "Open each lot page for full detail",
            "type": "boolean",
            "description": "ON (default): opens every lot's own page to add category, sub-category, lot-level location, venue address, exact per-lot closing time, bid count, watchers, brand and item type — measured 100% fill on category, primaryCategory, lotLocation, bidCount, watchers and lotStatus across 180 lots. Costs one extra request per lot, roughly 6x slower (180 lots in ~136s with it, ~22s for 40 lots without). OFF: listing pages only — fast, and you still get lot title, lot number, current bid, opening price, currency, auction title, auctioneer, auction dates and lot URL. The price per lot is identical either way.",
            "default": true
          },
          "resolveAuctionInfo": {
            "title": "Resolve the auction header on category / search runs",
            "type": "boolean",
            "description": "Category and search listing pages do not name the auction a lot belongs to. ON (default) looks each unique auction up once, cached, from its lightweight terms page (~175 KB instead of the ~1.2 MB catalogue page), so every row carries auction title, auctioneer, auction status, start/end dates and venue city/country. One small extra request per auction, not per lot. Has no effect when you scrape catalogue URLs, which already carry the header.",
            "default": true
          },
          "includeClosedLots": {
            "title": "Include closed / already-sold lots",
            "type": "boolean",
            "description": "OFF (default) skips lots whose bidding has closed, before they are pushed, so you only pay for lots you can still bid on. Turn ON to build a sold-comps history — but note that many BidSpotter auctioneers opt out of publishing results, so a closed lot often carries no price at all.",
            "default": false
          },
          "maxLots": {
            "title": "Max lots per run (your cost cap)",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on lots returned this run. You are billed $0.003 per lot returned, so this is also your cost ceiling: 50 lots = $0.15, 200 lots = $0.60, 5,000 lots = $15. Duplicates and closed lots are dropped before billing and never count against it. Set 0 for no cap — a BidSpotter category can run to tens of thousands of lots.",
            "default": 200
          },
          "maxAuctions": {
            "title": "Max auctions (only when source = All live auctions)",
            "minimum": 1,
            "type": "integer",
            "description": "How many catalogues to take from BidSpotter's sitemap, which lists roughly 2,200 live at any time. Ignored by every other scope. Catalogues vary from a handful of lots to several hundred, so keep 'Max lots' as the real cost cap.",
            "default": 25
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "BidSpotter sits behind AWS WAF, but the plain Apify datacenter proxy is enough on the route this Actor uses: two sustained-load tests over 20 contiguous auction catalogue URLs returned 20/20 and 19/20 successful page loads on datacenter, versus 3/20 and 5/20 on the literal catalogue URL. No residential bandwidth needed, so leave this as-is unless you have a reason.",
            "default": {
              "useApifyProxy": true
            }
          },
          "requestConcurrency": {
            "title": "Request concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Parallel requests for lot-detail and auction-header fetches. Kept low on purpose to stay polite to BidSpotter; 4 is the measured default and anything above 5 is clamped to 5. Raising it does not reduce your bill — you pay per lot, not per request.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}