POST /api/machinerytrader/listings/search
Price: 20 credits
Search MachineryTrader construction equipment listings by keyword, category, manufacturer, condition, year, price, hours, location and posting date: each with asking price, key specs, photos, seller and location.
Find equipment for sale and shortlist it before fetching full records with machinerytrader/listings. One filter combination reaches at most 9,996 listings, so split a broad search by category, manufacturer or year to cover more.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)keyword string nullable — Free-text keyword matched against listings (minLength: 1)category_ids array — Numeric category ids as used in the site's category URLs; several are OR-ed (default: [])manufacturers array — Manufacturer names as the site spells them, upper-case; several are OR-ed (default: [])condition string nullable — Listing condition (one of: "new", "used", "salvaged", "dismantled")states array — US states or Canadian provinces, upper-case full names; several are OR-ed (default: [])countries array — Countries; several are OR-ed (default: []; one of: "Albania", "Argentina", "Armenia", "Australia", "Austria", "Belgium", "Bolivia", "Bosnia-Herzegovina", "Brazil", "Canada", "Chile", "China", "Colombia", "Costa Rica", "Croatia", "Cyprus", "Czech Republic", "Denmark", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Estonia", "Finland", "France", "Georgia", "Germany", "Ghana", "Greece", "Guatemala", "Guinea", "Guyana", "Honduras", "Hong Kong", "Hungary", "India", "Indonesia", "Ireland", "Israel", "Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Latvia", "Lithuania", "Luxembourg", "Macedonia", "Madagascar", "Malaysia", "Malta", "Mexico", "Monaco", "Mongolia", "Netherlands Antilles", "New Caledonia", "New Zealand", "Norway", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Poland", "Portugal", "Romania", "Saudi Arabia", "Serbia", "Singapore", "Slovakia", "Slovenia", "South Africa", "South Korea", "Spain", "Suriname", "Sweden", "Switzerland", "Taiwan", "Tanzania", "Thailand", "The Bahamas", "The Netherlands", "The Philippines", "Trinidad and Tobago", "Turkey", "USA", "United Arab Emirates", "United Kingdom", "Uruguay", "Zambia")year_min integer nullable — Earliest model year (min: 1800; max: 2100)year_max integer nullable — Latest model year (min: 1800; max: 2100)price_min number nullable — Lowest asking price (min: 0)price_max number nullable — Highest asking price (min: 0)listed_after string nullable — Only listings posted on or after this date (format: date)listed_before string nullable — Only listings posted on or before this date (format: date)serial_number string nullable — Serial number or VIN (minLength: 1)count integer required — Max number of listings to return (min: 1; max: 9996)sort string — Result ordering (default: "best_match"; one of: "best_match", "price_low_to_high", "price_high_to_low", "year_old_to_new", "year_new_to_old", "hours_low_to_high", "hours_high_to_low", "recently_added", "recently_updated", "manufacturer", "model", "serial_number", "stock_number")listing_type string nullable — Sale, rental, lease or upcoming auction (one of: "for_sale", "for_rent", "for_lease", "upcoming_auction")hours_min number nullable — Lowest meter hours (min: 0)hours_max number nullable — Highest meter hours (min: 0)horsepower_min number nullable — Lowest engine horsepower (min: 0)horsepower_max number nullable — Highest engine horsepower (min: 0)operating_weight_min number nullable — Lowest operating weight (min: 0)operating_weight_max number nullable — Highest operating weight (min: 0)rops_types array — Operator protection structure (default: []; one of: "Enclosed", "Open", "None")drives array — Drive configuration as the site writes it (default: []; examples: ["4WD"])is_certified boolean nullable — true keeps only certified listings; false is rejected, omit the field insteadstock_number string nullable — Dealer stock number (minLength: 1)@type string (default: "MachinerytraderListingCard")id string requiredurl string nullableyear integer nullablemanufacturer string nullablemodel string nullablecondition string nullablelisting_type string nullablecategory_id string nullablecategory string nullableprice number nullableprice_text string nullableprice_label string nullableprice_options array (default: [])@type string (default: "ListingPriceOption")group string nullablename string nullableprice_text string requiredcurrency string nullableserial_number string nullabledescription string nullableupdated_at integer nullableimage string nullableimages array (default: [])image_count integer nullablevideo_count integer nullableis_featured boolean nullableis_premium boolean nullableexternal_id string nullableseller object nullable@type string (default: "ListingSeller")name string nullableparent_account_name string nullableaddress string nullablecontact_name string nullablephone string nullablephone_e164 string nullablewebsite_url string nullabledealer_id string nullablecompany_id string nullablecrm_id string nullablegroup_id string nullablelocation object nullable@type string (default: "ListingLocation")address string nullablestreet string nullablecity string nullablestate string nullablecountry string nullablepostal_code string nullablelatitude number nullablelongitude number nullablespecs array (default: [])@type string (default: "ListingSpec")group string nullablename string requiredvalue string required422 — 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.