# Pizza Hut Store Locator — US Locations & Details (`memo23/pizza-hut-store-locator`) Actor

Scrape Pizza Hut store locations from locations.pizzahut.com — address, coordinates, phone, hours, carryout/delivery/dine-in flags. Walk state and city pages or paste direct store URLs. JSON or CSV out.

- **URL**: https://apify.com/memo23/pizza-hut-store-locator.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 scraped items

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

<p align="center"><img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/pizzahut-locator-logo.png" width="140" alt="Pizza Hut Store Locator"></p>

## Pizza Hut Store Locator — US Locations & Details

Extract every Pizza Hut store location in the US from `locations.pizzahut.com`. Give the actor a state or city URL and it walks the directory, returning one clean row per store: name, brand type, full address, coordinates, phone, hours, and carryout/delivery/dine-in flags.

![How the Pizza Hut Store Locator works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-pizzahut-locator.png)

### Why use this Pizza Hut Store Locator

- Walks the full directory — state → city → store, no manual URL list needed.
- Full store details — address, coordinates, phone, timezone, hours.
- Service flags — carryout, delivery, dine-in per store.
- Brand type — Pizza Hut vs Pizza Hut Express.
- No browser automation — parses the Yext pageProps JSON directly.
- Accessible from datacenter IPs — the locations subdomain isn't behind Cloudflare.

### Overview

Pizza Hut's store locator lives at `locations.pizzahut.com`, a Yext-powered Next.js site with a 3-level hierarchy: state → city → store. Listing pages have links in the HTML; store pages embed a `pageProps` JSON block with the full store record. This actor walks the directory and parses the JSON — no headless browser needed.

### Supported inputs

| You provide | Example |
|---|---|
| A state page | `https://locations.pizzahut.com/ca` |
| A city page | `https://locations.pizzahut.com/ca/anaheim` |
| A direct store URL | `https://locations.pizzahut.com/ca/anaheim/116-s-state-college-blvd` |

### Use cases

- Build a complete US Pizza Hut locations dataset.
- Geocode stores for mapping or proximity search.
- Track which stores offer delivery, carryout, or dine-in.
- Feed a restaurant locator or aggregator product.
- Monitor store openings and closures over time.

### How it works

1. You supply state, city, or store URLs.
2. The actor classifies each URL and walks the directory (BFS: state → city → store).
3. For each store page, it extracts the `pageProps` JSON block.
4. The JSON is normalized into a clean store record.
5. Results are written to the dataset as one row per store.

### Input configuration

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | — | Pizza Hut locations URLs (state, city, or store). |
| `maxItems` | integer | `1000` | Maximum stores to scrape. |
| `maxConcurrency` | integer | `10` | Parallel store page fetches. |
| `proxy` | object | residential | Optional proxy override. |

### Output overview

Each dataset item is a normalized store:

| Field | Description |
|---|---|
| `storeId` | Yext business ID. |
| `storeUrl` | Canonical store page URL. |
| `name` | Store name (e.g. "Pizza Hut Express"). |
| `brandType` | Brand type (PIZZA_HUT, PIZZA_HUT_EXPRESS). |
| `addressLine1` | Street address. |
| `city` / `state` / `stateName` / `postalCode` | Address components. |
| `latitude` / `longitude` | Store coordinates. |
| `phone` | Store phone number. |
| `timezone` | Store timezone. |
| `offersCarryout` / `offersDelivery` / `offersDineIn` | Service flags. |
| `carryoutHours` / `deliveryHours` / `dineInHours` | Hours by day. |
| `googleMapsUrl` | Google Maps link. |
| `image` | Store image URL. |

### Notes

- The `locations.pizzahut.com` subdomain is accessible from datacenter IPs — no residential proxy required.
- The main `www.pizzahut.com` site is behind Cloudflare, but the locator subdomain is not.
- Store hours are returned as a nested object keyed by day of week.

# Actor input Schema

## `startUrls` (type: `array`):

Pizza Hut locations URLs. State pages (locations.pizzahut.com/ca), city pages (locations.pizzahut.com/ca/anaheim), or direct store URLs are auto-classified.

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

Maximum stores to scrape.

## `maxConcurrency` (type: `integer`):

Number of store pages fetched in parallel.

## `proxy` (type: `object`):

Optional proxy override. The locations subdomain is accessible from datacenter IPs.

## Actor input object example

```json
{
  "maxItems": 1000,
  "maxConcurrency": 10,
  "proxy": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/pizza-hut-store-locator").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 = { "proxy": { "useApifyProxy": True } }

# Run the Actor and wait for it to finish
run = client.actor("memo23/pizza-hut-store-locator").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 '{
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call memo23/pizza-hut-store-locator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/pizza-hut-store-locator"
        }
    }
}
```

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/RoRPDID7yvyqdeXsr/builds/Mg93sqe4mzckjmu9s/openapi.json
