# Rate-code matching across official sites and OTAs

> Compare a non-refundable rate with a non-refundable rate and a member price with a member price. Every plan comes back with a normalised category, the brand's own rate code where it has one, and whether it is refundable.

Canonical page: https://scrapercompany.com/use-cases/rate-code-matching. Built for: Revenue management systems, Rate shoppers, Parity tools, Hotel BI teams.

## The problem

The cheapest number on a rate-shopping screen is often a different product: a non-refundable advance-purchase rate against a flexible one, a member price against the public rate, or an AAA rate most guests cannot book. Compare them blindly and the parity alerts and price recommendations built on top are wrong.

Every site names its plans differently, and chains add their own codes. Matching them by hand does not scale past a few hotels, so the category has to arrive with the rate, decided the same way for every channel.

## How it works

1. **Resolve the property once.** Turn the hotel name into its Google property token and its OTA ids, and store them with the hotel record. Endpoint: [`POST /v1/search`](https://scrapercompany.com/docs/reference/search), 2 credits.
2. **Read the official site, qualified rates included.** Pass the hotel's website. The API detects which of 44 booking engines it runs. Ask for qualified_rates (aaa, senior, government) where the engine offers them. Endpoint: [`POST /v1/official`](https://scrapercompany.com/docs/reference/official), 4 credits.
3. **Read the OTA rooms and plans.** Booking.com and Expedia return each room with its rate plans, cancellation terms and the site’s own plan code. Endpoint: [`POST /v1/ota/booking/rooms`](https://scrapercompany.com/docs/reference/booking-rooms), 12 credits.
4. **Compare within a category.** Group plans by rate_category, then compare the cheapest offer in each group across channels. Member and qualified rates never count as the public price.

## What you get back

- **rate_category**: a normalised category on every plan: bar, rack, advance_purchase, member, points, package, promo, qualified or unknown
- **rate_category_source**: how the category was decided: the brand’s own flag or the plan’s name
- **rate_code**: the brand’s or the site’s own code for the plan, where it shows one
- **Refundability and meals**: refundable and meal_plan where the brand states them

## Worked example (illustrative)

A revenue tool matches rates for 20 hotels over the next 7 nights every morning.

- Official-site rates, 20 hotels × 7 nights: 140 calls a day × 4 credits = 560 credits a day
- Booking.com rooms and plans, 20 hotels × 7 nights: 140 calls a day × 12 credits = 1,680 credits a day
- About 67,200 credits a month (30 days)

Pricing: free trial of 50 calls or 14 days, whichever ends first, no card needed; Starter $49/month for 40,000 credits; Growth $149/month for 150,000 credits; Scale $399/month for 500,000 credits; Business $999/month for 1,500,000 credits; credit packs $15 for 7,500, $60 for 35,000, $200 for 125,000 (valid 12 months). Failed requests (4xx or 5xx) and empty results cost 0 credits. https://scrapercompany.com/pricing

## FAQ

### Which plans carry a rate code?

Chain official sites return the brand's own rate_code; OTA plans carry the site's plan code where it shows one. Every plan gets a rate_category, and rate_category_source says whether it came from the brand's flag or the plan's name.

### What are qualified rates?

Eligibility-restricted rates (AAA, senior, government) that hotel engines such as Hilton, Marriott and Radisson offer. Ask for them with qualified_rates; they come back with rate_category "qualified" and never count as the public price.

### Are member prices counted as the cheapest rate?

No. Member and loyalty prices are labelled and kept out of cheapest_rate, so the headline price stays comparable with what a signed-out guest sees on an OTA.

### What if a plan cannot be classified?

It comes back as rate_category "unknown", so you can leave it out of comparisons instead of guessing.

## Read next

- [Guide: get a hotel's official-site rates](https://scrapercompany.com/docs/guides/official-site-rates)
- [How rates are matched](https://scrapercompany.com/features)
- [Hotel direct rates API](https://scrapercompany.com/hotel-direct-rates-api)
- [Booking.com API](https://scrapercompany.com/booking-com-api)
