# US Foods Catalog Scraper | Brands, Specs, Images (`parseforge/us-foods-catalog-scraper`) Actor

Scrape the US Foods public product catalog for brands, case sizes, serving sizes, features, and images. Export JSON, CSV, Excel, XML for restaurant procurement.

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

## Pricing

Pay per event

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)

## 🍽️ US Foods Catalog Scraper

> 🚀 **Export the US Foods public product catalog in seconds.** Collect titles, brands, case sizes, descriptions, features, benefits, and images for foodservice products. No API key, no registration, no manual CSV wrangling.

> 🕒 **Last updated:** 2026-05-23 · **📊 16 fields** per record · **500+ products** · **30+ brands** · **JSON / CSV / Excel / XML export**

US Foods is one of the two largest broadline foodservice distributors in the United States, serving more than **250,000 restaurants, healthcare operations, schools, hotels, and independent kitchens**. Its public product catalog at `usfoods.com/products-we-offer` showcases the proprietary brand lineup that distinguishes the company from rivals like Sysco. This Actor walks that public catalog end-to-end and returns one clean JSON record per product, ready for spreadsheets, dashboards, AI pipelines, or vendor benchmarking workflows.

The scraper enumerates every product URL exposed by the official `sitemap.xml`, then parses each detail page server-side. Output includes the **primary image**, **product title**, **internal product ID**, **brand name**, **brand logo**, **rich description**, **case size**, **serving size**, **servings per case**, an **ordered list of features**, an **ordered list of benefits**, optional **regulatory disclaimers**, and a **gallery of all carousel images**. Every record is timestamped with `scrapedAt` so you can run the Actor on a schedule and diff snapshots over time.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Restaurant owners and executive chefs | Build a unified product database for cross-distributor comparison |
| Restaurant group purchasing managers | Track US Foods brand portfolio changes week over week |
| Hospital, school, and hotel food service directors | Populate menu engineering tools with case-size and servings data |
| Foodservice consultants and procurement analysts | Audit vendor product mix and surface new launches |
| Market research and competitive intelligence teams | Map the US Foods proprietary brand catalog by category |
| Data engineers building AI agents for hospitality | Feed clean, structured product data into LLM workflows |

---

### 📋 What the US Foods Catalog Scraper does

- 📂 **Crawls the full public catalog.** Walks the official sitemap to discover every product URL in `usfoods.com/products-we-offer/`.
- 🏷️ **Captures brand context.** Extracts brand name and brand logo image for every record so you can group products by proprietary line.
- 📦 **Returns pack and yield specs.** Pulls case size, serving size, and servings per case directly from the structured product spec block.
- 📝 **Preserves marketing copy verbatim.** Saves the long-form description, features list, benefits list, and any regulatory disclaimer text.
- 🖼️ **Keeps the entire image gallery.** Stores the hero image plus every carousel image so you can render product cards downstream.
- 🎯 **Supports targeted runs.** Pass a list of specific product URLs to skip the sitemap and scrape only what you need.

Each record arrives as a flat JSON object with predictable field ordering: image first, identifiers next, then specs, then arrays, then a `scrapedAt` timestamp and `error` slot. The shape is stable across runs, which makes downstream parsing trivial in pandas, BigQuery, Airtable, or any spreadsheet tool.

> 💡 **Why it matters:** restaurants on 3-9% profit margins lose real money when food cost benchmarking is manual. A clean US Foods catalog feed is the missing piece for any procurement workflow that already tracks Sysco, Restaurant Depot, or other broadline distributors.

---

### 🎬 Full Demo

🚧 Coming soon: a 3-minute walkthrough showing how to launch a run, filter results, and export to Google Sheets.

---

### ⚙️ Input

