# Gooding Christie's Auction Results Scraper (`normdata/gooding-scraper`) Actor

Scrape Gooding Christie's collector car auction results and upcoming lots: sale price, estimates, chassis and engine numbers, coachwork, highlights, specs, provenance and photos. Filter by make, model, year, price, venue and auction year. For dealers, appraisers, insurers and collectors.

- **URL**: https://apify.com/normdata/gooding-scraper.md
- **Developed by:** [Norm Data](https://apify.com/normdata) (community)
- **Categories:** E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $14.00 / 1,000 lots

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

![Norm Data](https://raw.githubusercontent.com/FabriAV/normdata/refs/heads/main/assets/banner_norm2.png)

## 🏎️ Gooding Christie's Scraper - Classic Car Auction Results

Extract every lot from **Gooding Christie's** (formerly Gooding & Company), one of the top collector car auction houses, with about **9,600 lots from 2004 to today**: about 6,900 cars, 240 motorcycles and 2,500 pieces of automobilia, from **Pebble Beach, Amelia Island, Scottsdale, London, Paris, Geneva, New York** and online auctions. For each lot you get the **sale price with buyer's premium, status (sold, not sold, upcoming, bidding open), low and high estimate, currency, lot number, year, make, model, chassis and engine numbers, coachbuilder, collection, auction, venue, date, no reserve, sales specialist, catalogue description, saleroom notices, highlights, specifications, provenance, exhibitions and concours awards, literature, video and every photo**. Search with **12 filters**, sort by price or year, or paste lot and auction links, and run it on a schedule to get **only new lots**.

### 🎯 Who uses it?

#### 📈 Collector car valuation and price guide teams

Build price histories by make, model and year from 20 years of hammer results with buyer's premium, estimates and no reserve flags.

#### 🚗 Dealers, brokers and collectors

Check what a car really sold for, how it did against its estimate, and which chassis came back to auction, before you buy or consign.

#### 🏦 Insurers, lenders and appraisers

Back agreed values and loans with real sale prices, catalogue specs, provenance and concours history.

#### 📰 Journalists, researchers and historians

Follow a car through owners, shows and books, and see what the market paid at each big auction week.

### ✨ What it does

- **The whole archive.** About 9,600 lots since 2004, sold or not, plus upcoming sales. The site's search shows only 1,000 lots per search, so the Actor splits big searches by auction year, sale type, item type and venue to get every lot.
- **12 filters.** Status (sold, not sold, upcoming), search terms, item type, make, model contains, model year range, price range, auction year range, venue, sale type, currency and no reserve only.
- **6 sorts.** Newest or oldest auctions, price high or low, model year new or old.
- **Full catalogue data.** Each lot page is read for chassis, engine, coachwork, description, highlights, specs, provenance, exhibitions, literature and photos, at no extra charge.
- **Or paste links.** Lot pages and auction pages (every lot of that auction, in lot order). Filters are not used with links.
- **Monitoring:** run it on a schedule with **Only new lots**, and each run saves only the lots you haven't received yet.

### 🏆 Why this scraper

- **The only Gooding Christie's scraper on the Apify Store** (October 2026).
- **Real results.** Sale prices include the buyer's premium, exactly as the site shows them, with the status worked out like on the site.
- **Catalogue depth.** Chassis, engine, coachwork, provenance, exhibitions and literature as clean lists, not one block of text.
- **Clean, flat, typed data.** Prices and years are numbers, dates are ISO, yes/no fields are true or false. 45 fields, one row per lot.
- **Fast.** 1,000 lots in about 15 seconds, the whole site in a few minutes.
- **Nothing to set up.** No proxy, no login.

### 📦 What data you get

| Field | Description |
| --- | --- |
| `imageUrl` | Main photo. |
| `title` | Lot title, like "1995 McLaren F1". |
| `year`, `make`, `model` | Model year, make and model. Empty for automobilia. |
| `itemType` | Car, Motorcycle or Automobilia. |
| `status` | Sold, Not sold, Upcoming, Bidding open or Available (private sales). |
| `price` | Price paid, including the buyer's premium, in the auction's currency. Empty when not sold, or when the site keeps a private sale price hidden. |
| `askingPrice` | Asking price of a private sale, when the site shows one. |
| `currency` | USD, GBP, EUR or CHF. |
| `estimateLow`, `estimateHigh` | Pre-sale estimate. |
| `estimateText` | Estimates without numbers, like "In Excess of $15,000,000". |
| `lotNumber` | Lot number in its auction. |
| `chassis`, `engine`, `coachwork` | Chassis or VIN, engine number and coachbuilder, as printed in the catalogue. |
| `collection` | Collection the lot came from, like "From the Donald L. Weber Collection". |
| `auction`, `saleType`, `venue`, `country` | Auction name, sale type (Live auction, Online auction, Private sale), venue and country code. |
| `salesSpecialist` | Gooding Christie's specialist in charge of the lot. |
| `description` | Catalogue text, when the site has it (mostly recent and upcoming lots). |
| `saleroomNotice` | Notes added before the sale, like title or registration remarks. |
| `imageCount` | Number of photos. |
| `lotId`, `auctionId` | Gooding Christie's ids for the lot and its auction. |
| `withoutReserve` | True when offered without reserve. |
| `approximateYear` | True when the catalogue gives the year as "circa". |
| `onlineBidding` | True when online bidding was offered. |
| `featured` | True for lots the site features. |
| `url`, `auctionUrl`, `bidUrl`, `videoUrl` | Lot page, auction page, online bidding page and video. |
| `highlights` | Catalogue highlights. |
| `specifications` | Engine, gearbox, brakes and other specs. |
| `provenance`, `exhibitions`, `literature` | Past owners, exhibitions and concours awards, and books and articles about the car (top lots). |
| `images` | Every photo, full size. |
| `auctionDate` | First day of the auction. |
| `biddingClosesAt` | When bidding closed or closes (online auctions). |
| `scrapedAt` | When this row was saved. |

#### Example row (trimmed)

```json
{
  "imageUrl": "https://media.goodingco.com/image/upload/Prod/RN26_Retromobile%20New%20York%202026/820_1937%20Rolls-Royce%20Phantom%20III%20Special%20Henly%20Coupe/1937_Rolls-Royce_Phantom_III_SH_Coupe_39_gp7y1o",
  "title": "1937 Rolls-Royce Phantom III Special Henley Coupe",
  "year": 1937,
  "make": "Rolls-Royce",
  "model": "Phantom III Special Henley Coupe",
  "itemType": "Car",
  "status": "Upcoming",
  "currency": "USD",
  "estimateLow": 450000,
  "estimateHigh": 650000,
  "lotNumber": 50,
  "chassis": "3CP124",
  "engine": "T38J",
  "coachwork": "J.S. Inskip",
  "auction": "Retromobile New York Auctions",
  "saleType": "Live auction",
  "venue": "Retromobile New York",
  "country": "US",
  "salesSpecialist": "James Knight",
  "description": "As the 1930s advanced, multi-cylinder V-12 powerplants were seen in Cadillac, Packard, and Pierce-Arrow motorcars, as well as in Lagondas in the UK. Then Rolls-Royce upped its ...",
  "imageCount": 7,
  "lotId": "3uqyqcPh3CrippuL5Bz4CH",
  "auctionId": "4fuE8ObWrw0aGPrcfckhI7",
  "withoutReserve": true,
  "approximateYear": false,
  "onlineBidding": true,
  "featured": false,
  "url": "https://www.goodingco.com/lot/1937-rolls-royce-phantom-iii-special-henley-coupe-rn26",
  "auctionUrl": "https://www.goodingco.com/auction/retromobile-new-york-auctions-2026",
  "videoUrl": "https://youtu.be/Mb0gcT-5cxU",
  "highlights": ["The Property of Noted Collector Lord Bamford", "Acquired New by Mrs. Margaret Dunlop of New York", "Featured in Numerous Books and Periodicals"],
  "provenance": ["Margaret Dunlop, Amsterdam, New York (purchased new in 1937)", "Walter J. Noonan, Boston, Massachusetts (acquired via Inskip in 1946)", "L.W. Bickford, Springfield, Massachusetts (acquired in 1946)"],
  "exhibitions": ["Pebble Beach Concours d’Elegance®, 2019 (First in Class and Lucius Beebe Trophy)", "Rolls-Royce Enthusiasts’ Club Annual Rally & Concours d’Elegance, 2020 (First in Class)"],
  "literature": ["Playboy, April 1958", "Rolls-Royce: An Album of Sales and Institutional Literature, Volume I: The British Rolls, by Dan R. Post", "Rolls-Royce in America, John Webb de Campi"],
  "images": [
    "https://media.goodingco.com/image/upload/Prod/RN26_Retromobile%20New%20York%202026/820_1937%20Rolls-Royce%20Phantom%20III%20Special%20Henly%20Coupe/1937_Rolls-Royce_Phantom_III_SH_Coupe_39_gp7y1o",
    "https://media.goodingco.com/image/upload/Prod/RN26_Retromobile%20New%20York%202026/820_1937%20Rolls-Royce%20Phantom%20III%20Special%20Henly%20Coupe/1937_Rolls-Royce_Phantom_III_SH_Coupe_36_e1gioh",
    "https://media.goodingco.com/image/upload/Prod/RN26_Retromobile%20New%20York%202026/820_1937%20Rolls-Royce%20Phantom%20III%20Special%20Henly%20Coupe/1937_Rolls-Royce_Phantom_III_SH_Coupe_61_qbeozp"
  ],
  "auctionDate": "2026-11-20",
  "scrapedAt": "2026-10-22T03:25:17.493Z"
}
```

### 💡 Use cases

**Every Ferrari sold, highest price first:**

```json
{
  "status": "sold",
  "makes": ["Ferrari"],
  "sortBy": "priceDesc"
}
```

**Porsche 911s from 1964 to 1973 sold for over $100,000 since 2018:**

```json
{
  "status": "sold",
  "makes": ["Porsche"],
  "models": ["911"],
  "yearFrom": 1964,
  "yearTo": 1973,
  "minPrice": 100000,
  "auctionYearFrom": 2018
}
```

**Every lot offered at Pebble Beach and Amelia Island, no reserve only:**

```json
{
  "venues": ["Pebble Beach", "Amelia Island"],
  "withoutReserveOnly": true
}
```

**Upcoming lots with estimates:**

```json
{
  "status": "upcoming"
}
```

**Automobilia (signs, posters, models, parts):**

```json
{
  "itemTypes": ["Automobilia"]
}
```

**The whole site (about 9,600 lots):**

```json
{}
```

**New lots every week (schedule this run):**

```json
{
  "onlyNew": true,
  "monitorName": "gooding-weekly"
}
```

**Links (filters are not used):**

```json
{
  "startUrls": [
    { "url": "https://www.goodingco.com/lot/1995-mclaren-f1-1" },
    { "url": "https://www.goodingco.com/auction/european-sporting-historic-collection" }
  ]
}
```

### ⚙️ How the input is organised

| Section | What it's for |
| --- | --- |
| **Maximum results** | Always first, caps the whole run. Empty means no limit. |
| **What to scrape** | Lots, search terms and item type. |
| **Filters** | Make, model contains, model year from, model year to, price from, price to, auction year from, auction year to, venue, sale type, currency, no reserve only and sort by. |
| **Monitoring** | Only new lots and monitor name. |
| **Links** | Links instead of the fields above. Filters are ignored with links. |

### 💰 Pricing

Pay-per-event: a one-time **$0.003** when the run starts, plus a price per lot saved to your dataset. The price depends on your Apify plan tier:

| Plan | Per lot | Per 1,000 lots |
| --- | --- | --- |
| Free | $0.020 | $20 |
| Bronze | $0.018 | $18 |
| Silver | $0.016 | $16 |
| Gold | $0.014 | $14 |

Lots left out by filters are free. New Apify accounts start with $5 in free credit. On the Free plan, a run saves up to 10 lots.

### 🚀 Run it

1. Create a free Apify account with $5 in credit.
2. Open the Gooding Christie's Scraper.
3. Pick a status, makes and other filters (or keep it empty for the whole site), then click **Start**.
4. Export the results as CSV, Excel, JSON or XML from the Dataset tab.

### 🤖 Use with AI agents (MCP)

Connect the [Apify MCP server](https://mcp.apify.com) to Claude, ChatGPT, Cursor or any MCP client, then ask in plain words, for example: *"Get every Mercedes-Benz 300 SL sold at Gooding Christie's, with price, estimate and chassis number"*. The agent runs this Actor and reads the results.

### 🔧 Troubleshooting

- **The log shows more lots than were saved.** The count in the log is the site's. Status, model and currency are checked by the Actor after the search, so fewer lots are kept.
- **Search terms return similar words.** The site's search is fuzzy, so "gullwing" can also find a Honda Goldwing. Use make and model for exact matches.
- **A sold lot has no price.** Some private sales are sold at a price the site keeps hidden, so `price` is empty.
- **Prices are in different currencies.** Each lot is in its auction's currency (`currency`): USD, GBP, EUR or CHF. The price filter and price sort use the number as it is, without converting.
- **Price means sale price or estimate.** Like on the site, the price filter and price sort use the sale price for sold lots, else the low estimate.
- **Some fields are empty.** Older lots often have no description, specs or video, and provenance and literature are only written for top cars.

### ❓ FAQ

**How many lots are there?** About 9,600 as of October 2026: about 8,450 sold, the rest not sold, upcoming or private sales, from about 420 makes.

**Is the price with buyer's premium?** Yes, `price` is the final price as Gooding Christie's publishes it.

**Can I pick several makes or venues?** Yes. Any lot matching one of the values you pick is kept, and duplicates are removed. "Mercedes" also finds Mercedes-Benz and the other Mercedes makes.

**Do I need a proxy?** No.

### 🛡️ Limits & responsible use

This Actor collects auction lots that Gooding Christie's publishes on its website and keeps a moderate pace. It does not collect bidder or consignor data. Use the data in line with Gooding Christie's terms and the law where you work.

### 📧 Contact

Questions, bugs or a field you need: norm.data.scrapers@gmail.com

### 🧪 Local development

```bash
bun install
bun scripts/gen-schemas.mjs
sh test/run.sh first '{"maxItems":10,"searchTerms":["Ferrari"]}'
```

# Actor input Schema

## `maxItems` (type: `integer`):

Stop after this many lots in total. Leave empty for no limit. The Apify Free plan is always capped at 10.

## `status` (type: `string`):

Sold lots carry the price paid. Not sold lots are past lots with no sale. Upcoming lots are in auctions that have not ended yet.

## `searchTerms` (type: `array`):

Words like "Ferrari 250", "Gullwing" or "Phil Hill". Each term is a separate search on the site.

## `itemTypes` (type: `array`):

Cars, motorcycles or automobilia (signs, models, parts and other memorabilia). Empty means all.

## `makes` (type: `array`):

Like "Ferrari", "Porsche" or "Mercedes" (also finds Mercedes-Benz). Any of the makes matches.

## `models` (type: `array`):

Like "Daytona", "300 SL" or "356". Any of the words matches the model or the title.

## `yearFrom` (type: `integer`):

Built in or after this year, like 1955. Automobilia has no model year, so it is left out when this is set.

## `yearTo` (type: `integer`):

Built in or before this year, like 1973.

## `minPrice` (type: `integer`):

Lowest price, in the auction's own currency (USD, GBP, EUR or CHF). The site uses the sale price for sold lots and the low estimate for the rest.

## `maxPrice` (type: `integer`):

Highest price, measured the same way.

## `auctionYearFrom` (type: `integer`):

Lots offered in or after this year, like 2020. Gooding Christie's results start in 2004.

## `auctionYearTo` (type: `integer`):

Lots offered in or before this year.

## `venues` (type: `array`):

Where the auction took place, like Pebble Beach or Amelia Island. Empty means all.

## `saleTypes` (type: `array`):

Live auctions, online auctions or private sales. Empty means all.

## `currencies` (type: `array`):

Currency of the auction. Empty means all.

## `withoutReserveOnly` (type: `boolean`):

Only lots offered without reserve.

## `sortBy` (type: `string`):

Order of the results. Price and model year sorts list lots without a price or a model year last.

## `onlyNew` (type: `boolean`):

Skip lots saved by earlier runs with the same monitor name.

## `monitorName` (type: `string`):

Runs with the same name share their history. Use a different name for each schedule.

## `startUrls` (type: `array`):

Lot links like https://www.goodingco.com/lot/1995-mclaren-f1-1 or auction links like https://www.goodingco.com/auction/pebble-beach-2021 (every lot of that auction).

## Actor input object example

```json
{
  "maxItems": 10,
  "searchTerms": [
    "Ferrari"
  ]
}
```

# 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 = {
    "maxItems": 10,
    "searchTerms": [
        "Ferrari"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("normdata/gooding-scraper").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 = {
    "maxItems": 10,
    "searchTerms": ["Ferrari"],
}

# Run the Actor and wait for it to finish
run = client.actor("normdata/gooding-scraper").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 '{
  "maxItems": 10,
  "searchTerms": [
    "Ferrari"
  ]
}' |
apify call normdata/gooding-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,normdata/gooding-scraper"
        }
    }
}
```

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/aS9mg2hzqsr5DFHd3/builds/tFHbCU9awYFBEmEza/openapi.json
