# Sysco Food Service Scraper (`parseforge/sysco-scraper`) Actor

Scrapes Sysco Food Service product listings by search term, category, or brand. Returns each product as a flat row with price, pack size, brand, and regional availability.

- **URL**: https://apify.com/parseforge/sysco-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 30 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.99 / 1,000 result items

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### Sysco Food Service Scraper

**Scrape Sysco Food Service product data by search term, category, or brand, up to a million items per run.** Each product comes with its price, pack size, brand, and regional availability. No login or API key. Export to CSV, JSON, Excel, or XML.

Sysco's official catalog is locked behind a distributor login, and their API is not public. This reads the public product search directly, filtered by search term, category, brand, and zip code, and returns each match in one fixed schema.

| Who uses it | What they scrape Sysco Food Service for |
|---|---|
| Restaurant owners | Compare Sysco prices and pack sizes for menu planning |
| Food distributors | Monitor competitor product assortments and pricing |
| Market researchers | Track food service product trends and regional availability |
| Procurement teams | Build a product database for supplier negotiations |

### What it does

This Actor collects Sysco Food Service product listings by search term, category, or brand, and returns each one as a flat row.

- 🔍 **Search by term:** enter any keyword like 'chicken', 'beef', or 'produce' to get matching products.
- 🏷️ **Filter by category or brand:** narrow results with Sysco category IDs or brand IDs.
- 📍 **Regional availability:** set a zip code to see products and prices from your local distribution center.
- ⚙️ **Request delay control:** adjust the delay between requests to avoid rate limiting.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Sysco Food Service data

**📋 Build a product catalog.**

A restaurant chain scrapes all Sysco products in the poultry category to create an internal menu planning database.

**💰 Compare regional prices.**

A procurement manager runs the scraper with different zip codes to compare Sysco prices across distribution centers.

**📈 Track new products.**

A market researcher monitors Sysco search results weekly to spot new food service items and trends.

**🔎 Audit brand availability.**

A distributor checks which Sysco Classic and Sysco Imperial products are available in a competitor's region.

### Why choose this scraper

|  | What you get |
|---|---|
| **No login required** | Access public Sysco product data without distributor credentials |
| **Regional pricing** | Get prices and availability for any US zip code |
| **Structured output** | Every product returned as a flat row with consistent fields |
| **Scalable** | Collect up to 1,000,000 products per run |

### How it compares

No other Store actor targets Sysco Food Service the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Sysco Food Service Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Sysco Food Service changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor from search terms, category IDs, and brand IDs, alone or together, and filters run as each product is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "searchQuery": "chicken",
  "zipCode": "10001",
  "maxItems": 10
}
```

A larger pull:

```json
{
  "searchQuery": "chicken",
  "zipCode": "10001",
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.01599 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $1.60 |
| 1,000 results | $15.99 |
| 10,000 results | $159.90 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Sysco Food Service Scraper](https://apify.com/parseforge/sysco-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Sysco Food Service through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/sysco-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check your search term, category ID, or brand ID. Try a broader term like 'chicken' and ensure the zip code is valid.

**Why am I getting rate limited?**

Increase the requestDelayMs input to 1000 or more. Also reduce maxItems to avoid too many requests.

**Why are prices different from what I see on Sysco's website?**

Prices vary by zip code and may change frequently. Ensure you are using the same zip code as your Sysco account.

**Why is the run slow?**

The Actor respects request delays. Lower requestDelayMs if you need faster scraping, but be aware of rate limits.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Sysco account to scrape data? | No, this Actor accesses the public Sysco product search without login. |
| How does the zip code affect results? | Sysco has regional distribution centers, so prices and product availability vary by zip code. Enter your local zip code to get relevant data. |
| Can I filter by category or brand? | Yes, use the categoryId and brandId inputs to narrow results. You can find IDs by browsing Sysco's website. |
| What is the maximum number of products I can scrape? | Free users are limited to 100 products. Paid users can scrape up to 1,000,000 products per run. |
| How do I avoid rate limiting? | Increase the requestDelayMs input to add a delay between requests. Start with 1000 ms if you encounter issues. |
| What output formats are supported? | You can export results as CSV, JSON, Excel, or XML. |
| Can I scrape multiple search terms in one run? | The Actor accepts one search term per run. Run it multiple times with different terms or use a task scheduler. |
| Is the data live? | Yes, the Actor fetches current data from Sysco's public search at the time of the run. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Sysco Corporation. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

Search term to find products (e.g. 'chicken', 'beef', 'produce', 'pasta').

## `zipCode` (type: `string`):

US zip code that determines your regional Sysco distribution center. Different zip codes return different regional catalogs and availability data (e.g. 10001=NYC, 90001=LA, 60601=Chicago).

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

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

## `categoryId` (type: `string`):

Filter by Sysco category ID to narrow results to a specific food category (e.g. '5' for Poultry, '1' for Beef).

## `brandId` (type: `string`):

Filter by brand ID to restrict results to a specific brand (e.g. 'SYS CLS' for Sysco Classic, 'SYS IMP' for Sysco Imperial).

## `requestDelayMs` (type: `integer`):

Milliseconds to wait between page requests. Increase if you encounter rate limiting.

## Actor input object example

```json
{
  "searchQuery": "chicken",
  "zipCode": "10001",
  "maxItems": 10,
  "requestDelayMs": 0
}
```

# Actor output Schema

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

Dataset with scraped Sysco product 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 = {
    "searchQuery": "chicken",
    "zipCode": "10001",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/sysco-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 = {
    "searchQuery": "chicken",
    "zipCode": "10001",
    "maxItems": 10,
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchQuery": "chicken",
  "zipCode": "10001",
  "maxItems": 10
}' |
apify call parseforge/sysco-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/sysco-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ok6cGbP3L9l6lsHkL/builds/ZSPJDxCVfcftC48N0/openapi.json