<table>
<tr><th>Field</th><th>Type</th><th>Default</th><th>Description</th></tr>
<tr><td>productUrls</td><td>array of strings</td><td>[]</td><td>Optional. Specific US Foods product URLs to scrape, e.g. https://www.usfoods.com/products-we-offer/product.1-diced-beef.html. Leave empty to crawl the full public catalog from the sitemap.</td></tr>
<tr><td>maxItems</td><td>integer</td><td>10</td><td>Hard cap on records returned. Free plans are limited to 10. Paid plans support up to 1,000,000.</td></tr>
</table>

Example: crawl 50 products straight from the sitemap.

```json
{
    "maxItems": 50
}
````

Example: scrape only a curated short list.

```json
{
    "productUrls": [
        "https://www.usfoods.com/products-we-offer/product.1-diced-beef.html",
        "https://www.usfoods.com/products-we-offer/product.100-key-lime-juice.html",
        "https://www.usfoods.com/products-we-offer/product.12-raised-edge-parbaked-pizza-crust.html"
    ],
    "maxItems": 3
}
```

> ⚠️ **Good to Know:** the US Foods public catalog is a marketing showcase of the proprietary brand portfolio. It does not expose customer-specific contract pricing, which lives behind the ordering portal and varies by account. Treat this Actor as a product specification feed, not a real-time price feed.

***

### 📊 Output

Every product is returned as one flat JSON object. Fields are ordered for predictable downstream parsing: image first, then identifiers, specs, arrays, and a timestamp.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🖼 `imageUrl` | string | `https://www.usfoods.com/content/dam/products/eb/10750947006746_C1CF_2522811.jpg` |
| 📌 `title` | string | `1" Diced Beef` |
| 🔗 `url` | string | `https://www.usfoods.com/products-we-offer/product.1-diced-beef.html` |
| 🆔 `productId` | string | `2522811` |
| 🏷️ `brand` | string | `STOCK YARDS®` |
| 🎨 `brandImageUrl` | string | `https://www.usfoods.com/content/dam/.../STOCKYARDS-L-C.svg` |
| 📝 `description` | string | `Elevate your comfort food offerings with Stock Yards Diced Beef...` |
| 📦 `caseSize` | string | `2/5 LB.` |
| 🍽 `servingSize` | string | null | `100 g` |
| 🔢 `servingsPerCase` | string | null | `45` |
| ✨ `features` | array\<string> | null | `["USDA Choice Grade", "NAMP/MBG: 135A", ...]` |
| 💎 `benefits` | array\<string> | null | `["Labor-saving: diced and frozen...", ...]` |
| ⚖️ `disclaimers` | string | null | `*Processing aids and potential cross-contact...` |
| 🖼 `imageUrls` | array\<string> | `["https://www.usfoods.com/content/dam/products/.../...jpg"]` |
| 🕒 `scrapedAt` | string (ISO 8601) | `2026-05-23T12:15:36.682Z` |
| ❌ `error` | string | null | `null` |

#### 📦 Sample records

<details>
<summary>🥩 Typical product with full spec block (Stock Yards Diced Beef)</summary>

```json
{
    "imageUrl": "https://www.usfoods.com/content/dam/products/eb/10750947006746_C1CF_2522811.jpg",
    "title": "1\" Diced Beef",
    "url": "https://www.usfoods.com/products-we-offer/product.1-diced-beef.html",
    "productId": "2522811",
    "brand": "STOCK YARDS®",
    "brandImageUrl": "https://www.usfoods.com/content/dam/us-foods/platforms/www/misc/logos/STOCKYARDS-L-C%20copy.svg",
    "description": "Elevate your comfort food offerings with Stock Yards® Diced Beef. Cut from premium beef, it brings rich flavor and hearty texture to stews, kabobs, pot pies, and other crowd-pleasing favorites. This versatile, high-quality beef is a perfect addition to any menu, providing a flavorful, revenue-generating option for your operation.",
    "caseSize": "2/5 LB.",
    "servingSize": "100 g",
    "servingsPerCase": "45",
    "features": [
        "USDA Choice Grade",
        "NAMP/MBG: 135A",
        "1\" diced from quality cuts of beef"
    ],
    "benefits": [
        "Labor-saving: diced and frozen, saving your kitchen staff valuable prep time",
        "Versatile: can be utilized as an ingredient for a variety of crowd-pleasing and classic menu items"
    ],
    "disclaimers": null,
    "imageUrls": [
        "https://www.usfoods.com/content/dam/products/eb/10750947006746_C1CF_2522811.jpg"
    ],
    "scrapedAt": "2026-05-23T12:15:36.764Z",
    "error": null
}
```

