menards.com APImenards.com ↗
Access Menards product listings, pricing, availability, and specifications via 4 endpoints. Search by keyword, browse by category ID, or fetch full product details.
curl -X GET 'https://api.parse.bot/scraper/eb63af6a-74ff-4ce8-80af-8128a015b563/search_products?query=drill' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for products by keyword on Menards.com. Returns paginated results with pricing, availability, and product links. Each page contains up to 40 items.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| queryrequired | string | Search keyword (e.g. 'drill', 'hammer', 'lumber') |
{
"type": "object",
"fields": {
"items": "array of product objects with title, itemId, link, image, sku, basicPriceContainer, availability",
"totalItems": "integer total number of matching products"
},
"sample": {
"data": {
"items": [
{
"sku": 2419903,
"link": "/main/tools/power-tools/power-drills-impact-drivers/north-tech-reg-18-volt-cordless-3-8-drill-kit/cd111/p-1642874352528255-c-9072.htm",
"image": "https://cdn.menardc.com/main/items/media/ZHUHA001/ProductLarge/2419903.jpg",
"title": "North Tech® 18-Volt Cordless 3/8\" Drill Kit",
"itemId": "1642874352528255",
"availability": {
"hasPickup": true,
"hasDelivery": true,
"pickupMessage": "Free Shipping to Store"
},
"basicPriceContainer": {
"listPrice": 16.99,
"salePrice": 14.6,
"finalPrice": {
"finalPrice": 12.99,
"unitOfMeasure": "each"
},
"rebatePrice": 1.61
}
}
],
"totalItems": 128
},
"status": "success"
}
}About the menards.com API
The Menards API exposes 4 endpoints covering product search, category browsing, product details, and department listings across the full Menards catalog. The search_products endpoint returns paginated results of up to 40 items per page, each including title, SKU, pricing container, availability, and a direct product link. Whether you're indexing hardware inventory or tracking lumber prices, the API provides structured access to Menards' catalog without manual browsing.
Endpoints and What They Return
The search_products endpoint accepts a required query string (e.g. 'drill', 'lumber', 'hammer') and an optional page integer for pagination. It returns a totalItems count and an items array where each object includes title, itemId, sku, link, image, basicPriceContainer, and availability. The get_category endpoint works similarly but takes a category_id string instead of a search term — for example '9143' for Hammers or '9072' for Power Drills — making it suitable for systematic catalog browsing by department.
Product Details and Specifications
The get_product_details endpoint accepts a url path beginning with /main/ and returns two top-level objects: product_info (Schema.org Product data including name, description, sku, brand, offers, and image URLs) and specifications (a flat key-value object for product-level attributes like Handle Length or Head Weight). This structured specification data is particularly useful when comparing products programmatically or populating a product database.
Navigating the Catalog
The get_departments endpoint requires no inputs and returns an array of departments, each with a name, url, and id. Those IDs feed directly into get_category, giving you a top-down traversal path from department to product. This makes it straightforward to enumerate all top-level categories before drilling into specific listings. Both search_products and get_category paginate at 40 items per page, so totalItems divided by 40 tells you the page count for a full crawl.
- Track price changes on specific SKUs using
basicPriceContainerdata returned bysearch_products. - Build a cross-retailer hardware price comparison tool using
offersfromget_product_details. - Enumerate an entire department's inventory by chaining
get_departmentswith paginatedget_categorycalls. - Populate a product database with structured specs like Handle Length and Head Weight from the
specificationsfield. - Monitor availability status across lumber and building material categories using the
availabilityfield. - Index product images and metadata using
image,title, andskufrom category or search results. - Identify category IDs for targeted catalog monitoring by parsing the
get_departmentsresponse.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Menards have an official developer API?+
What does `basicPriceContainer` contain and does it include sale or rebate pricing?+
basicPriceContainer field is returned as an object in both search_products and get_category results and reflects the price data shown on Menards product listings. The exact subfields depend on the product; sale pricing may be nested within it. The API does not currently expose a dedicated rebate field as a separate top-level value. You can fork it on Parse and revise to add a parsed rebate field if that level of detail is needed.Does `get_product_details` return customer reviews or ratings?+
product_info and spec key-value pairs via specifications. Customer reviews and star ratings are not currently returned. You can fork this API on Parse and revise it to add a reviews endpoint targeting product review data.Are there any limitations on pagination depth or category coverage?+
search_products and get_category return up to 40 items per page with a totalItems field to calculate total pages. Deep pagination (high page numbers on large result sets) may reflect the same limits that apply on the Menards site itself. Category coverage depends on what Menards surfaces under a given category_id; not all subcategories are directly addressable without first discovering IDs via get_departments.Can I retrieve store-level inventory or in-store availability by location?+
availability field in product listings, but it does not currently expose per-store stock levels or location-based inventory lookup. You can fork this API on Parse and revise it to add a store-specific availability endpoint if granular location data is required.