POST /api/menards/products
Price: 20 credits
Get a Menards product with store price, rebates, stock and aisle location, specifications, accessories, questions and answers, variants, images and documents
Fetch one Menards product by the id in its URL, by its Menards SKU, or by the URL. Price, rebates, stock and aisle location are those of the store set by store_id, or of the store nearest to zip_code; accessories and questions come with the product.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)store_id string nullable — Menards store number that sets price and stock (examples: "3053", "3378")zip_code string nullable — US ZIP code; the nearest Menards store sets price and stock (examples: "54701")product string required — Menards product id, Menards SKU or product URL (examples: "1699697311812720", "2416837", "https://www.menards.com/main/building-materials/lumber-boards/dimensional-lumber/2-x-4-construction-framing-lumber/1021114/p-1444422740098-c-13125.htm"; minLength: 1)@type string (default: "MenardsProduct")id string requiredsku string nullablemodel_number string nullableurl string nullablename string nullablesubtitle string nullablebrand string nullablebrand_url string nullablevendor_code string nullablevendor_logo string nullablecategory_id string nullablestore_id string nullableshort_description string nullabledescription string nullablefeatures array (default: [])specifications array (default: [])@type string (default: "MenardsSpecification")name string requiredvalue string nullablecolor string nullableswatch string nullablebadge string nullableorder_count integer nullablereturn_policy string nullableimage string nullableimages array (default: [])spin_images array (default: [])certifications array (default: [])certification_images array (default: [])videos array (default: [])@type string (default: "MenardsVideo")url string requiredimage string nullablethumbnail string nullabledocuments array (default: [])@type string (default: "MenardsDocument")url string requiredname string nullablesafety_data_sheets array (default: [])buying_guide_url string nullablefinancing_text string nullablefinancing_url string nullablefinancing_image string nullablecoverage_amount number nullablecoverage_unit string nullableprice number nullableprice_label string nullableprice_note string nullableunit string nullablealternate_unit_price number nullablealternate_unit string nullableregular_price number nullableregular_price_label string nullablesale_price number nullablesale_price_label string nullablesale_price_note string nullablesale_end_date string nullablepromo_ends_at integer nullablesavings_text string nullablerebates array (default: [])@type string (default: "MenardsRebate")text string requiredvalue number nullablenote string nullablestart_date string nullableend_date string nullableis_available boolean nullablehas_pickup boolean nullablehas_delivery boolean nullablehas_ship_to_store boolean nullablestock_quantity integer nullablestock_message string nullablelocation string nullablesublocation string nullablelocation_note string nullableservice_desk string nullableis_on_display boolean nullableavailability_notes array (default: [])variations array (default: [])@type string (default: "MenardsVariation")name string requiredselected string nullableoptions array (default: [])@type string (default: "MenardsVariantOption")id string requiredname string nullableurl string nullableimage string nullableavailability string nullableis_available boolean nullableaccessories array (default: [])@type string (default: "MenardsAccessory")id string requiredsku string nullablemodel_number string nullablename string nullableurl string nullableimage string nullableprice number nullableprice_label string nullableprice_note string nullableunit string nullablesale_price number nullablelist_price number nullablerebate_amount number nullableis_limited_time boolean nullableprice_steps array (default: [])@type string (default: "MenardsPriceStep")label string requiredprice number nullablenote string nullableis_required boolean nullableis_available boolean nullableis_orderable boolean nullablestock_quantity integer nullabledefault_quantity integer nullablequestions array (default: [])@type string (default: "MenardsQuestion")question string requiredanswer string nullable422 — No Menards store has this number, or none was found for the ZIP code. 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 — No Menards product has this id or SKU. 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.