# Pizza Hut Scraper \[$3.50/1K💰] | 18 Markets | Stores & Fees (`ahmed_jasarevic/pizza-hut-store-scraper`) Actor

Collect normalized Pizza Hut store locations from 18 markets with addresses, coordinates, phone, services and hours, plus published delivery fees and order minimums.

- **URL**: https://apify.com/ahmed_jasarevic/pizza-hut-store-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.30 / 1,000 results

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/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

## Pizza Hut Store & Charges Scraper (18 Markets)

Collect normalized [Pizza Hut](https://www.pizzahut.com/) store locations from **18 markets** — addresses, coordinates, phone numbers, services, hours and status — plus a separate dataset of published store-level delivery fees and order minimums, for mapping, market research, competitor analysis and location-based apps.

This Apify Actor uses Pizza Hut's public locator APIs, XML feeds and server-rendered store pages. It does not open a browser, so runs are fast and inexpensive, and everything is available through the Apify API, scheduler, integrations and webhooks. It covers the US, UK, Canada, France, Germany, Poland, Czechia, Hungary, Spain, India, Taiwan, Saudi Arabia, the UAE, Bahrain, Jordan, Kuwait, Oman and Qatar.

### Map & Analyze Pizza Hut Locations At Scale

- **Restaurant and franchise mapping** — plot every store with coordinates, address and market on a map.
- **F\&B market research** — compare store density and coverage across 18 countries in one normalized shape.
- **Delivery and service analysis** — see delivery, collection, dine-in and online-ordering flags and published fees per store.
- **Location-based applications** — power store finders, delivery-zone tools and local SEO workflows.
- **Directory monitoring** — schedule daily or weekly runs to track new, closed or changed locations.

### How It Works

![Pizza Hut Scraper workflow: from 18 market directories to normalized store and additional-charge records](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-pizza-hut.webp?v=2)

Looking for a reliable **Pizza Hut scraper** or a practical **Pizza Hut locator API alternative**? Choose one or more of the **18 markets**, optionally add a city, postcode, address, store number or locator URL, and run the Actor to get clean, normalized store records for **store mapping, F\&B market research and location-based products**. Each record includes the store name, address, GPS coordinates, phone, timezone, services (delivery, collection, dine-in, online ordering), published hours and payments, store URLs, open/closed status and franchise data across the US, UK, Canada, France, Germany, Poland, Czechia, Hungary, Spain, India, Taiwan, Saudi Arabia, the UAE, Bahrain, Jordan, Kuwait, Oman and Qatar.

Use the dataset to map coverage, benchmark store density, compare delivery and collection availability, track new or closed locations over time, and feed store finders or GIS dashboards. Published delivery surcharges and order minimums go to a separate `additionalCharges` dataset. Export as JSON, CSV or Excel, or pull results through the Apify API. Markets that do not publish a field return `null` with an explanatory note instead of an invented value. Start with a small run, then pay from **$3.50 per 1,000 stores**.

### Input Parameters

| Field | Type | Required | Default | Notes |
| --- | --- | --- | --- | --- |
| `markets` | array | No | All 18 markets | Multi-select market codes. Unknown codes are ignored; empty = all markets. |
| `search` | array | No | `[]` | City, postcode, address, store name/number, phone fragment, or Pizza Hut locator URL. Multiple entries use OR. |
| `maxItems` | integer | No | `0` | Max stores to output across all selected markets. `0` = everything. |
| `includeAdditionalCharges` | boolean | No | `true` | Write the separate `additionalCharges` dataset. |
| `includeClosedStores` | boolean | No | `true` | Keep stores the source marks closed. |
| `forceRefresh` | boolean | No | `false` | Ignore cached responses and fetch fresh data. |

Search is applied after the selected directories are collected, so `maxItems` reduces the output but does not reduce upstream requests. Select only the markets you need for a faster, cheaper run. Supported market codes: `US`, `UK`, `CA`, `FR`, `DE`, `PL`, `CZ`, `HU`, `ES`, `IN`, `TW`, `SA`, `AE`, `BH`, `JO`, `KW`, `OM`, `QA`.

### Output Fields

**Store rows (default dataset):** `id`, `source`, `country`, `market`, `currency`, `store_number`, `name`, `store_type`, `store_types`, `address` (structured with `line1`, `city`, `region`, `postal_code`, `country_code`, `formatted`), `latitude`, `longitude`, `phone`, `timezone`, `services` (`delivery`, `collection`, `dine_in`, `online_ordering`), `hours`, `payments`, `urls`, `status`, `franchise`, `meta`.

**Additional-charge rows (`additionalCharges` dataset):** `id`, `store_id`, `country`, `market`, `store_number`, `store_name`, `store_type`, `store_address`, `currency`, `delivery_surcharge`, `delivery_fee`, `min_delivery_order`, `min_collection_order`, `max_cash_order`, `has_published_charges`, `note`, `source_url`, `scraped_at`.

A market that does not publish a field returns `null` for it (it is not `false`), explained in the row or run summary instead of being invented.

### Example Input

Several markets:

```json
{
  "markets": ["DE", "ES", "TW", "SA"],
  "search": [],
  "maxItems": 0,
  "includeAdditionalCharges": true,
  "includeClosedStores": true,
  "forceRefresh": false
}
```

Search by city and postcode in the US:

```json
{
  "markets": ["US"],
  "search": ["Philadelphia, PA", "19107"],
  "maxItems": 20
}
```

### Example Output

Store row:

```json
{
  "id": "de:112ebb29-0792-b9a8-b2dd-8ac6ee430fd6",
  "source": "pizzahut-de-tictuk",
  "country": "DE",
  "market": "DE",
  "currency": "EUR",
  "store_number": "112ebb29-0792-b9a8-b2dd-8ac6ee430fd6",
  "name": "Pizza Hut Bochum",
  "store_type": "restaurant",
  "store_types": ["takeaway", "dine_in"],
  "address": {
    "line1": "Am Einkaufszentrum 22",
    "city": "Bochum",
    "postal_code": null,
    "country_code": "DE",
    "formatted": "Am Einkaufszentrum 22, Bochum, NRW, DE"
  },
  "latitude": 51.49536193,
  "longitude": 7.27723384,
  "phone": "0234 232355",
  "timezone": "Europe/Berlin",
  "services": { "delivery": false, "collection": true, "dine_in": true, "online_ordering": true },
  "status": { "closed": false }
}
```

Charge row:

```json
{
  "id": "de:112ebb29-0792-b9a8-b2dd-8ac6ee430fd6:charges",
  "store_id": "de:112ebb29-0792-b9a8-b2dd-8ac6ee430fd6",
  "market": "DE",
  "currency": "EUR",
  "delivery_surcharge": null,
  "delivery_fee": null,
  "min_delivery_order": null,
  "min_collection_order": null,
  "max_cash_order": null,
  "has_published_charges": false,
  "note": "Pizza Hut Germany does not publish store-level delivery fees or minimum order values in its public store locator data."
}
```

Download the dataset as JSON, HTML, CSV or Excel. The `OUTPUT` key-value record contains per-market counts, dataset IDs, per-source status, cache settings and limitations.

### Automate Store Monitoring With Schedules & Webhooks

- **Schedule daily or weekly runs** to track new, closed or changed Pizza Hut locations across markets.
- **Use search for ad-hoc checks** on a city, postcode or store number without re-pulling every market.
- **Send results to Google Sheets, Zapier, Make or your own webhook** for franchise dashboards and coverage alerts.
- **Read both datasets via the Apify REST API** to power a store finder or market-analysis tool.

### Related Actors

- [Pizza Hut Store Locator (alternative)](https://apify.com/aitorsm/pizza-hut-store-locator) — an alternative Pizza Hut locator covering US, CA, UK, FR, DE, ES, IN and AU.
- [DoorDash Scraper](https://apify.com/ahmed_jasarevic/doordash-scraper) — restaurant and menu data from a major delivery platform.
- [Uber Eats Scraper](https://apify.com/ahmed_jasarevic/ubereats-scraper) — restaurant listings and menus for delivery-market analysis.
- [Deliveroo Scraper](https://apify.com/ahmed_jasarevic/deliveroo-scraper) — UK/EU restaurant and menu data for F\&B research.
- [OpenTable Scraper](https://apify.com/ahmed_jasarevic/opentable-scraper) — restaurant reservations, ratings and metadata.

### Frequently Asked Questions

#### Why use this Actor instead of the official Pizza Hut API?

Pizza Hut does not offer a public store-locator API for third parties. Each market publishes locations through its own locator API, XML feed or server-rendered pages. This Actor unifies all of them into one input schema and one normalized store shape, so you do not write a separate integration per country.

#### What are alternatives to scraping Pizza Hut?

Alternatives include a general restaurant-data actor, a single-market locator tool, or OpenStreetMap-based business data. This Actor covers **18 markets at $0.0035 per store**, and it also emits a separate dataset of published delivery fees and order minimums — the practical differentiator versus single-market locators.

#### How many stores and markets are covered?

18 markets. Verified snapshot sizes include 508 UK, 619 Canada, 108 France, 1009 India, 72 Germany, 145 Poland, 13 Czechia, 29 Hungary, 14 live Spain pickup stores, 331 Taiwan, and 279 Middle East stores. The US count is dynamic and depends on the source's current saved filter.

#### Why are many charge values null?

Most Pizza Hut markets do not publish store-level delivery fees or minimum order values in their public locator data. The Actor still emits a row for every store and sets `has_published_charges: false` with an explanatory note.

#### Why are some hours or coordinates missing?

Full weekly schedules are available for the US, Germany, Poland, Czechia and Hungary; other markets expose only the current day or no complete schedule. Middle East locators do not publish latitude/longitude, so those fields are `null`.

#### Can I scrape every market in one run?

Yes, but a full run is the most expensive because the scraper collects each selected market's complete directory before applying search and `maxItems`. Select only the markets you need.

### For AI Agents & LLM Apps

Purpose: return normalized Pizza Hut store locations (and optionally published delivery charges) for selected markets and search terms.

Minimal working input:

```json
{ "markets": ["DE"] }
```

Search variant:

```json
{ "markets": ["US"], "search": ["Philadelphia, PA"], "maxItems": 20 }
```

Output fields (stores): `id, source, country, market, currency, store_number, name, store_type, store_types, address, latitude, longitude, phone, timezone, services, hours, payments, urls, status, franchise, meta`.

Output fields (charges): `id, store_id, country, market, store_number, store_name, store_type, store_address, currency, delivery_surcharge, delivery_fee, min_delivery_order, min_collection_order, max_cash_order, has_published_charges, note, source_url, scraped_at`.

Behaviors an agent should know:

- An empty `markets` array means **all 18 markets** — bound cost by selecting only the markets you need.
- `maxItems` (default `0` = unlimited) caps output store rows but **does not reduce upstream requests**; the full directory of each selected market is fetched first.
- The separate `additionalCharges` dataset is written by default (`includeAdditionalCharges: true`) and is billed per row.
- `includeClosedStores` defaults to `true`; `forceRefresh` (default `false`) forces a fresh fetch instead of the 6-hour cache.
- A market that does not publish a field returns `null`, not `false`.
- Billing: pay-per-event — each `result` store is $0.0035, each `additional_charges` row is $0.001, plus a symbolic $0.00005 Actor-start event.

### Legal & Compliance Disclaimer

This is an independent Actor. It is not affiliated with, endorsed by, or sponsored by Pizza Hut. It accesses only publicly available Pizza Hut store-locator APIs, XML feeds and server-rendered store pages — no login is required, no CAPTCHA solving is performed, and no access controls are used. Note that Pizza Hut's US Terms of Use limit use of its Services to personal, noncommercial purposes and restrict copying and distribution. Users are responsible for complying with Pizza Hut's terms of service, applicable data-protection law and the Apify platform rules when using or redistributing the data; this Actor is intended for legitimate research and automation use cases.

### SEO Keywords

pizza hut store locator, pizza hut scraper, pizza hut locations data, pizza hut api, pizza hut stores dataset, restaurant location data, fast food store locator, pizza hut delivery fees, pizza hut store hours, pizza hut near me data, restaurant mapping data, franchise data scraper, multi-country store locator, food and beverage market research, restaurant site selection data, pizza hut alternative, retail store locator scraper, store directory data, delivery zone data, restaurant dataset

# Actor input Schema

## `markets` (type: `array`):

Pizza Hut markets to collect. Leave empty to collect every supported market.

## `search` (type: `array`):

Optional city, ZIP/postcode, address, store name/number, or Pizza Hut locator URL. Multiple entries are combined with OR. Leave empty to collect all stores in the selected markets.

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

Maximum number of stores to output across all selected markets. Charge rows follow the selected stores. Set to 0 to output everything.

## `includeAdditionalCharges` (type: `boolean`):

Write delivery surcharges, minimum orders, and payment limits to a separate additionalCharges dataset. Rows are included even when a market does not publish charge values.

## `includeClosedStores` (type: `boolean`):

Include stores flagged as closed by the source.

## `forceRefresh` (type: `boolean`):

Fetch fresh directory data instead of reusing cached source responses.

## Actor input object example

```json
{
  "markets": [
    "US",
    "UK",
    "CA",
    "FR",
    "DE",
    "PL",
    "CZ",
    "HU",
    "ES",
    "IN",
    "TW",
    "SA",
    "AE",
    "BH",
    "JO",
    "KW",
    "OM",
    "QA"
  ],
  "search": [],
  "maxItems": 0,
  "includeAdditionalCharges": true,
  "includeClosedStores": true,
  "forceRefresh": false
}
```

# Actor output Schema

## `stores` (type: `string`):

Normalized Pizza Hut store locations for the selected markets.

## `additionalCharges` (type: `string`):

Delivery surcharges, minimum orders, and payment limits.

# 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 = {};

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

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

```

## MCP server setup

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

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/HiJ1xGa1cokirdeR7/builds/99LvBKzkSPLsySOgO/openapi.json
