Lowe's Product Scraper: Prices, Stock & Specs avatar

Lowe's Product Scraper: Prices, Stock & Specs

Pricing

from $4.40 / 1,000 product returneds

Go to Apify Store
Lowe's Product Scraper: Prices, Stock & Specs

Lowe's Product Scraper: Prices, Stock & Specs

Search lowes.com by keyword, or paste category and product URLs, and get the product data back as rows: title, brand, item and model number, price with the was/now saving, rating, review count, and whether it ships, is in stock for pickup or can be delivered - per store, for any US ZIP.

Pricing

from $4.40 / 1,000 product returneds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

5 hours ago

Last modified

Share

Lowe's Product Scraper: prices, store stock and specs from lowes.com

Give it a search term, a Lowe's search, category or product link, or a bare product id. You get one row per product: title, brand, item and model number, price with the was/now saving, rating and review count, and whether it ships, sits on a shelf for pickup or can be delivered. Your own store's price and stock need full detail, since the faster listing mode shows whatever default store and price Lowe's picks, and one search or category stops at 744 products.

InputSearch terms, Lowe's search, category or product links, or bare product ids
OutputOne row per product
Ceiling5,000 products per run, and 744 per search term or category
Account neededNone
Price$4.40 per 1,000 products, flat on every plan

๐Ÿ” What Lowe's Product Scraper does

It pages through Lowe's results 24 products at a time until it has maxItems or reaches the 744 Lowe's shows for one term or category.

listing mode takes what the results page carries: title, brand, price, rating, review count and stock flags. Some tiles say "See Product Page" instead of a price, and on some categories that is every tile, so those rows get their product page opened and the price filled in. They are marked listing+price.

full mode opens the product page for every row. That brings the store's own price, which is often the one carrying the was/now saving, stock at your store, the full specifications, the barcode, weight and dimensions. It adds one lookup per product, so a big run takes longer; 45 products took 23 seconds on a test run. The price per product is the same either way.

Prices, promotions and pickup stock differ from store to store. Give a ZIP and it finds the nearest store: 90210 resolves to store 2714 in Los Angeles, 28202 to store 2348 in Charlotte. Give a store number if you know it. Give neither and it uses store 0595. priceScope on each row says whether the price is that store's (STORE) or Lowe's national one (NETWORK).

๐Ÿ“ฅ What you give it

{
"searchQueries": ["smoke detector", "door knob"],
"maxItems": 45,
"detailLevel": "full",
"storeNumber": "1636"
}
FieldIf you leave it outWhat it is
searchQueriesnoneSearch terms, one per line, as you would type them into Lowe's search box. A model number works too.
startUrlsnoneLowe's search pages, category (/pl/...) pages or product (/pd/...) pages. A bare product id like 5013207487 works too. Mixes freely with the terms above.
maxItems501 to 5,000 products, across everything you asked for. You pay per product, so this is also your budget.
detailLevellistinglisting for speed, full for store price, store stock, specs and dimensions.
zipCodenoneA US ZIP. The nearest Lowe's store is looked up and used.
storeNumberstore 0595, unless a ZIP is givenA four-digit store number, such as 0595 or 1636. Wins over the ZIP. It is used exactly as typed, so check it.
proxyConfigurationnot usedOnly for your own servers. Addresses you list here are used as given. Leave it alone otherwise.

The form opens with cordless drill and a cap of 50 filled in, as an example.

๐Ÿ“ค What you get back

A real row from a real full run for store 1636, with the photo list, bullets, specifications and dimensions cut short:

{
"productId": "5019242437",
"itemNumber": "9055247",
"modelNumber": "SC2-W10-T",
"brand": "First Alert",
"title": "10-Year Battery, Hardwired (with Battery Backup) Photoelectric Interconnected Combination Smoke and Carbon Monoxide Detector",
"url": "https://www.lowes.com/pd/First-Alert-FA-10YR-HW-PHOTO-COMBO-W-PLUG-10E/5019242437",
"price": 50.15,
"priceMax": null,
"priceIsRange": false,
"listPrice": 75.98,
"savingsAmount": 25.83,
"savingsPercent": 34,
"promotionEndsAt": "2026-11-02T00:00:00.000Z",
"priceScope": "STORE",
"isDealOfTheDay": false,
"promotions": ["Free Delivery", "Delivery"],
"freeShipping": null,
"availabilityMessage": null,
"rating": 4.6,
"reviewCount": 11,
"fulfillment": [
{ "method": "Parcel", "available": true, "quantity": 94, "onHandQuantity": 70, "leadTimeDays": 0, "storeNumber": "2879" },
{ "method": "Pickup", "available": true, "quantity": 61, "onHandQuantity": 56, "leadTimeDays": 0, "storeNumber": "1636" },
{ "method": "Delivery", "available": true, "quantity": 90, "onHandQuantity": 0, "leadTimeDays": 2, "storeNumber": "2879" },
{ "method": "ExpeditedDelivery", "available": true, "quantity": 85, "onHandQuantity": 56, "leadTimeDays": null, "storeNumber": "1636" }
],
"availableForShipping": true,
"availableForPickup": true,
"availableForDelivery": true,
"pickupStoreNumber": "1636",
"pickupQuantity": 56,
"deliveryLeadTimeDays": 2,
"storeNumber": "1636",
"inStock": true,
"imageUrl": "https://mobileimages.lowes.com/productimages/4132bf23-c263-4973-83e9-ca0c8bbae520/83540612.png",
"images": ["https://mobileimages.lowes.com/productimages/4132bf23-c263-4973-83e9-ca0c8bbae520/83540612.png"],
"bulletPoints": ["10-year sealed battery eliminates the need for battery replacements and low-battery chirps for the life of the alarm"],
"specifications": [
{ "key": "Power Source", "value": "Hardwired" },
{ "key": "Alarm Sensor Type", "value": "Photoelectric" }
],
"department": "ELECTRICAL",
"category": "FIRE SAFETY",
"subCategory": "COMBO ALARMS",
"barcode": "194160017418",
"detailLevel": "full",
"searchQuery": "smoke detector",
"sourceUrl": null,
"position": 21,
"scrapedAt": "2026-09-20T00:40:45.108Z",
"weight": 0.805,
"dimensions": {
"height": { "uom": "Inches", "value": "7.13", "conversions": [{ "uom": "Centimeters", "value": "18.1102", "system": "Metric" }] }
},
"lowesExclusive": null,
"energyStar": null,
"maxPurchaseQuantity": null
}
FieldWhat it is
price, priceScopeThe selling price, and whether it is the store's (STORE) or Lowe's national figure (NETWORK).
listPrice, savingsAmount, savingsPercent, promotionEndsAtThe "was" price and the saving. listPrice is null when the item is not on promotion, not when a price is missing.
priceIsRange, priceMaxItems with variants at different prices. price is then the "from" figure and priceMax the top.
fulfillmentOne entry per way Lowe's offers the item. Parcel is shipped, Pickup is in store, Delivery comes by truck. The storeNumber inside each is where Lowe's would source it; for parcel that is usually a warehouse, not your store.
onHandQuantity, quantityWhat is physically at that location, and what Lowe's can pull in from elsewhere.
availableForShipping, availableForPickup, availableForDelivery, pickupQuantityThe same stock picture flattened into columns.
storeNumber, pickupStoreNumberThe store the row was asked for, and the store the pickup figures belong to. In listing mode these can differ.
detailLevellisting, listing+price (price fetched from the product page) or full.
barcode, weight, dimensions, specificationsFilled in by full. barcode is often null on listing rows, and weight and dimensions only appear when the product page was read (full or listing+price).

๐Ÿงพ Reading the output

