# IHG Hotel Scraper (`axlymxp/ihg-hotel-scraper`) Actor

Scrape IHG hotels (InterContinental, Holiday Inn, Kimpton, Crowne Plaza, voco & 20+ brands) by destination and dates via IHG's official API — live rates, availability, brand, address, geo, review score, amenities and contact. Pay per hotel.

- **URL**: https://apify.com/axlymxp/ihg-hotel-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** Travel, E-commerce
- **Stats:** 3 total users, 0 monthly users, 97.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 dataset 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## IHG Hotel Scraper

Scrape **IHG (InterContinental Hotels Group)** hotels — InterContinental, Holiday
Inn, Holiday Inn Express, Kimpton, Crowne Plaza, voco, Regent, Hotel Indigo,
Staybridge Suites, Candlewood Suites, avid, Garner, EVEN and 20+ brands — directly
from **IHG's official JSON API**. Give it a destination and dates and get one
clean row per hotel with **live nightly rates, availability, brand, full address,
GPS, guest-review score, amenities and contact** — ready for Sheets, a CRM, or your
data pipeline.

Because it talks to the official IHG API (not a fragile HTML page), it returns
structured, consistent data and does not fight anti-bot systems — so runs are fast
and reliable.

### Who uses this

- **Travel & OTA developers / aggregators** — pull IHG brand-direct rates and
  availability to compare against OTA prices and monitor rate parity.
- **Revenue managers & rate analysts** — track competitor IHG-brand nightly rates
  across a market and date range for pricing decisions.
- **Market researchers & analysts** — map IHG's footprint, brand mix, amenities and
  geo for a city, region or country.
- **Travel agencies & concierges** — check availability, amenities and contact for
  client bookings in seconds.

### What you get (output fields)

| Field                                                               | Type          | Description                                         |
| ------------------------------------------------------------------- | ------------- | --------------------------------------------------- |
| `hotel_code`                                                        | string        | 5-letter IHG hotel mnemonic (e.g. `MIAEP`)          |
| `name`                                                              | string        | Hotel name                                          |
| `brand_name` / `brand_code` / `chain_code`                          | string        | IHG brand & chain (Kimpton, Holiday Inn, …)         |
| `address` / `street` / `city` / `state` / `postal_code` / `country` | string        | Location fields                                     |
| `country_code` / `state_code`                                       | string        | ISO country / state codes                           |
| `latitude` / `longitude`                                            | number        | GPS coordinates                                     |
| `distance_miles`                                                    | number        | Distance from the search center                     |
| `availability_status`                                               | string        | `OPEN` or `CLOSED` for the dates                    |
| `price_lowest` / `price_lowest_after_tax`                           | number        | Lowest nightly rate (before / after tax)            |
| `price_highest` / `price_highest_after_tax`                         | number        | Highest nightly rate (before / after tax)           |
| `currency`                                                          | string        | Property currency (ISO 4217)                        |
| `rooms_available` / `rate_plan_count`                               | number        | Availability depth                                  |
| `review_score` / `review_count`                                     | number        | Average guest score (0–5) & review count            |
| `phone`                                                             | string        | IHG reservations phone for the hotel                |
| `amenities`                                                         | array         | Amenity/facility names (Pool, Wi-Fi, …)             |
| `badges`                                                            | array         | Hotel badges (Pet Friendly, Green Engage, …)        |
| `pets_allowed` / `pet_policy`                                       | bool / string | Pet policy                                          |
| `self_parking_free` / `valet_parking` / `parking_description`       | bool / string | Parking                                             |
| `low_carbon_hotel`                                                  | bool          | IHG Green Engage low-carbon flag                    |
| `date_opened` / `hotel_status`                                      | string        | Property status                                     |
| `image_url` / `logo_url`                                            | string        | Hotel image & brand logo                            |
| `description`                                                       | string        | Marketing description (HTML stripped)               |
| `url`                                                               | string        | Hotel detail page on ihg.com                        |
| `room_rates`                                                        | array         | Room-type × rate-plan pricing (optional enrichment) |
| `scraped_at`                                                        | string        | ISO-8601 timestamp                                  |

