# WebstaurantStore Scraper (`parseforge/webstaurantstore-scraper`) Actor

Scrape restaurant equipment and supplies from WebstaurantStore. Get prices, specifications, stock status, ratings, certifications, and 30+ fields per product. Search by keyword or browse categories with pagination.

- **URL**: https://apify.com/parseforge/webstaurantstore-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)

## 🛒 WebstaurantStore Scraper

Quickly gather restaurant equipment and supply data from WebstaurantStore without needing to code. This tool pulls prices, specs, stock status, and reviews from thousands of products, ideal for price analysis, inventory tracking, supplier comparison, or building product databases for research.

> **The WebstaurantStore Scraper captures data like prices, specifications, and stock status with over 30 fields per product, plus optional detailed page enrichment.**

### ✨ What Does It Do

- 🖼️ **Product Image URL** - capture main product images for your catalog or competitive analysis
- 💰 **Price Data** - track regular, program, and sale prices for margin analysis
- 📝 **Title and Description** - get complete product names and descriptions for inventory systems
- 👤 **Brand** - extract manufacturer or brand names for supplier filtering and market research
- ✅ **Stock Status** - monitor stock status and view inventory messages
- 🚚 **Shipping Options** - identify free shipping eligibility and carrier options
- 🎯 **Quick Ship Flag** - detect items ready for quick fulfillment
- ⭐ **Ratings and Reviews** - collect customer ratings and review counts for quality checks
- 📊 **Specifications** - extract detailed product specs for technical comparisons
- 🏷️ **Item Number & UPC** - get standard identifiers for inventory management and procurement
- 🌍 **Categories** - capture product category breadcrumbs for taxonomy mapping
- 📄 **Documents** - link to spec sheets, manuals, and certifications
- 🎥 **Multiple Images** - collect all product images with detail page enrichment

### 🔧 Input

- **Start URLs** - Paste product pages, category pages, or search result URLs to scrape. This overrides search queries.
- **Search Query** - Enter keywords like "commercial refrigerator" or "stainless steel prep table" to search and collect matching products.
- **Max Items** - Set the number of products to collect. Free users: up to 100. Paid users: up to 1,000,000.
- **Include Full Product Details** - Enable detailed page visits for comprehensive data, including all images and specifications. Slower but thorough.

