Hemmings APIhemmings.com ↗
Access live Hemmings auction listings, full vehicle detail records, and completed sale results via three structured endpoints covering bids, specs, and seller data.
What is the Hemmings API?
The Hemmings Auctions API exposes three endpoints covering live auction listings, individual vehicle detail records, and completed auction results from hemmings.com/auctions. The get_auction_detail endpoint returns over a dozen structured fields per listing — including VIN, engine description, current bid, seller location, and image URLs — making it straightforward to track collector-car auction activity and build sale history datasets.
curl -X GET 'https://api.parse.bot/scraper/d18ecb15-5632-485d-ab03-93206a5d7eaa/list_live_auctions?per_page=100' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns one page of currently live Hemmings Auctions listings (status is 'live' for every item; ended/sold auctions are excluded). Each record is one auction lot with its current high bid ('price', a formatted USD string, null when no bid has been placed yet), the public listing URL and the primary image URL, plus title, year/make/model, seller location, reserve flags and start/end timestamps. Ordering is the site's 'recommended' order. Pagination is caller-controlled via 'page' (defaults to 1) and 'per_page' (defaults to 30, max 100); 'total_count' and 'has_more' are taken from the source. Each call costs three upstream requests (listing page, script bundle, search API). An empty 'auctions' array on a page beyond the last one is a valid result.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number over the live-auction result set. |
| per_page | integer | Number of auctions per page, 1 to 100. |
{
"type": "object",
"fields": {
"page": "integer page number echoed from the request",
"auctions": "array of live auction lots; each has id (integer listing id), title, long_title, status ('live'), price (current high bid as formatted USD string or null), current_bid, has_reserve, reserve_met, url (listing page), image_url (primary photo), year, make, model (null for non-vehicle lots), location, start_date, end_date",
"has_more": "boolean, true when further pages exist",
"per_page": "integer page size echoed from the request",
"total_count": "integer total number of live auctions reported by the site"
},
"sample": {
"data": {
"page": 1,
"auctions": [
{
"id": 35231,
"url": "https://www.hemmings.com/auction/1936-mercedes-benz-500k-replica-north-fort-myers-fl-928817",
"make": "Mercedes-Benz",
"year": 1936,
"model": "500K Replica",
"price": "$10,250",
"title": "1936 Mercedes-Benz 500K Replica",
"status": "live",
"end_date": "2026-09-03T16:00:00-04:00",
"location": "North Fort Myers, Florida 33917",
"image_url": "https://thumbor-auction.hmn.com/Rml8OKioRuGDlO9hnIY9S1TZMdk=/900x0/filters:format(webp)/4506736/paul19.jpg",
"long_title": "Classic Roadsters Marlene: 1936 Mercedes-Benz 500K Replica",
"start_date": "2026-08-27T07:00:00-04:00",
"current_bid": "$10,250",
"has_reserve": true,
"reserve_met": false
}
],
"has_more": true,
"per_page": 30,
"total_count": 38
},
"status": "success"
}
}About the Hemmings API
Live Auction Listings
The list_live_auctions endpoint returns paginated live auction lots, each carrying an integer id, title, long_title, formatted price (the current high bid as a USD string, or null when no bid has been placed), a url pointing to the public listing, and a primary image URL. The page and per_page parameters control pagination; per_page accepts 1–100 and the response echoes both values alongside total_count and a has_more boolean so you can iterate without re-requesting metadata.
Auction Detail Records
Pass any url value from list_live_auctions (or a known Hemmings auction URL of the form https://www.hemmings.com/auction/<slug>) to get_auction_detail. The response maps the full listing: make, model, year, engine, vin, current_bid, city, state, zip, plus seller info, exterior and interior color fields, a full description, end time, and a complete image array. Fields such as vin and engine may be null when the seller did not provide them.
Completed Auction Results
The get_auction_results endpoint surfaces sold listings ordered most-recently-completed first in fixed 36-item pages. Each item carries the same id as the live-auction records, enabling you to join live and historical data. The response includes items_total, pages_total, and page_current so you can calculate full pagination up front. Page size is always 36 and is not configurable.
The Hemmings API is a managed, monitored endpoint for hemmings.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hemmings.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official hemmings.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track current high bids across all live Hemmings auctions to surface ending-soon lots.
- Build a collector-car price database using
current_bidand sold results fromget_auction_results. - Aggregate make/model/year distribution of inventory currently listed on Hemmings.
- Alert users when a specific make or model appears in live listings by polling
list_live_auctions. - Compare asking prices against completed sale prices for the same
make/model/yearcombination. - Enrich a classic-car valuation tool with VIN, engine, and seller location fields from
get_auction_detail. - Archive seller city/state distribution data across completed auctions to map regional supply patterns.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Hemmings offer an official developer API?+
What does `get_auction_detail` return that `list_live_auctions` does not?+
list_live_auctions returns summary fields — id, title, price, url, and a primary image. get_auction_detail adds vin, engine, make, model, year, seller city/state/zip, exterior and interior colors, a full description, the auction end time, and a complete image array. You need to call get_auction_detail once per listing URL to get those fields.Can I retrieve auction results with a page size other than 36?+
get_auction_results always returns exactly 36 items per page and the page size is not configurable. The per_page flexibility that exists in list_live_auctions does not apply to the completed-results endpoint.Does the API expose reserve price, bid history, or individual bidder data?+
price / current_bid) and final sale amounts for completed lots, but reserve price thresholds, per-bid history, and bidder identities are not included in any of the three endpoints. You can fork this API on Parse and revise it to add an endpoint that surfaces additional bid-level data if that information becomes available on the listing page.How fresh is the live auction data, and are there caching considerations?+
list_live_auctions reflects the live auction state at the time of the request — bid amounts and lot counts can change between calls as auctions progress and new listings go live. There is no explicit cache-expiry field in the response, so polling frequency should be tuned to your use case rather than assuming results are static.