Accor Room Rates Scraper avatar

Accor Room Rates Scraper

Pricing

from $2.10 / 1,000 hotel-priceds

Go to Apify Store
Accor Room Rates Scraper

Accor Room Rates Scraper

Scrape every room and rate plan an Accor hotel sells for your dates. Add hotel ids and get per-night and stay prices, taxes and fees, cancellation and prepayment policy, board, room size, beds, occupancy, member-rate discount and a day-by-day price calendar. $3.50 per 1,000 priced hotel-stays.

Pricing

from $2.10 / 1,000 hotel-priceds

Rating

0.0

(0)

Developer

BonCross API

BonCross API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Security

Limited permissions

Share

What is Accor Room Rates Scraper?

An Accor hotel doesn't have one price for a night. A five-star Sofitel sold 60 room and rate combinations for a single stay in testing, and a small ibis sold 24. Accor Room Rates Scraper returns all of them for the hotels and dates you name: each room type against each rate plan, with its price, its cancellation and payment terms, and the taxes inside or on top.

What a single lowest price can't tell you, and this can:

  • The cheapest refundable rate and the cheapest rate with breakfast, already worked out on each stay, next to the lowest price overall.
  • What each rate really costs. You get taxes and fees included and excluded as numbers, plus the destination or resort fee to the cent where Accor itemises one.
  • How the price moves over time. Ask for a price calendar and you get the cheapest rate for each day, up to 365 days from check-in. Six hotels with 60 days each took 8 to 11 seconds.
  • Room facts for each row: size in square metres and square feet, beds, occupancy, views and amenities.
  • $3.50 per 1,000 priced hotel-stays on the Free plan, $2.60 on Business, however many rates a stay has. A sold-out stay costs $0.0005.

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

  • 41 of 41 live checks on its inputs and filters passed on 7 October 2026
  • 5 hotels run the same day on 2 stays each: 10 stays, none empty
  • Charges matched the rows

What do people use it for?

  • Rate shopping: compare each room and rate plan against your own inventory
  • Revenue management: watch a competitive set daily and get only the hotels whose lowest price moved
  • Measure the loyalty member discount by hotel, room class and rate plan
  • Build a room-level product catalogue with sizes, beds and occupancy
  • Forecast demand from the day-by-day price calendar
  • Feed a travel agency or corporate travel tool that needs the full offer list, priced with your company's own codes

What data can you extract?

🏨 Hotel id and URL📅 Check-in, check-out and nights
🛏 Room name, code and classRoom size in m² and ft²
Bed types and counts👥 Maximum occupancy
💷 Price per night and stay totalPublic rate and member-rate saving
Taxes and fees, itemisedCurrency
Free cancellation flag and policy text💳 Prepaid or pay at the hotel
🍳 Board type and breakfast flagRate name, rate code and offer category
Room views and room amenities♿ Accessible room flag
Day-by-day price calendar📈 Price change since the last run
Price night by night (optional)Full cancellation, guarantee and children policies, with each tax line (optional)

How to scrape Accor room rates

  1. Sign up for Apify, which is free, and open Accor Room Rates Scraper.
  2. Add Accor hotel ids, or paste hotel URLs from all.accor.com. Don't have ids yet? Accor Hotel Search Scraper lists them for a destination.
  3. Set your dates, guests and currency. Switch on the price calendar if you want it.
  4. Press Start, then download the rates as Excel, CSV, JSON, XML or HTML when the run finishes.

⬇️ Input

You need hotels and dates. A hotel is a four-character Accor id ("0663", "C185") or an all.accor.com hotel URL. If your list is long, load it through "Start URLs" from a file, a Google Sheet or a remote list. The two inputs are combined.

For dates you have three choices. Fix them with "Check-in" and "Check-out". Let them roll with "Check-in days ahead" (default 30) and "Nights" (default 2, up to 30), which is what you want on a schedule. Or list several stays in "Several stays" and each hotel is priced for all of them.

Guests are "Adults" and "Children ages", one entry per child in years. Leave the ages empty for an adults-only stay.

Narrowing the rates. You can keep only some board types or only rates with breakfast, only some cancellation policies or only free cancellation, only accessible rooms, and only rates inside a price range per night.

Price calendar. "Price calendar days" adds the cheapest rate for each day, starting at check-in, for up to 365 days.

Full rate terms. "Include full rate terms" adds the price of each night of the stay and the cancellation, guarantee, modification and children policies as the hotel words them ("No cancellation charge applies up to 18:00 (local time) 1 day prior to arrival"), with each tax line and whether it's included. It costs nothing extra and makes each stay a little slower.

