# E-commerce Location Scraper (`e-commerce/e-commerce-location-scraper`) Actor

Collect every store unit (location) for a restaurant chain from its store-locator URL.

- **URL**: https://apify.com/e-commerce/e-commerce-location-scraper.md
- **Developed by:** [E Commerce](https://apify.com/e-commerce) (Apify)
- **Categories:** Lead generation, E-commerce
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.14 / 1,000 locations

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

## E-commerce Location Scraping

Collect every store location for a restaurant chain. Pick one or more supported chains and the scraper returns each chain's store units — name, full address, coordinates, phone, opening hours, and store attributes — as clean [schema.org `Restaurant`](https://schema.org/Restaurant) records.

### What it does

Each selected chain maps to a dedicated location source that enumerates all of that chain's store units and returns them page by page, up to your per-chain limit. Every source has its own native data format; this Actor normalizes them all into a single schema.org shape, so opening hours, addresses, and coordinates look the same regardless of which chains you select. You are charged per location returned.

### Supported chains

Coverage is United States unless noted.

| Chain | Coverage | Chain | Coverage |
| --- | --- | --- | --- |
| Subway | US | Baskin Robbins | US |
| Taco Bell | US | Jack in the Box | US |
| Domino's | US | Panera Bread | US |
| Little Caesars | US | Tropical Smoothie Cafe | US |
| Pizza Hut | US | Waffle House | US |
| Burger King | US | IHOP | US |
| Wendy's | US | Applebee's | US |
| Starbucks | US, Canada | Five Guys | US |
| Popeyes | US, Canada | Hardee's | US |
| McDonald's | US | Auntie Anne's | US |
| Dunkin' | US | Smoothie King | US |
| Chipotle | US | Buffalo Wild Wings | US |
| KFC | US | Denny's | US |
| Dairy Queen | US | Marco's Pizza | US |
| Chick-fil-A | US | Firehouse Subs | US |
| Papa Johns | US | Chili's | US |
| Jersey Mike's | US | Whataburger | US |
| Jimmy John's | US | Dutch Bros Coffee | US |
| Wingstop | US | Culver's | US |
| Panda Express | US | Zaxby's | US |
| Papa Murphy's | US | Cold Stone Creamery | US |
| Tim Hortons | US | | |

### Input

| Field | Type | Description |
| --- | --- | --- |
| `locationsUrls` | array (required) | The chains to collect locations for, chosen from the supported list. Defaults to Subway. Starbucks and Popeyes offer separate US and Canada options. |
| `maxLocationsPerChain` | integer | Maximum locations to collect per chain. Applied independently to each chain, not as a shared run total. Default 1000. |

### Output

Each dataset item is one store location, structured as a [schema.org `Restaurant`](https://schema.org/Restaurant):

```json
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Chick-fil-A",
  "url": "https://www.chick-fil-a.com/locations/va/leesburg",
  "telephone": "+17037771200",
  "branchCode": "02710",
  "identifier": 10086,
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1002 Edwards Ferry Rd NE",
    "addressLocality": "Leesburg",
    "addressRegion": "VA",
    "postalCode": "20176",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 39.114553,
    "longitude": -77.536868
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "https://schema.org/Monday",
      "opens": "06:00:00",
      "closes": "22:00:00"
    }
  ],
  "amenityFeature": [
    { "@type": "LocationFeatureSpecification", "name": "Drive Thru", "value": true }
  ]
}
````

| Field | schema.org type | Description |
| --- | --- | --- |
| `name` | Text | Store name |
| `url` | URL | Store page URL |
| `telephone` | Text | Store phone number |
| `branchCode` | Text | The chain's store code / store identifier |
| `identifier` | — | Internal chain identifier |
| `address` | [PostalAddress](https://schema.org/PostalAddress) | `streetAddress`, `addressLocality` (city), `addressRegion` (state), `postalCode` (ZIP), `addressCountry` (`US`/`CA`) |
| `geo` | [GeoCoordinates](https://schema.org/GeoCoordinates) | `latitude`, `longitude` |
| `openingHoursSpecification` | [OpeningHoursSpecification](https://schema.org/OpeningHoursSpecification)\[] | One entry per open interval. `dayOfWeek`, `opens`/`closes` as 24-hour `HH:MM:SS`. A day with no entry is closed; overnight hours are represented by `closes` earlier than `opens`. Empty when a chain does not publish hours. |
| `amenityFeature` | [LocationFeatureSpecification](https://schema.org/LocationFeatureSpecification)\[] | Store attributes the chain advertises (e.g. Drive Thru, Breakfast, Delivery) |

Any field the source does not provide is `null` (or an empty array for `openingHoursSpecification` / `amenityFeature`).

### Pricing

This Actor uses pay-per-event pricing. You are charged once per store location returned to the dataset (event `location-scraped`).

# Actor input Schema

## `locationsUrls` (type: `array`):

Select the restaurant chains to collect store locations for. The scraper returns every store unit of each selected chain with its address, city, state, ZIP, phone, and URL.

## `maxLocationsPerChain` (type: `integer`):

The maximum number of store locations to collect for each selected chain. Applied independently to every chain, not as a shared run total.

## Actor input object example

```json
{
  "locationsUrls": [
    "https://www.subway.com"
  ],
  "maxLocationsPerChain": 1000
}
```

# 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 = {
    "locationsUrls": [
        "https://www.subway.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("e-commerce/e-commerce-location-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 = { "locationsUrls": ["https://www.subway.com"] }

# Run the Actor and wait for it to finish
run = client.actor("e-commerce/e-commerce-location-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 '{
  "locationsUrls": [
    "https://www.subway.com"
  ]
}' |
apify call e-commerce/e-commerce-location-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "E-commerce Location Scraper",
        "description": "Collect every store unit (location) for a restaurant chain from its store-locator URL.",
        "version": "0.0",
        "x-build-id": "sCfM0EKzNtrGmxzNc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/e-commerce~e-commerce-location-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-e-commerce-e-commerce-location-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/e-commerce~e-commerce-location-scraper/runs": {
            "post": {
                "operationId": "runs-sync-e-commerce-e-commerce-location-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/e-commerce~e-commerce-location-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-e-commerce-e-commerce-location-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",
                "required": [
                    "locationsUrls"
                ],
                "properties": {
                    "locationsUrls": {
                        "title": "Restaurant chains",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Select the restaurant chains to collect store locations for. The scraper returns every store unit of each selected chain with its address, city, state, ZIP, phone, and URL.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "https://www.subway.com",
                                "https://www.tacobell.com",
                                "https://www.dominos.com",
                                "https://littlecaesars.com",
                                "https://www.pizzahut.com",
                                "https://www.bk.com",
                                "https://www.wendys.com",
                                "https://www.starbucks.com",
                                "https://www.starbucks.ca",
                                "https://www.popeyes.com",
                                "https://www.popeyeschicken.ca",
                                "https://www.mcdonalds.com",
                                "https://www.dunkindonuts.com",
                                "https://www.chipotle.com",
                                "https://www.kfc.com",
                                "https://www.dairyqueen.com",
                                "https://www.chick-fil-a.com",
                                "https://www.papajohns.com",
                                "https://www.jerseymikes.com",
                                "https://www.jimmyjohns.com",
                                "https://www.wingstop.com",
                                "https://www.pandaexpress.com",
                                "https://www.baskinrobbins.com",
                                "https://www.jackinthebox.com",
                                "https://www.panerabread.com",
                                "https://www.tropicalsmoothiecafe.com",
                                "https://www.wafflehouse.com",
                                "https://www.ihop.com",
                                "https://www.applebees.com",
                                "https://www.fiveguys.com",
                                "https://www.hardees.com",
                                "https://www.auntieannes.com",
                                "https://www.smoothieking.com",
                                "https://www.buffalowildwings.com",
                                "https://www.dennys.com",
                                "https://www.marcos.com",
                                "https://www.firehousesubs.com",
                                "https://www.chilis.com",
                                "https://www.whataburger.com",
                                "https://www.dutchbros.com",
                                "https://www.culvers.com",
                                "https://www.zaxbys.com",
                                "https://www.papamurphys.com",
                                "https://www.coldstonecreamery.com",
                                "https://www.timhortons.com",
                                "https://www.arbys.com",
                                "https://www.krispykrunchy.com",
                                "https://www.crumblcookies.com",
                                "https://www.togos.com",
                                "https://www.sonicdrivein.com",
                                "https://www.huntbrotherspizza.com",
                                "https://www.roundtablepizza.com",
                                "https://www.longhornsteakhouse.com",
                                "https://www.foxtailcoffee.com",
                                "https://www.pizzapatron.com",
                                "https://www.walk-ons.com",
                                "https://www.manhattanbagel.com",
                                "https://www.acburger.com",
                                "https://www.jimnnicks.com",
                                "https://www.mcmenamins.com",
                                "https://www.theoriginalpizzaking.com",
                                "https://www.dirtydoughcookies.com",
                                "https://www.mogeteeusa.com",
                                "https://www.chickenkitchen.com",
                                "https://www.eastcoastwings.com",
                                "https://www.gravitycoffee.com",
                                "https://www.dontortaco.com",
                                "https://www.tinroofbars.com"
                            ],
                            "enumTitles": [
                                "Subway",
                                "Taco Bell",
                                "Domino's",
                                "Little Caesars",
                                "Pizza Hut",
                                "Burger King",
                                "Wendy's",
                                "Starbucks (US)",
                                "Starbucks (Canada)",
                                "Popeyes (US)",
                                "Popeyes (Canada)",
                                "McDonald's",
                                "Dunkin'",
                                "Chipotle",
                                "KFC",
                                "Dairy Queen",
                                "Chick-fil-A",
                                "Papa Johns",
                                "Jersey Mike's",
                                "Jimmy John's",
                                "Wingstop",
                                "Panda Express",
                                "Baskin Robbins",
                                "Jack in the Box",
                                "Panera Bread",
                                "Tropical Smoothie Cafe",
                                "Waffle House",
                                "IHOP",
                                "Applebee's",
                                "Five Guys",
                                "Hardee's",
                                "Auntie Anne's",
                                "Smoothie King",
                                "Buffalo Wild Wings",
                                "Denny's",
                                "Marco's Pizza",
                                "Firehouse Subs",
                                "Chili's",
                                "Whataburger",
                                "Dutch Bros Coffee",
                                "Culver's",
                                "Zaxby's",
                                "Papa Murphy's",
                                "Cold Stone Creamery",
                                "Tim Hortons",
                                "Arby's",
                                "Krispy Krunchy Chicken",
                                "Crumbl Cookies",
                                "Togo's",
                                "Sonic Drive-In",
                                "Hunt Brothers Pizza",
                                "Round Table Pizza",
                                "Longhorn Steakhouse",
                                "Foxtail Coffee Co",
                                "Pizza Patron",
                                "Walk-On's Sports Bistreaux",
                                "Manhattan Bagel",
                                "Arctic Circle",
                                "Jim 'N Nick's Bar-B-Q",
                                "McMenamins",
                                "The Original Pizza King",
                                "Dirty Dough",
                                "Moge Tee",
                                "Chicken Kitchen",
                                "East Coast Wings + Grill",
                                "Gravity Coffee",
                                "Don Tortaco Mexican Grill",
                                "The Tin Roof"
                            ]
                        },
                        "default": [
                            "https://www.subway.com"
                        ]
                    },
                    "maxLocationsPerChain": {
                        "title": "Maximum locations per chain",
                        "minimum": 1,
                        "type": "integer",
                        "description": "The maximum number of store locations to collect for each selected chain. Applied independently to every chain, not as a shared run total.",
                        "default": 1000
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