</details>

<details>
<summary>🍋 Edge case: ingredient with high yield and no benefits block (Key Lime Juice)</summary>

```json
{
    "imageUrl": "https://www.usfoods.com/content/dam/products/scoop/50758108659068_C1CD.jpg",
    "title": "100% Key Lime Juice",
    "url": "https://www.usfoods.com/products-we-offer/product.100-key-lime-juice.html",
    "productId": "6773402",
    "brand": "RYKOFF SEXTON®",
    "brandImageUrl": "https://www.usfoods.com/content/dam/us-foods/platforms/www/misc/logos/RS_S_B_12172013-K%20copy.svg",
    "description": "Our 100% Key Lime Juice is fresh squeezed, never from concentrate, and gently pasteurized at a lower temperature than most juices for a clean, fresh taste. It is vastly superior to traditional shelf-stable reconstituted lime juices. Our all-natural juices will energize your recipes with delightfully sweet, punchy and tart flavors. Perfect for pies, sauces, cocktails and signature dishes.",
    "caseSize": "12/32 OZ",
    "servingSize": "5 ml",
    "servingsPerCase": "2268",
    "features": [
        "Bold, fresh key lime flavor",
        "Gently pasteurized for the freshest taste",
        "All-natural, minimally processed",
        "Each 32-ounce bottle contains the equivalent of 22 limes",
        "50 day shelf life from production"
    ],
    "benefits": null,
    "disclaimers": null,
    "imageUrls": [
        "https://www.usfoods.com/content/dam/products/scoop/50758108659068_C1CD.jpg"
    ],
    "scrapedAt": "2026-05-23T12:15:36.795Z",
    "error": null
}
```

</details>

<details>
<summary>📦 Sparse non-edible: disposable foam container with no serving info</summary>