Your own rates. Add your company's client code (with its access code if you have one), a preferential code, or your ALL Accor loyalty or subscription card to see the prices Accor quotes you. All four are stored encrypted. "Public rates only" returns public rates in place of the discounted member rates, which matches what a signed-out visitor sees. "Day use" prices a daytime stay with no overnight.

Language, currency and market. "Currency" is the money prices are quoted in and "Country market" the traveller's country. "Language" (default en; also fr, de, es, it, pt, nl, pl, ja, ko, zh, ru, tr, ar) sets the language of room names, rate names and policy text.

Limits. "Maximum hotel-stays for the whole run" caps hotel-stays across all your hotels, and nothing past it is fetched or charged for. "Maximum rows for the whole run" caps rows. Both default to 0, which means no limit, and the run stops at whichever comes first.

All the rooms and rate plans for two hotels and one stay:

{
"hotels": ["0663", "C185"],
"checkIn": "2026-11-11",
"checkOut": "2026-11-13",
"adults": 2,
"currency": "EUR",
"countryMarket": "FR",
"includeHotel": true
}

One row per rate plan, refundable rates with breakfast only:

{
"hotels": ["https://all.accor.com/hotel/0663/index.en.shtml"],
"checkInDaysAhead": 30,
"nights": 2,
"adults": 2,
"currency": "GBP",
"freeCancellationOnly": true,
"breakfastOnly": true,
"flattenRates": true
}

Several stays per hotel, with a 28-day price calendar:

{
"hotels": ["0663", "B6R8"],
"stays": [
{ "checkIn": "2026-11-11", "checkOut": "2026-11-13" },
{ "checkIn": "2026-12-20", "checkOut": "2026-12-27" }
],
"adults": 2,
"currency": "USD",
"calendarDays": 28
}

A daily rate monitor that returns only hotels whose lowest price moved:

{
"hotels": ["0663", "C185", "B6R8"],
"checkInDaysAhead": 60,
"nights": 2,
"currency": "EUR",
"priceStoreName": "accor-rates",
"onlyNewOrChanged": true
}
FieldNotes
hotels, startUrlsHotel ids or hotel URLs, typed or loaded in bulk.
checkIn, checkOut, checkInDaysAhead, nights, staysFixed dates, rolling dates, or a list of stays.
adults, childrenAges, dayUseWho is staying, and whether it's a daytime stay.
mealPlans, breakfastOnlyBoard types to keep.
cancellationPolicies, freeCancellationOnlyCancellation terms to keep.
accessibleOnly, minPricePerNight, maxPricePerNightAccessible rooms only, and price bounds per night.
calendarDaysDays of price calendar, 0 to 365.
flattenRates, includeHotel, includeRateTermsWhat each row holds.
hideMemberRate, clientCode, accessCode, preferentialCode, loyaltyCardNumberPublic rates only, or your own rates.
currency, countryMarket, languageMoney, traveller's country and language.
priceStoreName, onlyNewOrChangedChange tracking for scheduled runs.
maxItems, maxRowsThe hotel-stay cap and the row cap.
includeRawOffers, delayMs, maxConcurrencyThe raw offer and tuning.

For developers

  • maxItems counts hotel-stays and maxRows counts rows. One hotel-stay is one row, or one row per room and rate plan with flattenRates. With flattenRates, the last hotel-stay is cut to fit maxRows, keeping its cheapest rates, and is charged as one hotel-stay.
  • includeRateTerms adds nightlyPrices, cancellationPolicyDetail, guaranteePolicyDetail, modificationPolicyDetail, childrenPolicyDetail, each policy in ratePolicies, and taxLines with each tax's code.
  • priceStoreName names the store that remembers each hotel-stay's lowest price. With onlyNewOrChanged, a hotel whose lowest rate hasn't moved is left out of the dataset.
  • includeRawOffers (default off) adds Accor's untouched offer object to each rate, next to the mapped fields.
  • maxConcurrency (default 8, up to 32) sets how many requests run at once. Turn it down if a run reports errors.
  • delayMs (default 0) adds a pause before each request, in milliseconds. Values above 2000 are treated as 2000.
  • A hotel or a stay listed twice is priced and charged once. If Apify restarts a run, it picks up where it stopped without repeating or re-billing a stay.

⬆️ Output

