POST /api/hemmings/listings/search
Price: 5 credits
Search Hemmings cars for sale or the sold archive by keyword, make and model, dealer, model-year and price range, seller type, transmission, buying format, condition, and whether a photo or price is shown. Returns listing cards with title, year, make, model, VIN, price, current bid, reserve state, location, seller or dealer, dates and thumbnail.
Search Hemmings vehicle listings; listing_status is required (available or sold). make_ids, model_ids and dealer_id are Hemmings numeric ids taken from make.id, model.id and dealer.id of earlier results. A row whose URL is under /listing/ or /auction/ can be passed to hemmings/listings for the full record.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)keyword string nullable — Free-text query (examples: "mustang"; minLength: 1)listing_status string required — available: listings for sale now; sold: the sold archive (one of: "available", "sold")make_ids array — Hemmings numeric make ids, as returned in make.id of a result (default: []; examples: [582])model_ids array — Hemmings numeric model ids, as returned in model.id of a result (default: []; examples: [8365])dealer_id integer nullable — Only this dealer's inventory, the numeric id in dealer.id of a result (min: 1)year_min integer nullable — Earliest model year (min: 1886; max: 2100)year_max integer nullable — Latest model year (min: 1886; max: 2100)price_min integer nullable — Minimum price in USD (min: 0)price_max integer nullable — Maximum price in USD (min: 0)seller_types array — Seller types (default: []; one of: "private_seller", "dealer")transmissions array — Transmission types (default: []; one of: "auto", "manual")listing_formats array — Buying formats (default: []; one of: "auction", "hemmings_auctions_only", "hemmings_auctions_no_reserve", "hemmings_auctions_reserve_met", "classified", "make_offer")conditions array — Vehicle condition (default: []; one of: "mint", "excellent", "good", "fair", "project")only_with_images boolean — Only listings with photos (default: false)only_with_price boolean — Only listings that show a price (default: false)count integer required — Max number of listings to return (min: 1; max: 10000)@type string (default: "HemmingsListingCard")id string requiredsale_type string nullablelisting_type string nullablestatus string nullableurl string nullablelong_title string nullabledescription string nullableyear integer nullablemake object nullable@type string (default: "HemmingsMakeModel")id string requiredname string nullablealias string nullablemodel object nullable@type string (default: "HemmingsMakeModel")id string requiredname string nullablealias string nullablevin string nullablestock_number string nullableprice number nullableprice_text string nullablecurrent_price number nullablecurrent_bid number nullableoffer_count integer nullablehas_reserve boolean nullableis_reserve_met boolean nullableis_reserve_lowered boolean nullableis_trending boolean nullableis_featured boolean nullableis_certified_dealer boolean nullablebadge_text string nullablelocation string nullablecity string nullablestate string nullablecountry_code string nullablestarts_at integer nullableends_at integer nullablesold_at integer nullableseller_name string nullabledealer object nullable@type string (default: "HemmingsDealer")id string requiredname string nullablealias string nullableaddress string nullablecity string nullablestate string nullablepostal_code string nullablecountry string nullablebrand string nullableimage string nullableimages array (default: [])mileage integer nullableexterior_color string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.