The Market Scraper — Bonhams Online Car Auctions
Pricing
from $1.90 / 1,000 results
The Market Scraper — Bonhams Online Car Auctions
Scrape auction listings from The Market (themarket.co.uk), Bonhams' online auction platform for classic cars. Extract bid prices, estimates, bid counts, reserve status, and auction outcomes. For collector car market tracking.
Pricing
from $1.90 / 1,000 results
Rating
0.0
(0)
Developer
Rastriq — Structured data from the world
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
The Market Scraper — Bonhams Online Car Auctions: Bids, Estimates & Results
The Market Scraper extracts auction data from The Market (themarket.co.uk), the online auction platform for classic and collector cars run by Bonhams. It returns live lots and completed results with current or hammer price, pre-sale estimates, bid counts, reserve status and sold/unsold outcome. Set an optional make and year range, choose how many lots you want, and export JSON, CSV or Excel. Try it first with the default of 10 lots.
Why scrape The Market auctions?
Weekly timed online auctions create a steady stream of price points for collector cars. The Market Scraper helps:
- Collectors and dealers: track live bids and decide where to bid.
- Valuation and insurance teams: build comparable sales from completed lots.
- Auction researchers: analyse reserve-met rates and estimate versus result by segment.
- Investors and analysts: compare online auction prices with traditional live auctions.
What input does The Market Scraper accept?
| Parameter | Type | Default | Description |
|---|---|---|---|
make | string, nullable | prefill porsche | Car make, for example porsche, ferrari, mercedes-benz, jaguar. Leave empty for all makes. |
year_min | integer, nullable | none | Earliest model year to include (1886 to 2030). |
year_max | integer, nullable | none | Latest model year to include (1886 to 2030). |
max_items | integer | 100 (prefill 10) | Maximum listings to extract (1 to 50,000). |
max_pages | integer, nullable | none | Maximum search result pages to process. If empty, max_items is the only limit. |
proxyConfiguration | object | prefill Apify Proxy | Datacenter proxy by default; change it only if you have problems. |
Example: Ferraris from 1960 to 1975, up to 50 lots.
{"make": "ferrari","year_min": 1960,"year_max": 1975,"max_items": 50}
Example: everything available, small test.
{"max_items": 10}
The Actor reads two sections of the site. Live lots come from the live auctions page (a single page), and completed results are paginated from the results page. Make and year filters are applied client-side after the pages are read, so a narrow filter can mean that more pages have to be processed before max_items is reached.
What data does The Market Scraper return?
| Field | Type | Description |
|---|---|---|
id | string | Listing UUID from The Market |
listing_type | string | active or completed |
url | string | Direct link to the auction lot |
title | string | Full listing title, for example "2007 Aston Martin DB9" |
brand | string | Car make |
model | string | Car model |
model_year | integer | Year of manufacture |
price | number | Current bid (active) or hammer price (completed), in GBP |
price_currency | string | Currency code, documented as always GBP |
estimate_low | number | Low pre-sale estimate, when available |
estimate_high | number | High pre-sale estimate, when available |
bid_count | integer | Number of bids placed |
auction_end | string | Auction end date, for example "22 May 2026" |
sold | string | sold, unsold, or empty for active lots |
reserve_status | string | reserve met, reserve not met, no reserve, or empty |
image_url | string | Listing thumbnail URL |
scraped_at | datetime | UTC timestamp of extraction |
source | string | Documented as always themarket.co.uk |
Estimates, reserve status and sold are not present on every lot, so expect empty values. Note that auction_end is a text date, not an ISO timestamp.
Illustrative example of one completed lot (values are made up to show the format, not real data):
{"id": "00000000-0000-0000-0000-000000000000","listing_type": "completed","url": "https://themarket.co.uk/example-lot","title": "2007 Aston Martin DB9","brand": "Aston Martin","model": "DB9","model_year": 2007,"price": 21500,"price_currency": "GBP","estimate_low": 20000,"estimate_high": 25000,"bid_count": 14,"auction_end": "22 May 2026","sold": "sold","reserve_status": "reserve met","image_url": "https://themarket.co.uk/example-image.jpg","scraped_at": "2026-10-13T10:00:00+00:00","source": "themarket.co.uk"}
How much does it cost to scrape The Market?
The Market Scraper uses pay-per-event pricing:
| Event | Price |
|---|---|
| Actor Start (one event per GB of memory, minimum one) | $0.0005 |
| Result (each item in the dataset) | $0.0019 |
Worked example with the default 1,024 MB memory (one start event): 1,000 results = 1,000 × $0.0019 + $0.0005 = $1.9005. The default 100 lots cost $0.1905, and a 10-lot test costs $0.0195. Lower max_items to cap spend, and check the Pricing tab for discounts on your plan.
Speed and run time
The previous documentation estimates about 20 listings per minute. The default run timeout is 300 seconds, so for large max_items values raise the timeout in the run options. For tracking, schedule weekly runs to follow each new auction cycle.
How to run it via API
curl -X POST "https://api.apify.com/v2/acts/rastriq~themarket-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"make":"porsche","year_min":1990,"max_items":100}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("rastriq/themarket-scraper").call(run_input={"make": "porsche","max_items": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["price"], item["reserve_status"])
Results can also go to Google Sheets, Make, Zapier or n8n, trigger webhooks on completion, or be called from AI agents through the Apify MCP server.
FAQ
Does it return live and finished auctions? Yes. listing_type is active for live lots and completed for historical results.
Is price the final sale price? For completed lots it is the hammer price in GBP; for active lots it is the current bid. Check sold to separate sold from unsold.
Why are estimates or reserve status empty? They are only filled when the lot shows them.
How do I limit cost? Set max_items, and optionally max_pages.
How far back do results go? This depends on what the results pages of the site show. Use max_pages to read as many pages as you need and check the oldest auction_end in your dataset.
Is it legal? The Actor reads publicly visible auction pages. You are responsible for respecting the site's terms and applicable data rules.
Where do I report problems? Use the Issues tab of the Actor with the run ID.
Related Rastriq actors
- Bring a Trailer Scraper: classic and collector car auction data
- Collecting Cars Scraper: online car auctions
- Catawiki Cars Scraper: classic car auctions
- Classic Driver Scraper: collector car marketplace