By default one row is one hotel for one stay, and its rates array holds each room and rate plan. If you'd find a flat table easier, switch on "One row per rate plan".

{
"id": "0663-2026-11-11-2026-11-13", "hotelId": "0663", "url": "https://all.accor.com/hotel/0663/index.en.shtml",
"hotelName": "Sofitel Le Scribe Paris Opéra", "brandName": "Sofitel", "stars": 5,
"hotelRating": 4.8, "hotelRatingScale": 5, "hotelReviewCount": 2549,
"city": "PARIS", "countryCode": "FR", "lat": 48.870426, "lng": 2.329937,
"checkIn": "2026-11-11", "checkOut": "2026-11-13", "nights": 2, "adults": 2,
"isAvailable": true, "availabilityStatus": "AVAILABLE",
"currency": "GBP", "offerCount": 60, "roomCount": 15,
"lowestPerNight": 479.06, "lowestTotal": 958.12, "pricesIncludeTax": true,
"lowestRoom": "SUPERIOR ROOM, 1 Queen Size Bed, Courtyard View", "lowestRate": "SAVER RATE",
"lowestRefundableTotal": 1121.45, "lowestBreakfastTotal": 1085.52,
"memberRateDiscountPercent": 5,
"rates": [
{
"roomCode": "QEB", "roomName": "SUPERIOR ROOM, 1 Queen Size Bed, Courtyard View",
"roomClass": "SUPERIOR", "roomType": "ROOM", "roomSizeSqm": 20, "roomSizeSqft": 215,
"maxOccupancy": 2, "isAccessible": false,
"beds": [{ "code": "QUEEN_SIZE_BED", "count": 1, "label": "Queen size bed(s)" }],
"roomViews": ["Courtyard View"],
"currency": "GBP", "pricePerNight": 479.06, "priceTotal": 958.12, "priceTotalText": "£958.12",
"priceListedPerNight": 503.22, "priceListedTotal": 1006.43,
"memberPerNight": 479.06, "memberTotal": 958.12,
"pricesIncludeTax": true, "taxText": "Taxes and fees included.",
"taxesIncludedText": "Taxes included : £123.67",
"taxesAndChargesIncluded": 123.67, "taxesAndChargesExcluded": 0,
"discountPercent": 5, "discountType": "MEMBER_RATE", "isMemberRate": true,
"isFreeCancellation": false, "isPrepaid": true, "isPayAtHotel": false,
"cancellationPolicy": "NO_CANCELLATION", "cancellationPolicyText": "Non-refundable",
"guaranteePolicy": "PREPAID", "guaranteePolicyText": "Online payment",
"mealPlan": "EUROPEAN_PLAN", "isBreakfastIncluded": false,
"rateCode": "1RA4-DR", "rateName": "SAVER RATE", "offerCategories": ["MEMBER_RATE"]
}
],
"calendar": [
{ "date": "2026-11-11", "isAvailable": true, "pricePerNight": 479.06, "priceText": "£959", "currency": "GBP", "pricesIncludeTax": true },
{ "date": "2026-11-12", "isAvailable": true, "pricePerNight": 472.53, "priceText": "£946", "currency": "GBP", "pricesIncludeTax": true }
],
"scrapedAt": "2026-09-12T00:25:03.025Z"
}

Also on every row

FieldWhat it is
pricesIncludeTax · taxesAndChargesIncluded · taxesAndChargesExcludedWhether the price already includes every tax and fee, the taxes and fees inside it, and those charged on top. On each rate, on the stay row (for its cheapest rate) and on each calendar day. Accor quotes a US countryMarket before tax, so there pricesIncludeTax is false and taxesAndChargesExcluded holds the amount on top; most other markets are quoted with taxes included. Null where Accor says nothing. taxText, taxesIncludedText and taxesExcludedText are kept beside them, unchanged, for compatibility.
feesIncluded · feesIncludedText · feesIncludedBreakdownOn each rate: the destination, urban or resort fee Accor itemises for the stay, such as New York's Urban Experience Fee or a Las Vegas resort fee. The amount for the whole stay in currency, already part of priceTotal, with Accor's label and the named per-night lines. Filled in every market tested (US and GB give the same figure); null on hotels that charge no such fee. Exact to the cent ("Fees included : $91.80" gives 91.8), where the Accor Hotel Search Scraper rounds the same fee to the whole unit ($92). Null where Accor says nothing, never 0.
isDayUseWhether this is a day-use stay rather than an overnight one.
childrenAgesThe ages you asked for, echoed back, so a row says who it was priced for. Empty when you asked for none.
availabilityReasonsWhy a stay is unavailable, when it is. Empty on an available one.
previousLowestPerNight · previousScrapedAt · priceChange · priceChangePctFilled only when you set Price memory store and re-run: the last price seen, when, and the move since. Null on a first run.
specialRatescompany, preferential or loyalty when your own codes or card priced the run, null otherwise.
inputExactly what you passed in, so a row can be traced back to its input.
hotelName · brandName · stars · hotelRating · hotelRatingScale · hotelReviewCount · city · countryCode · lat · lng · checkInFrom · checkOutUntilAdded by Include hotel details. They come from one extra request per hotel, so on the rare run where that request fails they are missing from that hotel's rows while its rates are unaffected.