```json
{
    "imageUrl": "https://www.usfoods.com/content/dam/products/eb/50758108673736_C1CD.jpg",
    "title": "1-Compartment Dual-Tab Foam Container",
    "url": "https://www.usfoods.com/products-we-offer/product.1-compartment-dual-tab-foam-container.html",
    "productId": "7804644",
    "brand": "VALU+PLUS®",
    "brandImageUrl": "https://www.usfoods.com/content/dam/us-foods/platforms/www/misc/logos/VALUEPLUS-PRI-M-C%20copy.svg",
    "description": "Valu+Plus single-compartment foam food containers make it a cinch to transport hot or cold food making carryout possible and complementing any \"to go\" program.",
    "caseSize": "150 EA",
    "servingSize": null,
    "servingsPerCase": null,
    "features": [
        "Height 3.25 in.",
        "Increased structural strength",
        "Economy 9 in. x 9 in. foam 1-compartment container",
        "Sturdy, non-absorbent, insulated and lightweight for easy handling",
        "Stacking rim design prevents food damage when containers are stacked"
    ],
    "benefits": [
        "Convenient",
        "One-way service reduces food costs, transport, labor, breakage and simplifies foodservice operations for takeout",
        "Single-use sanitary product prevents the spread of germs"
    ],
    "disclaimers": null,
    "imageUrls": [
        "https://www.usfoods.com/content/dam/products/eb/50758108673736_C1CD.jpg"
    ],
    "scrapedAt": "2026-05-23T12:15:36.682Z",
    "error": null
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🚀 | **Fast crawl path.** Pure HTTP fetch plus Cheerio parsing. No browser, no proxy lock-in, no captcha dance. |
| 🧱 | **Stable field shape.** Every record matches the schema above, so your downstream code never breaks on missing keys. |
| 📦 | **Real pack and yield data.** Case size, serving size, and servings per case parsed straight from the spec block. |
| 🏷️ | **Brand grouping ready.** Brand name and brand logo on every record lets you cluster the proprietary portfolio. |
| 🖼️ | **Image-first ordering.** Hero image is field one, gallery is preserved, so product cards render cleanly. |
| 🎯 | **URL targeting.** Pass a list of specific product URLs for incremental updates or quality-control sweeps. |
| ⏱️ | **Timestamped output.** `scrapedAt` on every record makes longitudinal tracking and diffing painless. |

> 📊 A full sitemap pass returns roughly **500 products** in under **three minutes** on a single Apify run.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| Manual browsing | Free, but hours per week | One product at a time | Whenever you remember | None | Copy-paste hell |
| Official publications | Free, very limited | Marketing PDFs only | Quarterly at best | None | Manual parsing |
| Paid live distributor APIs | High monthly fee | Customer-account scoped | Real-time | Account-level | Vendor onboarding |
| Legacy community dumps | Free | Stale, often years old | Never | None | Out of date |
| **⭐ US Foods Catalog Scraper** *(this Actor)* | Pay only for what you run | Full public sitemap | On demand or scheduled | URL list, item cap | One click |

The right pick depends on whether you need authoritative, live, public catalog data or a contract-pricing data feed. This Actor covers the first cleanly, no friction.

***

### 🚀 How to use

1. 🔐 **Sign up for Apify.** Create a free account at [console.apify.com](https://console.apify.com/sign-up?fpr=vmoqkp). No credit card needed.
2. 🍽️ **Open the Actor.** Land on the US Foods Catalog Scraper page on the Apify Store.
3. ⚙️ **Set your input.** Leave `productUrls` empty for a full crawl, or paste specific product URLs. Set `maxItems` to whatever you need.
4. ▶️ **Hit Start.** The Actor enumerates the sitemap and scrapes each page. Free runs cap at 10 records for preview.
5. 📥 **Export your data.** Download as JSON, CSV, Excel, or XML. Connect to Google Sheets, Airtable, Slack, Make, or your own backend.

> ⏱️ Total time from sign-up to first dataset: about **two minutes**.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%">

#### 🍽️ Independent restaurants

- Build a US Foods reference list to negotiate pricing with reps
- Track new brand launches in the proprietary portfolio
- Cross-check case-size and yield specs against menu costing tools
- Spot product reformulations by diffing descriptions over time

</td>
<td width="50%">

#### 🏢 Group purchasing managers

- Maintain a unified product catalog across multiple distributors
- Map US Foods proprietary brands to category benchmarks
- Feed procurement dashboards with brand and yield context
- Generate vendor-side reports for finance and operations leads

</td>
</tr>
<tr>
<td width="50%">

#### 🏥 Institutional foodservice

- Populate dietitian tools with serving size and pack data
- Audit broadline distributor coverage for hospital and school menus
- Spot supply gaps when planning multi-site catering rotations
- Build internal request portals seeded with real product copy

</td>
<td width="50%">

#### 📊 Procurement analysts and consultants

- Map the foodservice brand landscape for clients
- Generate competitive intelligence reports on broadline product mix
- Track product launches and discontinuations between snapshots
- Power AI shopping agents with structured catalog data

</td>
</tr>
</table>

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Empirical datasets for papers, thesis work, and coursework
- Longitudinal studies tracking changes across snapshots
- Reproducible research with cited, versioned data pulls
- Classroom exercises on data analysis and ethical scraping

</td>
<td width="50%">

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Data visualizations, dashboards, and infographics
- Content research for bloggers, YouTubers, and podcasters
- Hobbyist collections and personal trackers

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Transparency reporting and accountability projects
- Advocacy campaigns backed by public-interest data
- Community-run databases for local issues
- Investigative journalism on public records

</td>
<td width="50%">

#### 🧪 Experimentation

- Prototype AI and machine-learning pipelines with real data
- Validate product-market hypotheses before engineering spend
- Train small domain-specific models on niche corpora
- Test dashboard concepts with live input

</td>
</tr>
</table>

***

### 🔌 Automating US Foods Catalog Scraper

Trigger and consume runs from any stack. Apify exposes a REST API plus first-party Node.js and Python SDKs.

- 🟩 **Node.js SDK:** see the [JavaScript client docs](https://docs.apify.com/api/client/js/) for `runActor`, polling, and dataset streaming.
- 🐍 **Python SDK:** the [Python client docs](https://docs.apify.com/api/client/python/) cover the same surface with idiomatic Python.
- 📚 **API reference:** the full [Apify REST API](https://docs.apify.com/api/v2) lets you wire runs into any HTTP-capable system.

Schedule recurring catalog snapshots with [Apify Schedules](https://docs.apify.com/platform/schedules) and feed deltas into your warehouse, BI tool, or alerting workflow. Daily, weekly, or monthly cadences are all easy to set up from the console.

***

### ❓ Frequently Asked Questions

<details>
<summary>📦 <strong>What exactly does this Actor return?</strong></summary>

A flat JSON record per product with 16 fields: hero image, title, URL, internal product ID, brand, brand logo, description, case size, serving size, servings per case, features list, benefits list, regulatory disclaimers, full image gallery, `scrapedAt` timestamp, and an `error` slot.

</details>

<details>
<summary>🔢 <strong>How many products are in the catalog?</strong></summary>

The public sitemap exposes roughly 500 proprietary products at any given time. Numbers shift as US Foods launches new SKUs and retires others.

</details>

<details>
<summary>💲 <strong>Does the Actor return prices?</strong></summary>

No. The public catalog is a brand showcase. Customer pricing is account-specific and lives behind the ordering portal. Use this Actor for product specifications, not for live pricing.

</details>

<details>
<summary>🛒 <strong>Can I target specific products instead of the full catalog?</strong></summary>

Yes. Pass a list of product URLs in `productUrls` and the Actor will skip the sitemap and scrape only those URLs.

</details>

<details>
<summary>⏱️ <strong>How fast is a full crawl?</strong></summary>

A complete sitemap pass over roughly 500 products finishes in about three minutes on default Apify hardware.

</details>

<details>
<summary>🔁 <strong>Can I schedule recurring runs?</strong></summary>

Yes. Use the built-in [Apify Schedules](https://docs.apify.com/platform/schedules) to run daily, weekly, or monthly snapshots. Diff outputs to track new launches and discontinuations.

</details>

<details>
<summary>📊 <strong>What export formats are supported?</strong></summary>

JSON, CSV, Excel, XML, RSS, and HTML. Also accessible as a live API endpoint via the dataset URL on every run.

</details>

<details>
<summary>🆓 <strong>Is there a free plan?</strong></summary>

Yes. Free runs cap at 10 records so you can validate the schema and quality before upgrading.

</details>

<details>
<summary>💼 <strong>Can I use the data commercially?</strong></summary>

The Actor pulls only publicly available data published by US Foods on their public website. You are responsible for ensuring your specific downstream use aligns with US Foods' published terms and any applicable laws.

</details>

<details>
<summary>💳 <strong>Do I need a paid Apify plan?</strong></summary>

A free Apify account is enough to test with up to 10 records. Beyond that, any of Apify's paid plans unlocks the full sitemap and large batches.

</details>

<details>
<summary>🛠️ <strong>What if a run fails or returns fewer items than expected?</strong></summary>

Open the run in the Apify console and check the log. Failures are usually transient and resolve on retry. If issues persist, reach out via the contact form below with your run ID.

</details>

<details>
<summary>⚖️ <strong>Is scraping the US Foods public catalog legal?</strong></summary>

The Actor only fetches publicly available pages, exactly as a normal browser would. Legality depends on your jurisdiction and your specific downstream use. Consult counsel when in doubt.

</details>

***

### 🔌 Integrate with any app

Connect the Actor to whichever tools you already use. Apify Integrations cover the popular automation stack.

- [**Make**](https://apify.com/integrations) - drag-and-drop workflows triggered by completed runs
- [**Zapier**](https://apify.com/integrations) - push records into thousands of Zapier-supported apps
- [**Slack**](https://apify.com/integrations) - post run summaries to a team channel
- [**Airbyte**](https://apify.com/integrations) - stream datasets into Snowflake, BigQuery, or Postgres
- [**GitHub Actions**](https://apify.com/integrations) - kick off runs from CI pipelines
- [**Google Drive**](https://apify.com/integrations) - sync exports to a shared folder

***

### 🔗 Recommended Actors

- [**🥫 Sysco Food Service Scraper**](https://apify.com/parseforge/sysco-scraper) - the other broadline giant. Pair with this Actor for cross-distributor comparison.
- [**🍳 CHEF'STORE Wholesale Food Price Scraper**](https://apify.com/parseforge/restaurant-depot-sysco-us-foods-chef-store-scraper) - cash-and-carry pricing across all CHEF'STORE locations.
- [**📦 Uline Product Catalog Scraper**](https://apify.com/parseforge/uline-scraper) - packaging, foodservice supplies, and operational consumables.
- [**🛒 Costco Product Scraper**](https://apify.com/parseforge/costco-scraper) - bulk retail comparison for restaurants and independent operators.
- [**🐾 Chewy.com Product Scraper**](https://apify.com/parseforge/chewy-com-scraper) - structured product catalogs from large ecommerce surfaces.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more foodservice and ecommerce data tools.

***

**🆘 Need Help?** Stuck on input config or want a custom field added? [**Open our contact form**](https://tally.so/r/BzdKgA) and we will get back to you fast.

***

> **⚠️ Disclaimer:** this is an independent tool built by ParseForge. It is not affiliated with, endorsed by, or sponsored by US Foods Holding Corp. or any of its subsidiaries. Only publicly available data is collected.

# Actor input Schema

## `productUrls` (type: `array`):

Optional. Specific US Foods product URLs to scrape (e.g. https://www.usfoods.com/products-we-offer/product.dulce-de-leche-layered-cake.html). Leave empty to crawl the full public catalog from the sitemap.

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

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

## Actor input object example

```json
{
  "productUrls": [],
  "maxItems": 10
}
```

# Actor output Schema

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

No description

# 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 = {
    "productUrls": [],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/us-foods-catalog-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 = {
    "productUrls": [],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/us-foods-catalog-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 '{
  "productUrls": [],
  "maxItems": 10
}' |
apify call parseforge/us-foods-catalog-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "US Foods Catalog Scraper | Brands, Specs, Images",
        "description": "Scrape the US Foods public product catalog for brands, case sizes, serving sizes, features, and images. Export JSON, CSV, Excel, XML for restaurant procurement.",
        "version": "0.1",
        "x-build-id": "w7it36xB08GZY0NxJ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~us-foods-catalog-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-us-foods-catalog-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~us-foods-catalog-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-us-foods-catalog-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~us-foods-catalog-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-us-foods-catalog-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": {
                    "productUrls": {
                        "title": "Product URLs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional. Specific US Foods product URLs to scrape (e.g. https://www.usfoods.com/products-we-offer/product.dulce-de-leche-layered-cake.html). Leave empty to crawl the full public catalog from the sitemap.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
