Grays.com Auction Scraper
Pricing
from $3.00 / 1,000 results
Grays.com Auction Scraper
Scrapes live Grays.com auction lots with current bid, RRP and % off retail, brand, reserve status, bid step, pickup location and closing time — computers, tools, industrial, cars, wine. Fast HTTP-only API scraper.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Jason Remnant
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Share
Grays.com Auction Scraper 🏷️
Scrape live auction listings from Grays.com — Australia's #1 online auction platform, with thousands of lots across computers, tools, industrial equipment, cars, wine, home goods and more.
No browser needed. This Actor queries Grays' own public search API directly, so it is fast (HTTP-only), cheap to run, and doesn't get blocked. Every lot comes with its RRP and discount off retail, plus brand, reserve status, current bid and closing time.
What It Does
- Searches live Grays.com auctions by keyword, category, or custom filter
- Returns structured data per lot: title, current bid, RRP and % off retail, brand, reserve status and whether reserve is met, bid increment, condition, pickup location, sale state, closing time (text and epoch), vendor, warranty, images and link
- Paginates all matching results automatically, de-duplicating lots across pages
- Retries transient upstream failures instead of failing a run
- Sorts by closing time, price, or Grays' default relevance order
Why use it?
- Deal hunting — filter to lots trading well below RRP and sort by closing time
- Price research — track what categories actually realise at auction
- Stock sourcing — pull used IT, tools and industrial gear by state and category
- Monitoring — schedule it and get fresh lots into your own systems via Apify's API, webhooks or integrations
How to use it
- Click Try for free and leave the defaults — you'll get live lots in seconds
- To narrow it down, set a search query (e.g.
laptop) or a category - For precision, use Custom Filter with Grays' field names (see below)
- Set Max Results to control run cost, then run it
- Download results as JSON, CSV or Excel from the dataset tab
Input
| Field | Type | Default | Description |
|---|---|---|---|
query | string | * | Search text. * = all lots. Try laptop, wine, Land Rover |
categories | array | [] | Category names, e.g. ["Laptops"], ["Wine"]. Empty = all |
filterBy | string | "" | Raw filter expression, overrides categories. E.g. ObjectPrice:<500, CONDITION:=New, SaleState:=VIC |
sortBy | string | "" | Sort expression, e.g. ObjectPrice:asc, LOT_DEFAULT_END_TIME:asc. Empty = Grays relevance order |
maxResults | integer | 500 | Maximum lots to return |
perPage | integer | 250 | Lots per API call (max 250) |
tqlCollection | string | (empty) | Advanced. Only set if Grays renames its search collection |
Useful filter fields: ObjectPrice, Condition, SaleState, ObjectType, ReserveStatus, MinimumBidIncrement. Combine with && (and) or || (or).
Output
Each item in the dataset:
{"title": "Basedow's B3 Pauline Cabernet Shiraz 2010 (6x 750mL) Barossa","price": 120,"rrp": 330,"rrp_label": "RRP","discount_percent": 63.6,"reserve_status": "BidToWin","reserve_met": false,"condition": "New","minimum_bid_increment": 5.0,"buy_now_available": true,"accepts_offers": false,"brand": "B3 Wines","vendor_name": "B3 WINES PTY LTD","warranty": "30 Day Money Back Guarantee","location": "16 Artisan Rd, Seven Hills, 2147","state_name": "South Australia","closing_time": "2026-10-12 22:00:00","closing_time_epoch": 1791802800,"category": "Wine","parent_category": "Wine & More","all_categories": ["Wine"],"image_count": 1,"image_urls": ["https://res1.grays.com/..."],"url": "https://www.grays.com/lot/0026-10746246/wine/...","bidder_count": 0,"bid_count": null,"lot_id": "26132379","sale_id": "10746246","sale_name": "12Hr Wine Sale - 10am-10pm","sale_state": "NSW","listing_type": "Auction","object_type": "LOT","object_status": "Open"}
You can download the dataset as JSON, JSONL, CSV, XML or Excel, or pull it from the API.
Field notes
priceis the current bid (or the opening price before bids land)rrpis Grays' comparison price where they publish one;discount_percentis only calculated when that comparison price is plausiblebid_countis absent on many lots — auctioneers only expose it on some saleslocationis populated for lots with a pickup address; checksale_stateotherwise
Example inputs
All laptops:
{ "query": "laptop", "maxResults": 100 }
Computers under $50:
{ "query": "*", "filterBy": "ObjectPrice:<50", "maxResults": 100 }
Wine in Victoria closing soonest:
{ "query": "*", "categories": ["Wine"], "filterBy": "SaleState:=VIC", "sortBy": "LOT_DEFAULT_END_TIME:asc", "maxResults": 100 }
Pricing
Pay-per-event on the Apify Store: you pay per result returned, plus a small per-run start fee. This Actor is HTTP-only — no browser compute, no proxy costs, so runs are cheap.
To control spend, set maxResults to the number of lots you actually need. It's better to run one 100-lot run than a 10,000-lot crawl you'll never read.
Tips
- Sort by
LOT_DEFAULT_END_TIME:ascto work a sale in closing order - Filter
ObjectPrice:<100 && CONDITION:=Newfor cheap new stock - Combine with Apify schedules for a daily snapshot, then diff the datasets to spot new lots
discount_percentis the fastest way to find obvious RRP-vs-bid bargains
FAQ
Q: Does this require login? A: No. It uses Grays' public, read-only search API key.
Q: Will Grays block scraping? A: This uses Grays' own search endpoint, so requests look like ordinary site traffic.
Q: Can I scrape completed or sold auctions? A: The index only contains live lots. Historical sold prices need a different approach.
Q: How fresh is the data? A: Real-time — it reflects the current Grays.com search results.
Q: Results look short of what the run said was available?
A: You hit your maxResults cap — the run log says exactly how many lots were left unscraped. Raise it and run again.
Support
Found a bug or need a field this doesn't return? Open an issue on the Actor's Issues tab — Grays changes its site periodically and this Actor is actively maintained.