Also on each rate

These sit on every entry of rates, and at the top level of the row when flattenRates is on.

FieldWhat it is
roomDescription · roomClassText · roomTypeText · bedsTextAccor's description of the room, the readable labels for roomClass and roomType, and the bed labels joined into one line. Null where Accor gives none.
roomAmenities · roomFeaturesThe room's headline amenities and key features as Accor labels them. Empty when it lists none.
priceAggregation · priceAggregationTextWhether Accor quoted the price per night or for the whole stay (for example TOTAL_STAY), with its label. pricePerNight and priceTotal are filled either way.
taxesIncludedBreakdown · taxesExcludedBreakdownThe itemised lines behind taxesIncludedText and taxesExcludedText, as Accor lists them. Null where Accor gives none.
feesExcludedText · feesExcludedBreakdownFees charged on top of priceTotal, with Accor's label and itemised lines. Null when there are none.
discountTextThe saving as Accor formats it, beside discountPercent and discountType. Null on undiscounted rates.
mealPlanTextThe readable label for mealPlan.
rateId · rateDescriptionAccor's own id for the rate plan and its description. rateCode is the short code shown on the site.
offerId · offerType · offerCategoryTextAccor's id and type for this room-and-rate offer, and its category tags joined into one line (offerCategories holds the codes).
roomsLeftTextAlways null at present; the count is in roomsLeft.
loyaltyPointsThe ALL loyalty points figure Accor shows for this rate, or null when it shows none.
supplementsAdded by includeRateTerms: each extra charge Accor attaches to the rate, with its code, type, amount, amountText and label. Null without the option or when the terms did not come back.

How many rates per hotel, and how long does a run take?

RunResult
Five hotels, one 2-night stay each, EUR, with hotel details118 rate plans across 5 hotel-stays in 11 seconds
Six hotels × three 2-night stays, GBP, with hotel details and a 14-day calendar18 hotel-stays, 404 rate plans and 252 calendar days in 5 to 8 seconds
The same 18 hotel-stays with a 60-day calendar each1,080 calendar days in 8 to 11 seconds
40 hotels × 3 stays120 hotel-stays, 1,855 rate plans, in about 10 seconds

The last three were measured on 1 and 2 October 2026. Hotels, stays and calendar days are read at the same time, and a long calendar adds little. A long run keeps a steady pace of about 400 hotel-stays a minute, which puts roughly 20,000 hotel-stays inside the default one-hour run limit. A long price calendar on each one lowers that.

The size of a grid is the hotel's doing. A large luxury hotel returned 60 rate plans across 15 room types, and a small ibis 24 across 6.

How much does it cost to scrape Accor room rates?

EventFree planStarterScaleBusiness
actor-start, per run$0.002$0.002$0.002$0.002
hotel-checked, per hotel and stay Accor answered, whatever the answer$0.0005$0.0005$0.0005$0.0005
hotel-priced, per hotel-stay that comes back with at least one rate$0.003$0.0027$0.0024$0.0021
calendar-day, per calendar day delivered$0.0005$0.00045$0.0004$0.00035

Enterprise plans pay the Business price.

$3.50 per 1,000 priced hotel-stays on the Free plan, $2.60 on Business. You pay per stay, not per rate: 24 rates or 60, the stay costs the same $0.0035. Platform usage is included and there's no proxy charge on top.

What a stay costs when it has nothing to sell:

  • Sold out, or no rate left after your filters. You still get a row for the stay, with an empty rates list, and you pay the $0.0005 check fee alone.
  • Unchanged, in a change-only run. The hotel is left out of the dataset and you pay the check fee alone.
  • No answer from Accor. You get an error row that says why, and you pay nothing for it.

