# Bidsquare Live Tracker (`gertz_harman/bidsquare-live-tracker`) Actor

Bidsquare.com 경매 마켓플레이스의 실시간 웹소켓 이벤트(경매 진행상태, 현재 lot 등)를 수집합니다.

- **URL**: https://apify.com/gertz\_harman/bidsquare-live-tracker.md
- **Developed by:** [GERTZ HARMAN](https://apify.com/gertz_harman) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 auction events

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Track **real-time auction events** from [Bidsquare](https://www.bidsquare.com/) — a marketplace hosting dozens of independent art, antiques, and estate auction houses (Brunk Auctions, Kodner, Augusta Auctions, and many more) that run their sales through Bidsquare's shared bidding platform. Bidsquare pushes live auction state over a WebSocket the moment you open a catalog page — no login required — and this Actor listens to that same feed instead of repeatedly re-scraping a page. Just give it one or more Bidsquare auction catalog URLs and a monitoring duration.

### Why use Bidsquare Live Tracker?

Existing Bidsquare tools on the market scrape static, server-rendered pages — useful for browsing listings, but they can't tell you the instant an auction's active lot changes or a bid comes in. This Actor connects to Bidsquare's actual live-auction feed (confirmed by watching a real sale in progress) and captures real bid events, lot transitions, and auctioneer messages as they happen. It is built for:

- **Collectors and dealers** watching several sales across different Bidsquare-hosted auction houses at once, without refreshing tabs.
- **Live-auction tooling** — building your own notification bot, dashboard, or bidding assistant on top of real-time state instead of a polled snapshot.
- **Research into how a sale actually unfolds** — which lot is live, how the auction's status changes over the course of a sale — not just the final result.

### How to use Bidsquare Live Tracker

1. Find a Bidsquare auction's catalog page (URL pattern `bidsquare.com/auctions/<house>/<sale-slug>/catalog`).
2. Paste one or more of these URLs into **Auction catalog URLs**.
3. Set **Max monitoring duration** to cover the window you want to watch (e.g. the scheduled sale time).
4. Run the Actor. It connects to Bidsquare's live feed and records every real-time event for that auction — watch the **Output** tab fill in live.
5. Export as JSON, CSV, or Excel, or pull results via the Apify API.

### Input

| Field | Type | Description |
|---|---|---|
| `auction_urls` | array of URLs | One or more Bidsquare auction catalog page URLs to monitor |
| `max_duration_secs` | integer | How long (in seconds) to keep listening before the run ends (default: 120) |

```json
{
  "auction_urls": [
    { "url": "https://www.bidsquare.com/auctions/hakes-auctions/september-2026-pop-culture-auction-24709/catalog" }
  ],
  "max_duration_secs": 120
}
```

### Output

Each dataset item is one real-time event from the auction's live feed. Six event types (confirmed directly against a live sale in progress) are parsed into structured fields — `auctionSnapshot` (auction status + active lot), `auctionLotSnapshot` (a lot's current bid state), `lotItemStarted` / `lotItemSkipped` (a lot opening or closing), `lotMessageFromAdmin` (auctioneer messages like "Fair Warning!"), and `floorBidAccepted` (an actual bid being placed):

```json
{
  "source_url": "https://www.bidsquare.com/auctions/robinhood-auctions/the-summer-fine-art-auction-24846/catalog",
  "event_action": "floorBidAccepted",
  "send_time": 1790103739107,
  "auctionID": 24846,
  "lotID": 9864892,
  "lotNumber": "196",
  "bid": 500,
  "highestBidder": "0",
  "startingPrice": 480,
  "nextBid": 550,
  "numberOfBids": 2,
  "isReservePriceMet": true,
  "observed_at": "2026-09-22T19:02:20.059283+00:00"
}
```

Any other real-time event Bidsquare's feed sends is captured too, with its event name in `event_action` and its full original payload preserved in `raw_data`, so you never miss an event even for message types this Actor doesn't have a dedicated field mapping for yet.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

#### Data table

| Field | Description |
|---|---|
| `event_action` | The type of real-time event (`auctionSnapshot`, `auctionLotSnapshot`, `lotItemStarted`, `lotItemSkipped`, `lotMessageFromAdmin`, `floorBidAccepted`, or others) |
| `lotID`, `lotNumber`, `lotName` | Identifiers for the lot the event concerns |
| `bid` | The bid amount, for `floorBidAccepted` events |
| `currentBid`, `numberOfBids`, `nextBid` | A lot's live bidding state, for `auctionLotSnapshot` events |
| `messageText` | The auctioneer's message text, for `lotMessageFromAdmin` events |
| `currentLotID`, `currentLotNumber` | Which lot is currently active in the sale, for `auctionSnapshot` events |
| `raw_data` | Full original event payload for event types not yet broken into dedicated fields |
| `observed_at` | Timestamp when this Actor captured the event |

### Pricing / Cost estimation

This Actor uses the pay-per-event pricing model — you pay only for each real-time event actually captured (event: `auction-event`), not for idle connection time. A quiet auction with no activity costs nothing beyond the initial page load.

### Tips

- Point this at an auction close to its scheduled live/closing time for the highest density of events.
- Combine with Apify's [Scheduler](https://docs.apify.com/platform/schedules) to start a run a few minutes before a sale begins.
- Pipe the dataset into an Apify [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Telegram integration](https://docs.apify.com/platform/integrations/telegram) to get alerted when the active lot changes.

### FAQ & disclaimers

This Actor only reads data that a normal visitor's browser already receives when viewing a public auction catalog page — it does not place bids, log in, or bypass any access control. It is intended for personal research, auction monitoring, and building notification tools. Always respect Bidsquare's Terms of Service for your specific use case. The real-time protocol was reverse-engineered by observing an actual live sale in progress and isn't officially documented by Bidsquare, so message formats may evolve over time — if this Actor stops returning useful data, please open an issue.

# Actor input Schema

## `auction_urls` (type: `array`):

Bidsquare.com 경매 카탈로그 페이지 URL 목록 (예: https://www.bidsquare.com/auctions/<house>/<slug>/catalog)

## `max_duration_secs` (type: `integer`):

이 시간(초) 동안 실시간 이벤트를 수집한 뒤 종료합니다.

## Actor input object example

```json
{
  "auction_urls": [
    {
      "url": "https://www.bidsquare.com/auctions/hakes-auctions/september-2026-pop-culture-auction-24709/catalog"
    }
  ],
  "max_duration_secs": 120
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "auction_urls": [
        {
            "url": "https://www.bidsquare.com/auctions/hakes-auctions/september-2026-pop-culture-auction-24709/catalog"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("gertz_harman/bidsquare-live-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "auction_urls": [{ "url": "https://www.bidsquare.com/auctions/hakes-auctions/september-2026-pop-culture-auction-24709/catalog" }] }

# Run the Actor and wait for it to finish
run = client.actor("gertz_harman/bidsquare-live-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "auction_urls": [
    {
      "url": "https://www.bidsquare.com/auctions/hakes-auctions/september-2026-pop-culture-auction-24709/catalog"
    }
  ]
}' |
apify call gertz_harman/bidsquare-live-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gertz_harman/bidsquare-live-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/TV5Mwqoam1ZdmcweO/builds/pNndKTmTIxOwx6tXG/openapi.json