### High-value use cases

- **Rate-parity monitoring** — schedule daily runs for your markets and compare IHG
  brand-direct rates with what OTAs advertise.
- **Competitive pricing** — a revenue manager pulls every IHG hotel in the city
  with `price_lowest` for the next 30 check-in dates to benchmark their own rates.
- **Market & investment research** — export all IHG properties in a region with
  brand, amenities, review score and GPS for a portfolio or feasibility study.
- **Travel product feeds** — build a hotel comparison page or a chatbot that quotes
  live IHG availability and prices.
- **Lead & partnership lists** — pull hotel names, brands, locations and contact
  numbers for a target region.

### Input parameters

| Field                | Type    | Default    | Description                                                           |
| -------------------- | ------- | ---------- | --------------------------------------------------------------------- |
| `location`           | string  | `Miami`    | City / airport / address / landmark (resolved automatically)          |
| `hotelCodes`         | array   | –          | Scrape specific hotels by 5-letter code; skips the destination search |
| `checkIn`            | string  | +30 days   | Check-in `YYYY-MM-DD`                                                 |
| `checkOut`           | string  | +32 days   | Check-out `YYYY-MM-DD`                                                |
| `adults`             | integer | 2          | Adults per room (1–8)                                                 |
| `children`           | integer | 0          | Children per room (0–8)                                               |
| `rooms`              | integer | 1          | Rooms to price (1–9)                                                  |
| `maxItems`           | integer | 100        | Max hotels to return                                                  |
| `sortBy`             | enum    | `DISTANCE` | `DISTANCE`, `PRICE` or `RATING`                                      |
| `includeSoldOut`     | boolean | true       | Keep hotels with no availability for the dates                        |
| `includeRoomRates`   | boolean | false      | Add room-type × rate-plan detail (one extra request per hotel)        |
| `language`           | string  | `en-US`    | Content locale                                                        |
| `proxyConfiguration` | object  | off        | Optional — **not required** (the IHG API has no anti-bot)             |

### Example input

```json
{
    "location": "Miami",
    "checkIn": "2026-09-01",
    "checkOut": "2026-09-03",
    "adults": 2,
    "rooms": 1,
    "maxItems": 25,
    "sortBy": "DISTANCE"
}
```

### Example output (one row)

```json
{
    "hotel_code": "MIAEP",
    "name": "EPIC Hotel",
    "brand_name": "Kimpton",
    "brand_code": "KIKI",
    "chain_code": "KI",
    "address": "270 Biscayne Boulevard Way, Miami, FL 33131, US",
    "city": "Miami",
    "state": "Florida",
    "country": "United States",
    "latitude": 25.770522,
    "longitude": -80.189339,
    "distance_miles": 0.37,
    "availability_status": "OPEN",
    "price_lowest": 175.0,
    "price_lowest_after_tax": 242.95,
    "price_highest": 548.0,
    "currency": "USD",
    "rate_plan_count": 47,
    "review_score": 4.12,
    "review_count": 185,
    "phone": "1 800 546 7866",
    "amenities": [
        "Pool",
        "Wireless Internet",
        "Pets Allowed",
        "Business Center"
    ],
    "badges": ["Pet Friendly", "IHG Green Engage™ Level 1"],
    "pets_allowed": true,
    "valet_parking": true,
    "image_url": "https://digital.ihg.com/is/image/ihg/kimpton-miami-8656847883-original",
    "url": "https://www.ihg.com/hotels/us/en/epic-hotel-miami-fl/miaep/hoteldetail",
    "check_in": "2026-09-01",
    "check_out": "2026-09-03",
    "scraped_at": "2026-07-25T18:00:00Z"
}
```

### Scheduling & integrations