The calendar is charged only when you ask for it, and only for days delivered.

  • Ten hotels for one stay: $0.002 + 10 × ($0.0005 + $0.003) = $0.037 a run ($0.028 on Business).
  • A daily monitor of 20 hotels for a month: 30 × ($0.002 + 20 × $0.0035) = $2.16 for the month ($1.62 on Business).
  • Ten hotels with a 30-day calendar each: $0.002 + 10 × $0.0035 + 300 × $0.0005 = $0.187 a run ($0.133 on Business).

On the Free plan, Apify's $5 of monthly credits pays for about 135 runs the size of the first example: around 1,350 hotel-stays with their full rate grids.

Limitations

  • You name the hotels. To find hotel ids for a destination, run Accor Hotel Search Scraper first.
  • Accor shows rooms left only on some rates, usually when few remain. Across 290 rates measured on 4 October 2026, roomsLeft was filled on 136 and null on the rest.
  • The price calendar gives the cheapest rate per date, not the full grid for each date.
  • Packages and non-room products aren't returned. The grid is rooms and their rate plans.
  • Without codes, prices are what a signed-out visitor sees, including the standard member rate. Company and preferential rates need your own codes, and loyalty status rates need your card number.
  • Accor doesn't check preferential codes. An unrecognised one returns the ordinary rates, and the run log warns you when no code-specific rate came back.
  • Day-use stays are accepted, but most hotels offer none and the grid is often empty.
  • A stay can be 30 nights at most, the longest a single booking covers.

FAQ

Where do I find a hotel id?

It's the four characters in the hotel's URL: 0663 in all.accor.com/hotel/0663/index.en.shtml. You can paste the whole URL too, or get ids in bulk from Accor Hotel Search Scraper.

How do I find the cheapest refundable rate without sorting 60 rows?

It's already on the stay row. lowestRefundableTotal is the cheapest rate with free cancellation and lowestBreakfastTotal the cheapest with breakfast, beside lowestTotal, lowestRoom and lowestRate. If you only ever want refundable rates, switch on "Free cancellation only" and the others are dropped.

Are taxes included in the prices?

That depends on the country market you choose. Accor quotes a US market before tax, and the other markets tested (GB, FR) with taxes and fees included, whatever the hotel's country or your language. pricesIncludeTax says which way each rate is quoted. taxesAndChargesIncluded and taxesAndChargesExcluded give the amounts as numbers, and taxText, taxesIncludedText and taxesExcludedText keep Accor's own wording.

What do I get for a sold-out hotel?

A row for that hotel and stay with isAvailable false and an empty rates list. Where Accor gives a reason, it's in availabilityReasons. The row costs the $0.0005 check fee. A rate monitor usually wants that row, because "sold out" is an answer.

Can I price my company rate or my loyalty rate?

Add your company client code and access code, a preferential code, or your ALL Accor loyalty or subscription card number, and each room and rate plan is priced as Accor quotes it for you. The codes are stored encrypted and never appear in the results or the log. If Accor rejects a company code or a card, the run stops with Accor's own message. It won't quietly show you public prices.

Which of the prices is the member rate?

pricePerNight is the rate a visitor is shown, which is usually the member rate. memberPerNight and memberTotal are the member rate whether or not it was the one shown. priceListedPerNight is the crossed-out public rate, filled only when it's dearer than the shown rate, and discountPercent is the saving. "Public rates only" removes the member discount from the picture.

Do I need proxies or an Accor account?

No account, no login and nothing to configure. Proxy usage is never charged.

The actor reads only what Accor serves to any logged-out visitor, and hotel prices are public commercial data, not personal data. You're responsible for complying with Accor's terms and applicable law in how you use the data.

Run it on a schedule, or from code

For rate monitoring we'd set up an Apify Schedule with rolling dates, a "Price memory store" and "Only new or changed prices". Each morning you then get only the hotels whose lowest rate moved, and a webhook or the Google Sheets and Slack integrations can carry them into your own tools.

To call it from code:

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

That returns the rates in one call for short runs, and the apify-client packages for Node.js and Python handle longer ones. AI agents reach it through the Apify MCP server at mcp.apify.com, as boncross/accor-room-rates, which is enough to ask "what's the cheapest refundable room at this hotel next weekend?" and get a real answer.

More from BonCross

Your feedback

If a rate on Accor's booking page isn't in your results, or a tax figure looks off, tell us on the Issues tab in Apify Console and include the hotel id and dates. BonCross replies to each report, and requests for new columns are welcome there too.