Real product rows have no charged field. The free rows carry charged: false, so dropping those leaves only products.

RowHow to spot itCharged
A producta productId and no charged fieldyes
The sample_sample: trueno
A note_diagnostic: true, with an errorCode, an error and a hintno

The sample row appears only when a run has no search terms and no links. It looks like a full product row, so filter on _sample or charged rather than on the fields.

errorCodeWhat it means
REFUSEDLowe's did not answer that search, category or product this time. Re-running usually gets it.
NO_RESULTSLowe's returned no products for that term or category. Try a broader term or check the spelling.
PRODUCT_NOT_FOUNDNo product behind that id. Ids change when an item is discontinued or merged.
BAD_URLNot a Lowe's search, category or product link, and not a product id.
STORE_NOT_FOUNDNo store came back for that ZIP. The run carries on with store 0595.

โ–ถ๏ธ How to run it

  1. Open Lowe's Product Scraper and click Try for free.
  2. Type what you want into Search terms, or paste pages into Lowe's URLs or product IDs.
  3. Set Maximum products.
  4. For your store's price and stock, set How much detail per product to Full and fill in ZIP code or Store number.
  5. Click Start, then download the dataset as JSON, CSV or Excel.

๐Ÿ’ฐ How much does it cost?

$4.40 per 1,000 products, flat on every Apify plan. full costs the same per product as listing.

Not charged: the sample row, every note above, and a product that turns up under two of your search terms, which is delivered once. A run that finds nothing charges for no products.

๐Ÿ’ก What people use it for

  • Tracking prices by model number on a schedule. The was/now pair comes through, so a promotion shows up as a promotion rather than as a lower number.
  • Pulling a whole category. /pl/Drills/4294857977 gave 320 products when it was tested.
  • Checking pickup stock at one store before a job, with full and that store's ZIP.
  • Matching Lowe's items to a product list by brand and model number, with the barcode from full.

๐Ÿšง What it does not do

  • US only. lowes.com. Lowe's Canada is a separate site.
  • 744 products per search term or category. That is how deep Lowe's results go. Split a big pull into narrower terms, or use category links, which each have their own 744.
  • No review text. Star rating and review count only.
  • No sorting or filtering. Rows come back in Lowe's default order. Sort after export.
  • No MyLowe's or Pro pricing. These are signed-out prices, with no member or cart discounts.
  • Some items have no price anywhere. Special orders, quote-only items and installed services come back with price: null rather than a guess.
  • A store number is not checked. Lowe's answers for any four-digit number, so a typo gives you a store that does not exist. A ZIP is looked up, and a wrong one gets a free note.

๐Ÿงญ Which home and retail scraper do you need?

If you wantUse
Lowe's products with store price, stock and specsThis one
Target products with promotions and store pickup stockTarget.com Product Scraper
Amazon products by keyword or ASINAmazon Scraper
An alert when any product page changes price or stockProduct Price and Stock Monitor

โ“ Questions people ask

Do I need a Lowe's account or an API key? No. Nothing to sign up for and nothing to paste.

How do I get prices for my local store? Put your ZIP in zipCode and set detailLevel to full. Check priceScope on each row: STORE is your store's price.

How many products can I get for one search term? 744. For more, use several narrower terms or category links.

Why is price null on some rows? Lowe's has no public price on that item, usually a special order, a quote-only product or an installed service.

Can I sort by price or filter by brand? Not inside the run. Every row has price, brand and rating, so sort after export.

Is this affiliated with Lowe's? No. It reads what lowes.com shows anyone signed out. "Lowe's" is a trademark of Lowe's Companies, Inc., used here only to say what the actor reads. On the legal side, Apify's write-up on the legality of web scraping is a good starting point. We are not lawyers.

๐Ÿ†˜ If something breaks

Open the Issues tab on the actor page and send the input you used and the run ID. The note rows in the dataset usually name the reason already.