# Accor Hotel Details Scraper (`boncross/accor-hotel-details`) Actor

Scrape full Accor hotel records. Add hotel ids and get the description, address, coordinates, stars, guest rating with category scores, every room type with size and beds, restaurants and facilities, amenities, photos and the latest guest reviews. $0.80 per 1,000 hotels, reviews included.

- **URL**: https://apify.com/boncross/accor-hotel-details.md
- **Developed by:** [BonCross API](https://apify.com/boncross) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.56 / 1,000 hotel-scrapeds

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

## Accor Hotel Details Scraper

### What is Accor Hotel Details Scraper?

For $0.0008 a hotel you get the whole Accor hotel page as one record, guest reviews included. Paste the hotel ids or URLs you care about and Accor Hotel Details Scraper returns the description, address and contact details, the room types, restaurants and facilities, amenities, photos, the guest rating with its category scores, and the latest reviews with the hotel's replies. It covers any hotel in the group, from Raffles and Sofitel to ibis budget.

Worth knowing before you compare:

- One charge covers the lot. Reviews, rooms, facilities and photos come in the same $0.0008 record. There's no separate fee per review or per photo.
- It's fast enough for a catalogue. 300 hotels with every block switched on came back in about 9 seconds.
- You can have the content in 14 languages: descriptions, room names and amenity labels in English, French, German, Japanese, Arabic and nine more.
- The record goes past the brochure. You get which amenities are charged for, car parks with daily prices, what's nearby with walking times, accepted cards, and the hotel's GDS codes for Amadeus, Sabre, Galileo and Worldspan.

**BonCross Verified** means we tested this actor against the live site before release and kept the record:

- 23 of 23 live checks on its inputs and filters passed on 7 October 2026
- 12 hotels run the same day across 12 brands: 12 records, none empty
- A hotel that cannot be read gets an uncharged row saying why

In each record you can:

- Read the description, the selling points and a write-up of the destination
- Get stars, guest rating, review count and the score for location, room, service, cleanliness and more
- List the room types with size, beds, maximum occupancy, views and room amenities
- See restaurants, bars, spas, pools, fitness centres and breakfast with their descriptions
- Read up to 20 recent guest reviews with rating, text, trip type and the hotel's reply
- Collect photo URLs in the sizes Accor publishes
- Check time zone, last renovation, spoken languages and eco-certification dates
- Find a row that says why if a hotel can't be read

### What hotel data do you get?

| | |
|---|---|
| 🏨 Hotel name and Accor id | 🔗 Hotel URL |
| Description, highlights and destination text | Brand, property type and price band |
| ⭐ Star rating | Guest rating, review count and rating source |
| Category scores for location, room, service and more | 💬 Latest guest reviews and hotel replies |
| 🛏 Room types with size, beds and occupancy | Room views and room amenities |
| 🍽 Restaurants, bars, spas, pools and fitness centres | Breakfast type and restaurant |
| Amenities and amenity categories | ♿ Accessible services and areas |
| 📍 Street, postcode, city, country and coordinates | ☎️ Phone and email |
| 🕑 Check-in and check-out times | 🖼 Photos in the sizes Accor publishes |
| Each amenity, free or charged | 🅿️ Car parks with price, height and EV charging |
| Nearby places with distance and walking time | 💳 Accepted payment cards |
| GDS codes for Amadeus, Sabre, Galileo and Worldspan | Eco-certifications with award and expiry dates |
| Time zone, last renovation and spoken languages | Per-room amenities, cots and extra beds |

### How to scrape Accor hotel details

You don't need to write any code. The whole thing is a short form.

1. [Create your free Apify account](https://console.apify.com/sign-up).
2. Open [Accor Hotel Details Scraper](https://apify.com/boncross/accor-hotel-details) and add Accor hotel ids, or paste hotel URLs from all.accor.com.
3. Pick the language. If you don't need reviews, rooms, facilities or photos, switch that block off.
4. Click Start. Twelve hotels took about 3 seconds in testing.
5. Download the records as JSON, Excel, CSV, XML or HTML.

### ⬇️ Input

All you have to give it is hotels: four-character Accor ids ("0663", "C185") or all.accor.com hotel URLs. With nothing else set you get the full record in English with up to 20 reviews and 20 photos per hotel.

Have a long list? "Start URLs" loads hotel links in bulk from a file, a Google Sheet or a remote list, and is combined with what you typed.

Each hotel you list comes back once, which makes the size of the run the size of your list. "Maximum hotels for the whole run" stops earlier if you set it (the default, 0, means no limit). Two more settings decide how much each record holds: "Reviews per hotel" (default 20, which is also the most Accor publishes) and "Photos per hotel" (default 20, up to 200).

Full records for three hotels:

```json
{
  "hotels": ["0663", "C185", "B6R8"],
  "language": "en"
}
```

Reviews as their own rows, with the hotel fields on each:

```json
{
  "hotels": ["0663"],
  "includeReviews": true,
  "reviewsLimit": 20,
  "flattenReviews": true,
  "includeRooms": false,
  "includePhotos": false
}
```

A room-type catalogue in French, without reviews:

```json
{
  "hotels": ["0663", "0785", "B6R8"],
  "language": "fr",
  "includeReviews": false,
  "includeRooms": true,
  "includeFacilities": true,
  "photosLimit": 50
}
```

| Field | Notes |
|---|---|
| `hotels`, `startUrls` | Hotel ids or hotel URLs, typed or loaded in bulk. |
| `maxItems` | Run-wide cap on hotels. 0 means no limit. |
| `includeReviews`, `reviewsLimit`, `flattenReviews` | Reviews on or off, how many (1 to 20), and one row per review. |
| `includeRooms`, `includeFacilities` | The room-type and facilities blocks, both on by default. |
| `includePhotos`, `photosLimit` | Photos on or off, and how many (1 to 200). |
| `language` | `en`, `fr`, `de`, `es`, `it`, `pt`, `nl`, `pl`, `ja`, `ko`, `zh`, `ru`, `tr` or `ar`. |
| `includeRaw`, `delayMs`, `maxConcurrency` | The raw hotel object and tuning. |

#### For developers

- `includeRaw` (default off) adds Accor's untouched hotel object to each record, next to the mapped fields.
- `maxConcurrency` (default 8, up to 32) sets how many requests are in flight. Hotels are read several at a time, and we'd only lower this if a run reported errors.
- `delayMs` (default 0) is an optional pause before each request, in milliseconds. Anything above 2000 is treated as 2000.
- A hotel listed twice is returned and billed once.
- A run that Apify restarts carries on from where it stopped. It doesn't repeat or re-bill a hotel.

### ⬆️ Output

One row is one hotel. Switch on "One row per review" and one row is one review, with the hotel's fields alongside it.

```json
{
  "id": "0663", "hotelId": "0663", "hotelName": "Sofitel Le Scribe Paris Opéra",
  "url": "https://all.accor.com/hotel/0663/index.en.shtml",
  "brand": "SOF", "brandName": "Sofitel", "lodgingTypeText": "Hotel", "priceBand": "€€€€",
  "stars": 5, "rating": 4.8, "ratingScale": 5, "ratingSource": "TRUST_YOU", "totalReviews": 2549,
  "lat": 48.870426, "lng": 2.329937,
  "address": "1  rue Scribe", "postcode": "75009", "city": "PARIS", "country": "France", "countryCode": "FR",
  "phone": "+33 1 44 71 24 24", "email": "reservations.scribe@sofitel.com",
  "checkInFrom": "15:00", "checkOutUntil": "12:00",
  "description": "Sofitel Le Scribe Paris Opéra, a 5* hotel near Palais Garnier, is legendary in the district…",
  "highlights": ["The charm of a historic hotel in Paris, close to the Palais Garnier", "…"],
  "amenities": ["Car park", "Pets allowed", "Shuttle", "Restaurant", "Spa", "Fitness center", "…"],
  "maxAdults": 4, "maxChildren": 3, "maxGuests": 4, "maxRooms": 7,
  "ratingsBySource": [{ "source": "TRUST_YOU", "rating": 4.77, "ratingScale": 5, "totalReviews": 2549 }],
  "reviewCategories": [
    { "category": "Location", "score": 9.8, "scoreScale": 10, "scoreText": "9.8/10", "totalReviews": 781 },
    { "category": "Room", "score": 8.6, "scoreScale": 10, "scoreText": "8.6/10", "totalReviews": 1034 },
    { "category": "Service", "score": 9.3, "scoreScale": 10, "scoreText": "9.3/10", "totalReviews": 1541 }
  ],
  "roomCount": 15,
  "rooms": [
    { "roomCode": "QEB", "roomName": "SUPERIOR ROOM, 1 Queen Size Bed, Courtyard View",
      "roomClass": "SUPERIOR", "roomSizeSqm": 20, "roomSizeSqft": 215, "maxOccupancy": 2,
      "beds": [{ "code": "QUEEN_SIZE_BED", "count": 1, "label": "Queen size bed(s)" }],
      "roomViews": ["Courtyard View"] }
  ],
  "facilities": {
    "restaurants": [{ "code": "R001", "name": "RIVAGES", "description": "…", "seats": 80 }],
    "bars": [{ "code": "B002", "name": "Bar Rivages", "description": "…", "type": "BAR", "seats": 45 }],
    "spas": [{ "name": "Spa", "description": "…" }],
    "pools": [], "fitnessCentres": [{ "name": "Fitness center", "description": "…" }],
    "breakfasts": [{ "name": "Breakfast", "type": "Buffet" }]
  },
  "totalPhotos": 121, "photoCount": 20,
  "photos": [{ "category": "HOTEL", "type": "IMAGE", "url": "https://www.ahstatic.com/photos/0663_ho_00_p_3000x2250.jpg" }],
  "reviewCount": 20,
  "reviews": [
    { "author": "Chinmay K.", "rating": 5, "ratingScale": 5, "text": "Highly recommended Place!",
      "postedAt": "2026-09-06", "tripType": "As a family", "source": "TRUST_YOU",
      "responses": [{ "text": "Dear Mr. K., thank you very much for your kind feedback…", "postedAt": "2026-09-09" }] }
  ],
  "scrapedAt": "2026-09-12T00:31:25.113Z"
}
```

#### Also on every row

That example shows the fields most people start with. The rest of the record:

| Field | What it is |
|---|---|
| `totalReviews` · `totalPhotos` | What Accor says the property has. `reviewCount` and `photoCount` are how many this row actually carries; `reviewsLimit` and `photosLimit` cap them. |
| `reviewTripTypes` | Who stays here, as a share: `[{ "tripType": "Couples", "sharePct": 53 }, …]` |
| `topAmenities` · `amenityCodes` | Amenities as Accor's own codes, such as `PARKING`, `PET`, `WHEELCHAIR_ACCESS`. `amenities` is the same set in words. |
| `amenityCategories` | The headings the amenities fall under: Hotel access, Family, Pets, Catering, Well-being… |
| `amenitiesUrl` | Link to the property's full published fact sheet. |
| `certifications` | Sustainability and quality marks, e.g. `["Ecocertified"]`. |
| `accessibleServices` · `accessibleAreas` · `inaccessibleAreas` | Accessibility, in the property's own words: services offered, areas you can reach, and areas you cannot. Accor publishes these for only some hotels: in a sample of 34 hotels across seven countries (September 2026), 13 listed accessible services, 16 listed accessible areas and 1 listed an inaccessible area. |
| `connectingRoomCount` · `familyRoomCount` | How many rooms of each kind the property has. Counts, not flags. |
| `hasMemberRate` · `isLoyaltyEarning` · `isLoyaltyRedeemable` | Whether a member rate exists, and whether a stay earns or can be paid with points. |
| `hotelCurrency` | The currency the property itself prices in. |
| `state` | Filled where the country has one: a US or Australian property, not a French one. |
| `phoneNational` | The same number in national format, beside the international `phone`. |
| `checkInFromText` · `checkOutUntilText` | The times as the property writes them, beside the 24-hour `checkInFrom` and `checkOutUntil`. |
| `descriptionDestination` | A second paragraph about the surroundings rather than the hotel. |
| `labels` · `kickers` | Short badges the property carries: "Family friendly", "Renovated". |
| `lodgingType` · `scale` · `managementType` · `managementTypeText` | How Accor classifies the property, and whether it manages or franchises it. |
| `breadcrumb` | The destination path Accor files the hotel under, world to city, with links. |
| `image` | One representative photo, beside the full `photos` list. |
| `seoTitle` · `seoDescription` | The page's own title and summary. |
| `flashInfo` | An occasional notice from the property, such as building work or a closure. Usually empty. |
| `geoCode` · `reservationSystem` | Accor's own identifiers for the property's region and booking system. |
| `amenityDetails` | Every amenity the property lists, by heading, with what is charged for: `[{ "category": "Hotel access", "amenity": "Shuttle", "isPaid": null, "details": [{ "label": "PARIS ORLY", "isPaid": true }] }]`. Includes the room inventory ("201 rooms", "6 rooms for people with reduced mobility"). |
| `parking` · `parkingCount` | Car parks on site or nearby: name, location, `isFree`, `price` with `priceCurrency` and `priceUnit` ("DAY"), `priceText`, maximum height, spaces, vehicles, EV charging, security. Listed for 7 of 12 hotels sampled (Paris, London, Tokyo, October 2026). |
| `nearbyPlaces` · `nearbyPlaceCount` | Sights, transport, dining and shopping near the hotel: `name`, `type`, `direction`, `distanceKm`, `distanceText`, `walkingMinutes`, `drivingMinutes`. Listed for 8 of 12 hotels sampled. Both are null for a hotel whose nearby list Accor can't serve; the rest of its record is unaffected. |
| `paymentMethods` · `paymentMethodCodes` | Cards and wallets the hotel accepts, e.g. Visa, Mastercard, American Express, JCB, PayPal. |
| `labelDetails` · `certificationDetails` | Each label and certification with Accor's explanation, e.g. Tourism & Handicap, Eco-certified. |
| `gdsCodes` | The property's codes in the travel-agent booking systems: `[{ "system": "AMADEUS", "code": "PARSCR" }, { "system": "SABRE", "code": "5025" }, …]`. Published for 5 of 12 hotels sampled. |
| `ecoCertifications` | Eco-labels with their status and dates: `[{ "name": "Green Key", "status": "Certified", "awardedOn": "2024-01-01", "expiresOn": "2026-12-31" }]`. |
| `timeZone` · `lastRenovatedOn` · `spokenLanguages` · `maxChildAge` · `hotelStatus` | The hotel's time zone ("Europe/Paris"), date of its last renovation, languages the staff speak, the oldest age that counts as a child, and whether it is open. |
| `loyaltyStatus` · `hasDiningSpaRewards` | Whether the hotel takes part in ALL (`PARTICIPATING_HOTEL`), and whether points can be spent on dining and spa. |
| `managerMessage` · `cityGuideUrl` · `photoCategories` | The manager's welcome, Accor's city guide for the destination, and the photo galleries the hotel has. |
| `rooms[].roomAmenityDetails` · `rooms[].cribText` · `rooms[].extraBedText` | Each room's amenities by heading with what is charged for, and whether a cot or extra bed can be added. |
| `input` | Exactly what you passed in, so a row can be traced back to its input. |
| `hotelRating` · `hotelRatingScale` · `hotelReviewCount` | On a flattened review row only: the hotel's own rating and review total, since `rating` there is the review's. |

### How much does it cost?

| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| `actor-start`, per run | $0.002 | $0.002 | $0.002 | $0.002 |
| `hotel-scraped`, per hotel returned | $0.0008 | $0.00072 | $0.00064 | $0.00056 |

Enterprise plans pay the Business price.

**$0.80 per 1,000 hotels** on the Free plan and $0.56 on Business. Reviews, rooms, facilities and photos are all inside that one charge, platform usage is included, and you pay no proxy fee. A hotel that can't be read gets an error row, which isn't charged.

- Fifty hotels with reviews: $0.002 + 50 × $0.0008 = **$0.042** a run ($0.030 on Business).
- A thousand-hotel catalogue refresh: $0.002 + 1,000 × $0.0008 = **$0.802** a run ($0.562 on Business).

If you're on Apify's Free plan, the $5 of monthly credits stretches to about 119 runs of fifty hotels, which is close to 6,000 full hotel records.

### How fast is it?

| Run | Result |
|---|---|
| Ten hotels, English, all blocks on | 10 full records with 96 room types, 180 reviews and 200 photo entries in 9 seconds |
| Twelve hotels in four countries, English, all blocks on | 12 full records in 2.5 to 3 seconds |
| 120 hotels in Paris, London, Berlin and Sydney, English, all blocks on | 120 full records in 7 to 8 seconds |
| 300 hotels, all blocks on | 300 full records in about 9 seconds |

The last three are whole runs measured on 1 and 2 October 2026. At that pace a catalogue of several thousand hotels fits easily inside the default one-hour run limit.

### Use it in your own tools

Hotel content changes slowly, and most people run this weekly or monthly on an Apify Schedule to keep a content database or a room-type catalogue current. If it's the reviews you're after, run it more often with one row per review and send new rows to Slack or a Google Sheet through Apify's integrations.

Calling it from code takes one request, with your input JSON as the body:

```
POST https://api.apify.com/v2/acts/boncross~accor-hotel-details/run-sync-get-dataset-items?token=YOUR_TOKEN
```

The `apify-client` packages on NPM and PyPI wrap the same API. The records also suit retrieval systems and AI agents, which need hotel content in a structured form. Connect an MCP client to `mcp.apify.com` and the actor is available as `boncross/accor-hotel-details`.

### Limitations

- Accor publishes the 20 most recent reviews per hotel and no more. You can't get a full review history. The total review count and the category scores do cover all of them.
- Accor gives reviews no id of their own. Inside the `reviews` array `id` is null. A flattened review row gets an id built from the hotel id, the posting date, the author and its position. Review titles are almost always empty.
- You name the hotels. To find ids for a destination, run [Accor Hotel Search Scraper](https://apify.com/boncross/accor-search) first.
- Prices aren't part of this record. They come from [Accor Room Rates Scraper](https://apify.com/boncross/accor-room-rates).
- Review text is only available in the language the guest wrote it in. The language setting changes the hotel content, not the reviews.
- Car parks, nearby places, GDS codes and accessibility details are published for some hotels only. The column notes above give the share in each sample.

### FAQ

#### Where do I find an Accor hotel id?

Look at the hotel's URL. The id is the four characters after `/hotel/`, such as 0663 in all.accor.com/hotel/0663/index.en.shtml. Pasting the whole URL works as well, and Accor Hotel Search Scraper gives you ids in bulk for a city.

#### Why do I only get 20 reviews for a hotel with thousands?

Twenty is all Accor publishes, and they're the most recent ones. `totalReviews` and the category scores are based on the full set, which is why a hotel can show 2,549 reviews and return 20.

#### Can I get the hotel content in French, Japanese or Arabic?

Set "Language" to en, fr, de, es, it, pt, nl, pl, ja, ko, zh, ru, tr or ar and the description, room names and amenity labels come back in it. Reviews stay in the language each guest wrote in.

#### How do I get one row per review?

Switch on "One row per review". Each review becomes its own row with the hotel fields beside it, and `hotelRating` holds the hotel's score because `rating` on that row is the review's.

#### How many photos can I get?

Up to 200 per hotel, as URLs in the sizes Accor publishes. `totalPhotos` is how many the hotel has, `photoCount` is how many came back, and "Photos per hotel" sets that number. The default is 20.

#### Why is the nearby places or parking column empty for my hotel?

Accor doesn't publish those for every hotel. In a 12-hotel sample, 8 listed nearby places and 7 listed car parks. For a few hotels Accor's own nearby list is broken, and you get the rest of the record with `nearbyPlaces` set to null.

#### Do I need proxies or an Accor account?

You need neither. No login is involved, there's nothing to set up, and no proxy fee is added.

#### Is it legal to scrape Accor?

The actor reads only what Accor serves to any logged-out visitor. Reviews are published by the site with the author's own display name, and you should handle any personal data you collect in line with the law that applies to you. You're responsible for complying with Accor's terms and applicable law in how you use the data.

### More from BonCross

- [Agoda Search Scraper](https://apify.com/boncross/agoda-search): Agoda search results for any destination and dates.
- [Booking.com Hotel Search Scraper](https://apify.com/boncross/booking-hotel-search): Every hotel Booking.com is selling for a destination and your dates.
- [Expedia Hotel Search Scraper](https://apify.com/boncross/expedia-hotel-search): Every hotel Expedia and Hotels.com list for a destination and your dates.
- [Google Hotels Search Scraper](https://apify.com/boncross/google-hotels-search): Google Hotels prices for a whole city or map area.
- [Agoda Reviews Scraper](https://apify.com/boncross/agoda-reviews): Agoda hotel reviews, including the Booking.com reviews Agoda shows.
- [Booking.com Reviews Scraper](https://apify.com/boncross/booking-reviews): Every Booking.com guest review for any hotel.

### Your feedback

Is a field on an Accor hotel page missing from your record, or filled in wrongly? Open an issue on the actor's Issues tab in Apify Console and name the hotel id. We look at each one, and a missing field is usually quick to add.

# Changelog

This Actor's version history is a separate document: https://apify.com/boncross/accor-hotel-details/changelog.md

# Actor input Schema

## `hotels` (type: `array`):

Accor hotel ids (four characters, e.g. 0663, C185) or all.accor.com hotel URLs.

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

Accor page addresses, with the option to load them in bulk from a file, a Google Sheet or a remote list. Use this when you have more links than you want to paste. Combined with anything in the list above.

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

Stop after this many hotels have been returned. 0 means no limit.

## `includeReviews` (type: `boolean`):

Add the most recent guest reviews to every hotel record, with the rating, text, trip type and the hotel's reply.

## `reviewsLimit` (type: `integer`):

How many of the most recent reviews to return, up to 20, which is all Accor publishes per hotel.

## `flattenReviews` (type: `boolean`):

Emit one dataset row per review, each carrying the hotel fields, instead of one row per hotel with a reviews array.

## `includeRooms` (type: `boolean`):

Add every room type with size, beds, maximum occupancy, views and room amenities.

## `includeFacilities` (type: `boolean`):

Add restaurants, bars, spas, pool, fitness centre and breakfast with their descriptions.

## `includePhotos` (type: `boolean`):

Add photo URLs in every size Accor publishes.

## `photosLimit` (type: `integer`):

How many photos to return per hotel.

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

Language for the description, room names, amenity labels and reviews.

## `includeRaw` (type: `boolean`):

Add the untouched hotel object to every record, next to the mapped fields.

## `delayMs` (type: `integer`):

Optional pause before each call, in milliseconds. 0 (the default) runs as fast as the parallel limit allows. Values above 2000 are treated as 2000.

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

How many requests run at once across the whole run. The default is the fastest level measured clean; lower it only if a run reports refusals or errors.

## Actor input object example

```json
{
  "hotels": [
    "0663"
  ],
  "startUrls": [],
  "maxItems": 0,
  "includeReviews": true,
  "reviewsLimit": 20,
  "flattenReviews": false,
  "includeRooms": true,
  "includeFacilities": true,
  "includePhotos": true,
  "photosLimit": 20,
  "language": "en",
  "includeRaw": false,
  "delayMs": 0,
  "maxConcurrency": 8
}
```

# Actor output Schema

## `dataset` (type: `string`):

Accor hotel details: every row the run returned.

## `stats` (type: `string`):

Counts for the run: what was resolved, fetched, filtered and returned.

# 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 = {
    "hotels": [
        "0663"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("boncross/accor-hotel-details").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 = { "hotels": ["0663"] }

# Run the Actor and wait for it to finish
run = client.actor("boncross/accor-hotel-details").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 '{
  "hotels": [
    "0663"
  ]
}' |
apify call boncross/accor-hotel-details --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,boncross/accor-hotel-details"
        }
    }
}
```

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/J4selw9cOMhV1Ngct/builds/6uwpDuJKm3OIQd9ud/openapi.json