Example input:
```json
{
  "startUrls": [
    {
      "url": "https://www.webstaurantstore.com/search/commercial-refrigerator.html"
    }
  ],
  "maxItems": 50,
  "includeDetails": true
}
````

### 📊 Output

Each product includes over 30 fields. Download as JSON, CSV, or Excel.

| 🖼️ Image URL | 💰 Regular Price | 💰 Sale Price | 💰 Plus Price |
|---|---|---|---|
| 📝 Product Title | 👤 Brand Name | 🏷️ Item Number | 🏷️ UPC |
| ✅ In Stock | 📋 Stock Message | 🚚 Quick Ship | 🚚 Free Shipping |
| 🚚 Common Carrier | ⭐ Star Rating | 📊 Review Count | 📄 Extended Description |
| 🏷️ Feed Identifier | 🏷️ Vendor Item Number | 📏 Unit of Measure | ⚖️ Weight in Pounds |
| 🌍 Categories | 📊 Specifications | 🎖️ Certifications | 🎯 Highlights |
| 📄 Documents | 🎥 Image URLs (Array) | 📅 Scraped At | ⚠️ Error Messages |

### 💎 Why Choose the WebstaurantStore Scraper?

| Feature | Our Actor |
|---|---|
| Search results and category pages | ✔️ |
| Direct product detail URLs | ✔️ |
| 30+ fields per product | ✔️ |
| Optional full detail page enrichment | ✔️ |
| All product images | ✔️ |
| Specifications and certifications | ✔️ |
| Price tiers (regular, sale, plus) | ✔️ |
| Stock status and availability | ✔️ |
| Customer ratings and reviews | ✔️ |
| Export to JSON, CSV, Excel | ✔️ |
| Pagination for thousands of results | ✔️ |
| No coding or setup required | ✔️ |

### 📋 How to Use

No technical skills needed. Just follow these steps:

1. **Sign Up** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. **Find the Tool** Search for "WebstaurantStore Scraper" in the Apify Store and set up your input
3. **Run It** Click "Start" and watch your results appear

That's it. No coding, no setup, no hassle. Export your data in CSV, Excel, or JSON format.

### 🎯 Business Use Cases

- 📊 **Procurement Managers** - Track competitor prices to negotiate better contracts and find cost savings
- 💼 **Sales Teams** - Gather product specs and price data to create comparison documents and highlight advantages
- 🔬 **Market Researchers** - Monitor new product launches and trends by collecting historical inventory snapshots

### ❓ FAQ

**🔍 How does this scraper work?**
It visits WebstaurantStore product and search pages, extracts data from the page source, and optionally visits full detail pages for more information.

**📊 How accurate is the data?**
Data is directly extracted from WebstaurantStore's listings, matching real-time website information. Prices and stock status reflect current availability.

**📅 Can I schedule runs automatically?**
Yes. After your first run, set up automatic daily, weekly, or monthly collections using Apify's scheduling feature, perfect for price monitoring or inventory analysis.

**⚖️ Is this legal and allowed?**
You're scraping publicly available data. It's your responsibility to comply with WebstaurantStore's terms of service and local data laws. Review their robots.txt and terms before large-scale collection.

**🛡️ Will WebstaurantStore block me?**
Usually not, but collecting large volumes quickly may lead to rate limiting. Use residential proxies for high-volume runs. Free runs typically work without proxies.

**⚡ How long does a run take?**
It depends on volume. Collecting 50 products takes about 30 seconds. Collecting 1,000 products with full details takes 5 to 10 minutes. Each product detail adds 1 to 2 seconds per item.

**⚠️ Are there any limits?**
Free users can collect up to 100 results per run. Paid users can collect up to 1,000,000 results per run.

### 🔗 Integrate WebstaurantStore Scraper with any app

- [Make](https://docs.apify.com/platform/integrations/make) - Automate workflows
- [Zapier](https://docs.apify.com/platform/integrations/zapier) - Connect 5000+ apps
- [GitHub](https://docs.apify.com/platform/integrations/github) - Version control integration
- [Slack](https://docs.apify.com/platform/integrations/slack) - Get notifications
- [Airbyte](https://docs.apify.com/platform/integrations/airbyte) - Data pipelines
- [Google Drive](https://docs.apify.com/platform/integrations/drive) - Export to spreadsheets

### 💡 More ParseForge Actors

Browse our complete collection of data extraction tools at <https://apify.com/parseforge> for more scrapers and data tools.

### 🚀 Ready to Start?

[Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) and collect your first 100 results for free. No coding, no setup.

### 🆘 Need Help?

- Check the FAQ section above for common questions.
- Visit the [Apify support page](https://docs.apify.com) for documentation and tutorials.
- Contact us to request a new scraper, propose a custom project, or report an issue at [Tally contact form](https://tally.so/r/BzdKgA).

### ⚠️ Disclaimer

> This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by WebstaurantStore or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

# Actor input Schema

## `startUrls` (type: `array`):

List of URLs to scrape — product pages, category pages, or search results. If provided, searchQuery is ignored.

## `searchQuery` (type: `string`):

Keyword to search for products (e.g. 'commercial refrigerator'). Used if startUrls is not provided.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items. Paid users: Optional, max 1,000,000.

## `includeDetails` (type: `boolean`):

When enabled, fetches each product's detail page for full specifications, highlights, images, and more. Slower but extracts all available data.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.webstaurantstore.com/search/commercial-refrigerator.html"
    }
  ],
  "maxItems": 10,
  "includeDetails": false
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with all scraped items

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.webstaurantstore.com/search/commercial-refrigerator.html"
        }
    ],
    "maxItems": 10,
    "includeDetails": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/webstaurantstore-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.webstaurantstore.com/search/commercial-refrigerator.html" }],
    "maxItems": 10,
    "includeDetails": False,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/webstaurantstore-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.webstaurantstore.com/search/commercial-refrigerator.html"
    }
  ],
  "maxItems": 10,
  "includeDetails": false
}' |
apify call parseforge/webstaurantstore-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/webstaurantstore-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WebstaurantStore Scraper",
        "description": "Scrape restaurant equipment and supplies from WebstaurantStore. Get prices, specifications, stock status, ratings, certifications, and 30+ fields per product. Search by keyword or browse categories with pagination.",
        "version": "1.0",
        "x-build-id": "MaotEcHur0WAg0smp"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~webstaurantstore-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-webstaurantstore-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~webstaurantstore-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-webstaurantstore-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~webstaurantstore-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-webstaurantstore-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "List of URLs to scrape — product pages, category pages, or search results. If provided, searchQuery is ignored.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword to search for products (e.g. 'commercial refrigerator'). Used if startUrls is not provided."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items. Paid users: Optional, max 1,000,000."
                    },
                    "includeDetails": {
                        "title": "Include Full Product Details",
                        "type": "boolean",
                        "description": "When enabled, fetches each product's detail page for full specifications, highlights, images, and more. Slower but extracts all available data.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