- **Schedule** runs (hourly/daily) from the Apify Console to keep a live rate feed.
- **Webhooks** can push each finished run to your endpoint.
- Export to **JSON, CSV, Excel or Google Sheets**, or connect to **Make, Zapier,
  Airbyte or S3** via the Apify API/integrations.

### Use with AI assistants (MCP)

The dataset is clean, flat JSON, so it plugs straight into LLM/RAG pipelines and
AI agents. Run it through the **Apify MCP server** to let an assistant fetch live
IHG hotel rates and availability on demand as a tool call.

### FAQ

**Which brands are covered?** All IHG brands — InterContinental, Holiday Inn &
Holiday Inn Express, Crowne Plaza, Kimpton, voco, Hotel Indigo, Regent, Staybridge
Suites, Candlewood Suites, avid, Garner, EVEN and more.

**How current are the prices?** Rates and availability are fetched live from IHG at
run time for the exact dates and occupancy you request.

**How many hotels can I get?** IHG returns hotels within an auto-widening radius
around your destination; `maxItems` caps how many rows are emitted. Use
`hotelCodes` to target specific properties.

**Do I need a proxy?** No. The IHG API has no anti-bot protection, so runs work
without a proxy — leave `proxyConfiguration` off for the fastest, cheapest runs.

**Are guest reviews included?** The aggregate **review score and count** are
included per hotel. Full individual review text is not exposed by this API.

**Is this legal?** The actor collects publicly available hotel and rate information.
You are responsible for using the data in line with IHG's terms and applicable law.

# Actor input Schema

## `location` (type: `string`):

City, airport, address or landmark (e.g. "Miami", "London", "JFK Airport") — resolved automatically to the nearest IHG hotels. Leave empty if you provide Hotel codes instead.

## `hotelCodes` (type: `array`):

Scrape specific hotels by their 5-letter IHG mnemonic (e.g. "MIAEP", "LONHB"). When set, the destination search is skipped. Find a code in the hotel's IHG URL.

## `checkIn` (type: `string`):

Check-in date in YYYY-MM-DD format. Must be today or later. Leave empty to use 30 days from today. Controls the nightly rates returned.

## `checkOut` (type: `string`):

Check-out date in YYYY-MM-DD format. Leave empty to use 32 days from today. Must be after check-in.

## `adults` (type: `integer`):

Number of adult guests per room.

## `children` (type: `integer`):

Number of children per room.

## `rooms` (type: `integer`):

Number of rooms to price.

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

Stop after collecting this many hotels. IHG returns hotels within an auto-widening radius around the destination.

## `sortBy` (type: `string`):

How to order the hotels around the destination.

## `includeSoldOut` (type: `boolean`):

Keep hotels that have no availability for the selected dates (they will have an availability status but no price).

## `includeRoomRates` (type: `boolean`):

Enrich each hotel with detailed room types × rate plans (base and after-tax price). Adds one request per hotel, so runs are slower.

## `language` (type: `string`):

Locale for hotel content, sent as the IHG language header (e.g. "en-US", "en-GB", "fr-FR").

## `proxyConfiguration` (type: `object`):

Optional. The IHG API has no anti-bot, so a proxy is NOT required — leave this off for the fastest, cheapest runs.

## Actor input object example

```json
{
  "location": "London",
  "hotelCodes": [],
  "adults": 2,
  "children": 0,
  "rooms": 1,
  "maxItems": 100,
  "sortBy": "DISTANCE",
  "includeSoldOut": true,
  "includeRoomRates": false,
  "language": "en-US",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "location": "Miami",
    "hotelCodes": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/ihg-hotel-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 = {
    "location": "Miami",
    "hotelCodes": [],
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/ihg-hotel-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 '{
  "location": "Miami",
  "hotelCodes": []
}' |
apify call axlymxp/ihg-hotel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/ihg-hotel-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/S5bAwuN1glIZ1ghSX/builds/DTBcWHsYS6r2D0aNX/openapi.json
