# Kroger Store Locator Scraper - All Store URLs (`datacach/kroger-store-locator-scraper`) Actor

Scrape every Kroger grocery store location in the US from the official Kroger store locator sitemap. Get store page URLs for all Kroger stores in one fast run - no search terms or coordinates needed. Pairs with Kroger Store Metadata for full address, phone, hours, and geolocation data.

- **URL**: https://apify.com/datacach/kroger-store-locator-scraper.md
- **Developed by:** [DataCach](https://apify.com/datacach) (community)
- **Categories:** Developer tools, Other, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 links

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Kroger Store Locator Scraper

**Collect the store page URL of every Kroger grocery store in the United States** in a single run. This Actor returns a clean, deduplicated **JSON dataset** of Kroger store page links — no coordinates, no ZIP codes, no search terms required. It's the fastest way to **scrape Kroger store URLs** at nationwide scale, ready to feed into a details/metadata scraper, a mapping tool, or your own database.

Because it's built and hosted on the [Apify platform](https://apify.com), you get **API access**, **scheduling**, **webhooks**, **email/Slack integrations via Zapier and Make**, and full run **monitoring** for free — no scraping infrastructure to maintain.

### What is Kroger Store Locator Scraper?

Kroger Store Locator Scraper is a lightweight, **no-input-required** web scraper that extracts the complete list of Kroger grocery **store page URLs** in the US. Each dataset row is one store link, ready to export or hand off to a follow-up Actor for full store details.

It's designed to pair with **[Kroger Store Details Scraper - Address & Hours](https://apify.com/datacach/kroger-store-details-scraper)**, which takes these URLs and enriches them with address, phone number, opening hours, and geolocation.

### What can Kroger Store Locator Scraper do?

- 🇺🇸 **Collect every Kroger store URL** in the US in one run — no per-state or per-city crawling needed
- ⚡ **Fast and lightweight** — a single request powers the whole run, so it finishes in seconds
- 🔁 **Resumable runs** — if a run migrates or restarts, already-collected links are never re-saved (and never re-charged under pay-per-result)
- ⏭️ **Pagination across runs** — use `startIndex` or `excludeUrls` to fetch new stores only, without paying twice for stores you already have
- 🎚️ **Optional result cap** — set `maxResults` to limit how many store links a run saves
- 📤 **Export to JSON, CSV, Excel, HTML, or XML** directly from the Apify dataset — no code required
- 🔌 **Run via API, CLI, or scheduler** — integrate into n8n, Zapier, Make, or your own pipeline
- 📊 **Monitor every run** from the Apify Console, with logs and alerting on failures

### What data does Kroger Store Locator Scraper extract?

| Field | Description | Example |
|---|---|---|
| `url` | Kroger store page URL | `https://www.kroger.com/stores/grocery/oh/cincinnati/queen-city/014/00375` |
| `coordinate` | Source label the link was found under (currently always `static source`, since no coordinates are needed) | `static source` |
| `extraction_datetime` | UTC timestamp (ISO 8601) when the link was extracted | `2026-07-21T14:30:00.123456+00:00` |
| `extraction_date` | Extraction date in `mm-dd-yyyy` format | `07-21-2026` |

Each store URL encodes a **division and store number** that downstream Actors (like the Kroger Store Details Scraper) can use to look up full store data.

### How do I scrape all Kroger store URLs?

1. Click **Try for free** or **Start** on this Actor's page.
2. (Optional) Open the **Input** tab and set `maxResults`, `startIndex`, or `excludeUrls` — or leave everything blank to collect every Kroger store in the US.
3. Click **Start** and wait for the run to finish — typically well under a minute, since the whole US catalog comes from a single request.
4. Open the **Output** tab and export your Kroger store links as **JSON, CSV, Excel, or HTML**.

<!-- TODO: embed a demo GIF or YouTube video walking through Input -> Run -> Output -->

### Input

Kroger Store Locator Scraper needs **no input at all** to run — every field is optional:

- **Max store links** (`maxResults`) — cap how many store links are saved in this run (`0` = save every store found, which is the default).
- **Start index** (`startIndex`) — skip the first N store links (in stable alphabetical order) so a later run picks up where a previous one left off, without paying for links you already have.
- **Exclude collected URLs** (`excludeUrls`) — a list of store URLs you already have; these are never saved again, regardless of order.

![Kroger Store Locator Scraper input example](https://raw.githubusercontent.com/BenjaminFloresV/public-datacach-apify-actors-media/main/kroger-store-locator-scraper/kroger-store-locator-scraper-input-example.png)

### Output example

```json
{
  "url": "https://www.kroger.com/stores/grocery/al/hartselle/crestwood-shopping-center/026/00894",
  "coordinate": "static source",
  "extraction_datetime": "2026-07-22T23:27:55.482851+00:00",
  "extraction_date": "07-22-2026"
}
````

You can download the full dataset in **JSON, CSV, Excel, HTML, or XML** format from the **Output** tab, or pull it programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Use cases

- 🗺️ **Build a Kroger store locator or map** by feeding these URLs into a geolocation/details scraper.
- 🏪 **Track Kroger's store footprint** over time — re-run periodically on a schedule to catch new openings and closures.
- 🔗 **Seed a downstream scraper** (like Kroger Store Details Scraper) with a fresh, complete list of store URLs before extracting address, phone, and hours.
- 📈 **Market and competitive research** — analyze Kroger's US store density by state or region.
- 🤖 **Feed an AI agent or automation workflow** with structured Kroger location data via the Apify API.

### Kroger-related Actors

| Actor | What it does |
|---|---|
| [Kroger Store Details Scraper - Address & Hours](https://apify.com/datacach/kroger-store-details-scraper) | Takes Kroger store URLs (like the ones from this Actor) and extracts full address, phone number, opening hours, and geolocation for each store. |
| *(Add more Kroger/grocery Actors here)* | |

### FAQ

#### Is it legal to scrape Kroger store locator data?

This Actor only extracts data that Kroger already publishes publicly and that your browser can access. Scraping publicly available data is generally considered legal, but you're responsible for complying with Kroger's Terms of Service and any applicable laws in your jurisdiction. Avoid scraping personal or non-public data.

#### How many Kroger stores does this Actor find?

It returns every Kroger store URL it can currently find — typically around 2,700+ US locations, though the exact count changes as Kroger opens and closes stores.

#### Can I get Kroger store addresses, phone numbers, or hours with this Actor?

Not directly — this Actor focuses on collecting store **URLs** only, quickly and cheaply. Pair it with **[Kroger Store Details Scraper - Address & Hours](https://apify.com/datacach/kroger-store-details-scraper)** to enrich each URL with full store details.

#### Does this Actor need proxies or Apify Proxy?

No. This Actor relies on a single public, unauthenticated request, so it doesn't use or require proxy configuration.

#### Can I run this Actor on a schedule or via the API?

Yes. Use the Apify [Scheduler](https://docs.apify.com/platform/schedules) to run it automatically (e.g., weekly), or call it directly via the [Apify API](https://docs.apify.com/api/v2) or CLI, and connect it to Zapier, Make, or n8n for no-code automation.

#### What happens if a run is interrupted or migrated?

Kroger Store Locator Scraper checkpoints its progress as it saves links. If a run is migrated or resurrected mid-crawl, it resumes without re-saving (or re-charging you for) links it already collected.

### Support

Found a bug or have a feature request? Open an issue in the **Issues** tab on this Actor's page. Need a custom scraper or a tailored data pipeline? Reach out — custom development is available on request.

# Actor input Schema

## `maxResults` (type: `integer`):

Maximum number of unique Kroger store links to save (0 = save every store found in the sitemap — this Actor's default, since one run already covers the whole US catalog). Free plan runs are capped at 10 links regardless of this value.

## `startIndex` (type: `integer`):

Skip this many store links from the <b>start</b> before saving any. Use it to paginate across runs: if you already have the first 500 links, set <b>500</b> to begin from link 501 and avoid paying for links you already have. Store links are discovered in a stable alphabetical order (from the sitemap), so index N is reproducible between runs. The Actor still crawls the sitemap up to that point, so a large value does not make the run faster — it only changes which links are saved. Combined with <b>Max store links</b>, the saved range is \[startIndex, startIndex + maxResults). Ignored on the free plan (always starts from 0).

## `excludeUrls` (type: `array`):

Store URLs you already have, e.g. <code>https://www.kroger.com/stores/grocery/oh/cincinnati/queen-city/014/00375</code>. Any URL listed here is <b>never saved again</b>, regardless of order. Unlike <b>Start index</b>, this is order-independent — ideal when you keep a running list and only want new links. Applied after Start index. Free plan runs may list at most 1 URL here.

## Actor input object example

```json
{
  "maxResults": 0,
  "startIndex": 0,
  "excludeUrls": []
}
```

# Actor output Schema

## `dataset` (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 = {
    "excludeUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("datacach/kroger-store-locator-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 = { "excludeUrls": [] }

# Run the Actor and wait for it to finish
run = client.actor("datacach/kroger-store-locator-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 '{
  "excludeUrls": []
}' |
apify call datacach/kroger-store-locator-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kroger Store Locator Scraper - All Store URLs",
        "description": "Scrape every Kroger grocery store location in the US from the official Kroger store locator sitemap. Get store page URLs for all Kroger stores in one fast run - no search terms or coordinates needed. Pairs with Kroger Store Metadata for full address, phone, hours, and geolocation data.",
        "version": "0.0",
        "x-build-id": "fM6Zzzp7MZ9y3TFP6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datacach~kroger-store-locator-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datacach-kroger-store-locator-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/datacach~kroger-store-locator-scraper/runs": {
            "post": {
                "operationId": "runs-sync-datacach-kroger-store-locator-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/datacach~kroger-store-locator-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-datacach-kroger-store-locator-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": {
                    "maxResults": {
                        "title": "Max store links",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of unique Kroger store links to save (0 = save every store found in the sitemap — this Actor's default, since one run already covers the whole US catalog). Free plan runs are capped at 10 links regardless of this value.",
                        "default": 0
                    },
                    "startIndex": {
                        "title": "Start index",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Skip this many store links from the <b>start</b> before saving any. Use it to paginate across runs: if you already have the first 500 links, set <b>500</b> to begin from link 501 and avoid paying for links you already have. Store links are discovered in a stable alphabetical order (from the sitemap), so index N is reproducible between runs. The Actor still crawls the sitemap up to that point, so a large value does not make the run faster — it only changes which links are saved. Combined with <b>Max store links</b>, the saved range is [startIndex, startIndex + maxResults). Ignored on the free plan (always starts from 0).",
                        "default": 0
                    },
                    "excludeUrls": {
                        "title": "Exclude collected URLs",
                        "type": "array",
                        "description": "Store URLs you already have, e.g. <code>https://www.kroger.com/stores/grocery/oh/cincinnati/queen-city/014/00375</code>. Any URL listed here is <b>never saved again</b>, regardless of order. Unlike <b>Start index</b>, this is order-independent — ideal when you keep a running list and only want new links. Applied after Start index. Free plan runs may list at most 1 URL here.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
