# Giant Food Product Scraper (`maximedupre/giant`) Actor

Collect current Giant Food grocery product records from product pages, product IDs, category or aisle pages, or catalog discovery. Get product identity, prices, promotions, nutrition, ingredients, dietary flags, and source context in structured dataset rows.

- **URL**: https://apify.com/maximedupre/giant.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** E-commerce, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.60 / 1,000 grocery products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### 🛒 Giant Food product data for grocery research

Grocery analysts, pricing teams, food researchers, and developers can collect current Giant Food product records without copying pages by hand. Choose product pages, product IDs, category or aisle pages, or catalog discovery, then review product identity, package details, prices, availability, promotions, nutrition, ingredients, dietary flags, and source context in structured dataset rows.

**Use it to:**

- Compare regular and unit prices with **[Giant Food Product Prices](https://apify.com/maximedupre/giant/examples/giant-food-product-prices)**.
- Build structured grocery rows with **[Giant Food Product Data](https://apify.com/maximedupre/giant/examples/giant-food-product-data)**.
- Check nutrition and serving details with **[Giant Food Nutrition Facts](https://apify.com/maximedupre/giant/examples/giant-food-nutrition-facts)**.
- Review product choices before an online order with **[Giant Order Online](https://apify.com/maximedupre/giant/examples/giant-order-online)**.
- Find Giant Food product information for research with **[Giant Food](https://apify.com/maximedupre/giant/examples/giant-food)**.

#### 📦 Giant Food product rows

Each saved dataset row represents one Giant Food product. Required fields identify the product and the source that led to it. Other fields appear when Giant Food shows them, including package details, prices, availability, promotions, nutrition, ingredients, images, and ratings. When the same source product is found more than once, the first eligible occurrence is saved and later matches are ignored. The row keeps the one submitted source value that led to that first saved match.

#### 🚀 Collect products from the source you have

1. Choose one source type: product pages, product IDs, category or aisle pages, or catalog discovery.
2. Add the URLs or IDs for that source type. Fields for other source types are ignored.
3. For catalog discovery, optionally add a source update cutoff. Leave the maximum products field empty to return all available results until the source is exhausted.
4. Run the Actor and open the product rows in the default dataset.

#### ⚙️ Input

Choose one source type. The findProductsFrom field is required.

**Input fields**

| Field | Type | What it does |
|---|---|---|
| findProductsFrom | string | Chooses productPages, productIds, categoryOrAislePages, or catalogDiscovery. |
| productPageUrls | object array | Adds one or more Giant Food product page URL objects. |
| productPageUrls\[].url | string | Gives one Giant Food product page URL. |
| productIds | string array | Adds one or more Giant Food product IDs to find. |
| categoryOrAislePageUrls | object array | Adds one or more Giant Food category or aisle page URL objects. |
| categoryOrAislePageUrls\[].url | string | Gives one Giant Food category or aisle page URL. |
| catalogUpdatedAfter | string | For catalog discovery, keeps products whose source update date is after this date. Leave it empty to collect all available catalog products. |
| maxItems | integer | Stops after this many product records. Leave it empty to return all available results until the source is exhausted. |

This is the public input from the successful current-beta default-input run:

```json
{
  "findProductsFrom": "productPages",
  "productPageUrls": [
    {
      "url": "https://giantfood.com/groceries/product/diet-coke-cola-soda-12-pk-12-oz-cans/6839"
    }
  ],
  "maxItems": 1
}
```

#### 🧾 Output

Results are saved to the default Apify dataset. Export the dataset as JSON, CSV, Excel, or other supported formats, or read it through the Apify API.

**Run output**

| Field | Type | What it does |
|---|---|---|
| dataset | string | Opens the collected product rows in the default dataset. |

**Product row fields**

| Field | Type | What it does |
|---|---|---|
| productId | string | Source product identifier used to identify or join the product. |
| name | string | Product name shown by Giant Food. |
| brand | string | Product brand when shown by Giant Food. |
| productUrl | string | Giant Food product page for the row. |
| source | object | The one submitted product, category, aisle, or catalog source that led to the row. |
| source.kind | string | Kind of submitted source: productPage, productId, categoryOrAislePage, or catalogDiscovery. |
| source.submittedValue | string | One submitted URL, product ID, or catalog source value that led to the row. |
| package | object | Package size or measure shown for the product. |
| package.size | string | Source package size or measure, such as a weight, volume, or count. |
| price | object | Regular and unit pricing shown for the product. |
| price.regular | number | Regular product price in the source price representation. |
| price.unit | number | Price per source unit when shown by Giant Food. |
| price.unitMeasure | string | Measure used for the unit price, such as ounce or pound. |
| stockStatus | string | Stock or availability status shown by Giant Food. |
| promotion | object | Promotion details shown for the product. |
| promotion.saleText | string | Sale or promotion text shown by Giant Food. |
| promotion.buyOneGetOne | boolean | Whether Giant Food shows a buy one, get one promotion. |
| ebtEligible | boolean | Whether Giant Food marks the product as eligible for EBT. |
| variableWeight | boolean | Whether Giant Food marks the product as sold by variable weight. |
| privateLabel | boolean | Whether Giant Food marks the product as private label. |
| category | string | Source category assigned to the product. |
| breadcrumbs | string array | Source category and navigation path for the product. |
| breadcrumbs\[] | string | One category or navigation label in the source path. |
| aisle | string | Source aisle classification when available. |
| images | string array | Product image URLs shown by Giant Food. |
| images\[] | string | One product image URL. |
| nutrition | object | Nutrition information shown for the product. |
| nutrition.calories | number | Calories in the source serving. |
| nutrition.servingSize | string | Source serving size. |
| nutrition.servingsPerContainer | string | Source number or wording for servings per container. |
| nutrition.facts | object array | Structured nutrient facts shown for the product. |
| nutrition.facts\[].name | string | Source nutrient name. |
| nutrition.facts\[].amount | string | Source amount for the nutrient. |
| nutrition.facts\[].unit | string | Source unit for the nutrient amount when shown. |
| nutrition.facts\[].dailyValuePercent | number | Source daily value percentage when shown. |
| ingredients | string | Ingredient statement shown for the product. |
| description | string | Product description shown by Giant Food. |
| directions | string | Product directions shown by Giant Food when available. |
| productWarnings | string array | Product warnings shown by Giant Food. |
| productWarnings\[] | string | One product warning. |
| marketingContent | string | Marketing content shown for the product. |
| countryOfOrigin | string | Product country of origin shown by Giant Food. |
| manufacturer | string | Product manufacturer shown by Giant Food. |
| dietaryFlags | string array | Dietary labels or flags shown for the product. |
| dietaryFlags\[] | string | One dietary label or flag. |
| allergens | string array | Allergen information shown for the product. |
| allergens\[] | string | One allergen listed for the product. |
| rating | object | Product rating information shown by Giant Food. |
| rating.score | number | Source product rating score. |
| rating.reviewCount | integer | Number of product reviews shown by Giant Food. |

This representative row is copied from the successful current-beta default-input run:

```json
{
  "productId": "6839",
  "name": "Diet Coke Cola Soda - 12 pk",
  "brand": "Diet Coke",
  "productUrl": "https://giantfood.com/groceries/product/diet-coke-cola-soda-12-pk-12-oz-cans/6839",
  "source": {
    "kind": "productPage",
    "submittedValue": "https://giantfood.com/groceries/product/diet-coke-cola-soda-12-pk-12-oz-cans/6839"
  },
  "package": {
    "size": "12 oz cans"
  },
  "price": {
    "regular": 11.99,
    "unit": 0.08,
    "unitMeasure": "oz"
  },
  "stockStatus": "available",
  "promotion": {
    "buyOneGetOne": false
  },
  "ebtEligible": true,
  "variableWeight": false,
  "privateLabel": false,
  "category": "Diet Cola Soda",
  "breadcrumbs": [
    "Global Primary Category",
    "Beverages",
    "Soft Drinks",
    "Cola Soda",
    "Diet Cola Soda"
  ],
  "aisle": "12",
  "images": [
    "https://i5.peapod.com/c/D3/D3MUD.png",
    "https://i5.peapod.com/c/NQ/NQRVX.png",
    "https://i5.peapod.com/c/86/86I9V.png",
    "https://assets.syndigo.cloud/cdn/0107bf33-34f0-4021-b0ed-204e9075ba9b/fileType_jpg;size_600x600/0107bf33-34f0-4021-b0ed-204e9075ba9b",
    "https://assets.syndigo.cloud/cdn/3db63f3f-b249-41ab-8a3b-76ad6fd5b98d/fileType_jpg;size_600x600/3db63f3f-b249-41ab-8a3b-76ad6fd5b98d",
    "https://assets.syndigo.cloud/cdn/f9239c27-a38e-417c-ba8d-cbbd6f7d731b/fileType_jpg;size_600x600/f9239c27-a38e-417c-ba8d-cbbd6f7d731b",
    "https://assets.syndigo.cloud/cdn/4c71e0b7-60e6-486b-8bac-4184f4539278/fileType_jpg;size_600x600/4c71e0b7-60e6-486b-8bac-4184f4539278",
    "https://assets.syndigo.cloud/cdn/a3332d10-71a4-4b0b-b61f-fc5109064416/fileType_jpg;size_600x600/a3332d10-71a4-4b0b-b61f-fc5109064416",
    "https://assets.syndigo.cloud/cdn/ec4147f0-025c-4c5c-ae74-683d73f3cf0c/fileType_jpg;size_600x600/ec4147f0-025c-4c5c-ae74-683d73f3cf0c",
    "https://assets.syndigo.cloud/cdn/d8b3157b-1c5a-47a5-a55a-b4200b9d609a/fileType_jpg;size_600x600/d8b3157b-1c5a-47a5-a55a-b4200b9d609a",
    "https://assets.syndigo.cloud/cdn/ef395d40-5562-4e13-8e70-da32b5b56a40/fileType_jpg;size_600x600/ef395d40-5562-4e13-8e70-da32b5b56a40",
    "https://assets.syndigo.cloud/cdn/603adb07-20e0-4c8e-bf0f-e90c5157120c/fileType_jpg;size_600x600/603adb07-20e0-4c8e-bf0f-e90c5157120c",
    "https://assets.syndigo.cloud/cdn/47104989-b77f-417d-a2cd-8df04d5a13aa/fileType_jpg;size_600x600/47104989-b77f-417d-a2cd-8df04d5a13aa",
    "https://assets.syndigo.cloud/cdn/6e4639ff-4b7b-4d49-a23f-da2de32771af/fileType_jpg;size_600x600/6e4639ff-4b7b-4d49-a23f-da2de32771af"
  ],
  "nutrition": {
    "calories": 0,
    "servingSize": "1 CAN",
    "servingsPerContainer": "12",
    "facts": [
      {
        "name": "Total Fat",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Saturated Fat",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Trans Fat",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Polyunsaturated Fat",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Monounsaturated Fat",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Cholesterol",
        "amount": "0",
        "unit": "mg",
        "dailyValuePercent": 0
      },
      {
        "name": "Sodium",
        "amount": "40",
        "unit": "mg",
        "dailyValuePercent": 2
      },
      {
        "name": "Total Carbohydrates",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Dietary Fiber",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Total Sugar",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Added Sugar",
        "amount": "0",
        "unit": "G",
        "dailyValuePercent": 0
      },
      {
        "name": "Sugar Alcohol",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Other Carbohydrates",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Protein",
        "amount": "0",
        "unit": "g",
        "dailyValuePercent": 0
      },
      {
        "name": "Vitamin A",
        "amount": "0",
        "unit": "mg",
        "dailyValuePercent": 0
      },
      {
        "name": "Vitamin C",
        "amount": "0",
        "unit": "mg",
        "dailyValuePercent": 0
      },
      {
        "name": "Vitamin D",
        "amount": "0",
        "unit": "MCG",
        "dailyValuePercent": 0
      },
      {
        "name": "Calcium",
        "amount": "0",
        "unit": "mg",
        "dailyValuePercent": 0
      },
      {
        "name": "Iron",
        "amount": "0",
        "unit": "mg",
        "dailyValuePercent": 0
      },
      {
        "name": "Potassium",
        "amount": "0",
        "unit": "mg",
        "dailyValuePercent": 0
      }
    ]
  },
  "ingredients": "Carbonated Water, Caramel Color, Aspartame, Phosphoric Acid, Potassium Benzoate (to Protect Taste), Natural Flavors, Citric Acid, Caffeine.",
  "description": "Per 1 Can Serving: 0 calories; 0 g sat fat (0% DV); 40 mg sodium (2% DV); 0 g total sugars.  No sugar.  No calories. Caffeine Content: 46 mg/12 fl oz. SmartLabel: Scan for more food information or call 1-800-438-2653. Sip & Scan: Open dietcoke.com on phone. Scan icon. Enjoy more.  Recycle me. See you again soon!",
  "productWarnings": [
    "Phenylketonurics: Contains phenylalanine."
  ],
  "marketingContent": "Diet coke is the soda that makes taking a break better\nCold and crispy with bold flavor that's never boring, diet coke soft drinks know how to keep things interesting\nFind some me time with a refreshing diet coke\nReliable, timeless, and always ready when you want it, diet coke is a carbonated soft drink with 46mg of caffeine per 12 fl oz serving\n12 pack, 12 fl oz cans of diet coke, a diet soda pop with no calories for all your go-to moments\nDiet Coke has always been your go-to for bringing bubbly magic to the table, and it's still the one for anyone who loves their soda crisp, refreshing, and unapologetically iconic. It's the diet soda that knows what it's about. No sugar and no calories, just that unmistakable cola taste with a fizzy finish that's hard to beat. A drink that's as reliable as your favorite playlist and as satisfying as ticking off everything on your to-do list. Perfect for those solo moments when you want a quick refreshment or a quiet reset, Diet Coke is the sparkling soda that fits into your day like it was made for it. Pair it with your lunch break cheeseburger, that vegan wrap you're wanting, or even your late-night popcorn stash. It's a diet cola that plays nice with pretty much everything, and it always delivers. No fuss, just that refreshing pop you want, every time. Keep it stocked in your fridge for effortless soft drink moments whenever you want to sip, unwind, or just take five. Diet Coke is the bubbly soda that's all about you. It's dependable, crisp, and always ready to hit the spot.",
  "manufacturer": "The Coca-Cola Company",
  "dietaryFlags": [
    "kosher"
  ],
  "rating": {
    "score": 4.490140310959424,
    "reviewCount": 5274
  }
}
```

#### 💳 Pricing

The Actor charges $0.0036 for each successfully returned Giant Food grocery product row. Set maxItems to cap how many rows a run can save and charge.

#### 🔌 Integrations

Open the default dataset in Apify, read it through the Apify API, or use schedules and webhooks for repeat workflows.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I collect products without choosing a store?

Yes. Choose product pages, product IDs, category or aisle pages, or catalog discovery. The Actor does not ask you to select a physical store.

##### Does this Actor place an order or provide delivery?

No. It collects public Giant Food product data and saves it to the dataset. It does not place orders or provide delivery.

##### What happens when the same product is found more than once?

The first eligible occurrence is saved. Later matches are ignored, and the saved row keeps the one submitted source value that led to that first match.

##### Can I use a free-text product name as input?

No. Use a product page URL, product ID, category or aisle page URL, or catalog discovery.

##### Can I collect all available products?

Yes. Leave maxItems empty to return all available results until the source is exhausted.

##### Why might a product field be missing?

Some fields are optional and appear only when Giant Food shows them. Core product identity and source fields are still included for a saved row.

##### Does the data include a store's local price or inventory?

No. The output contains source-level product and availability signals. It does not provide store-specific prices, promotions, inventory, or fulfillment that require a physical-store selection.

### 📝 Changelog

**v0.0** (19-09-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~giant/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Trendyol Scraper: Products & Reviews](https://apify.com/maximedupre/trendyol-scraper): Compare ecommerce product prices, categories, ratings, and reviews.
- [John Lewis Product Scraper](https://apify.com/maximedupre/john-lewis-product-scraper): Collect UK retail product prices, availability, variants, and specifications.
- [Amazon Price Tracker](https://apify.com/maximedupre/amazon-price-tracker): Save Amazon product price snapshots for comparison and repeat checks.
- [Cobasi Pet Product Catalog Scraper (Brazil)](https://apify.com/maximedupre/cobasi): Review a public pet product catalog with prices, brands, categories, and stock.
- [MercadoLibre Search Scraper](https://apify.com/maximedupre/mercado-libre-search-scraper): Compare marketplace product prices, sellers, shipping, and search positions.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `findProductsFrom` (type: `string`):

Choose one way to find Giant Food product records for this run.

## `productPageUrls` (type: `array`):

Enter one or more Giant Food product page URLs. Each URL produces a product record.

## `productIds` (type: `array`):

Enter one or more Giant Food product IDs. The Actor uses them to find the matching product records.

## `categoryOrAislePageUrls` (type: `array`):

Enter one or more Giant Food category or aisle page URLs. The Actor finds product records from those pages.

## `catalogUpdatedAfter` (type: `string`):

For catalog discovery, collect products whose source update date is after this date. Leave empty to collect all available catalog products.

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

Stop after this many product records. Leave empty to collect all available records until the source is exhausted.

## Actor input object example

```json
{
  "findProductsFrom": "productPages",
  "productPageUrls": [
    {
      "url": "https://giantfood.com/groceries/product/diet-coke-cola-soda-12-pk-12-oz-cans/6839"
    }
  ],
  "maxItems": 1
}
```

# Actor output Schema

## `dataset` (type: `string`):

Open the collected product rows in the default dataset.

# 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 = {
    "findProductsFrom": "productPages",
    "productPageUrls": [
        {
            "url": "https://giantfood.com/groceries/product/diet-coke-cola-soda-12-pk-12-oz-cans/6839"
        }
    ],
    "maxItems": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/giant").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 = {
    "findProductsFrom": "productPages",
    "productPageUrls": [{ "url": "https://giantfood.com/groceries/product/diet-coke-cola-soda-12-pk-12-oz-cans/6839" }],
    "maxItems": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/giant").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 '{
  "findProductsFrom": "productPages",
  "productPageUrls": [
    {
      "url": "https://giantfood.com/groceries/product/diet-coke-cola-soda-12-pk-12-oz-cans/6839"
    }
  ],
  "maxItems": 1
}' |
apify call maximedupre/giant --silent --output-dataset

```

## MCP server setup

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

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/KP6r3EBbg9CVqQ2VL/builds/DQ8nkmVp0yKUEdDbi/openapi.json
