Rate shopping API vs manual rate checks: what a compset feed returns, when to go live multi-OTA, and how to automate. 1,000 free credits, no scraping.

A rate shopping API is an interface that returns your competitors' live and historical hotel rates as structured data, so a revenue team never has to open an OTA and copy prices into a spreadsheet again. Veetal Connect API delivers rate shopping in two layers: a managed competitor set with daily pre-processed rate reports, and live multi-OTA lookups on demand. This article compares manual rate checks with an API-driven workflow, shows exactly what the data returns, and explains when each layer is the right call.

What manual rate checking really costs

Most revenue teams start the same way: a browser, a handful of OTA tabs, and a shared spreadsheet. It works for one property and three competitors. It stops working almost immediately after that.

  • It doesn't scale with the grid. A useful rate shop isn't one number. It's n competitors × 90+ arrival dates × occupancy × board × cancellation policy. Checking that by hand is thousands of lookups per property, per day.
  • It's stale the moment it's finished. OTA prices move during the day. A grid collected over three hours describes three different markets, and by the time it's pasted into a sheet, the decision it supports is already based on yesterday's market.
  • It's not reproducible. Two analysts checking "the same" rate get different numbers, because prices vary by device, logged-in status, loyalty tier and length of stay. Without fixed parameters there's no baseline to compare against next week.
  • It has no history. Manual checks answer "what is the price today". They can't answer "how did my compset price the same week last year", which is the question that actually drives a pricing model.
  • Scraping it yourself moves the problem. Building a scraper replaces manual work with maintenance work: layout changes break parsers, anti-bot measures throttle requests, and you end up with raw HTML that still needs normalizing before anyone can use it.

The industry has noticed. In Hotelspeak's 2024 revenue management trends survey, respondents rated the importance of automated processes in revenue management 4.5 out of 5 — up from 4.2 the previous year — and 64.3% said automation would matter more in 2024 than in 2023.

What a rate shopping API returns instead

The point of a rate shopping API isn't only speed. It's that the answer arrives with the dimensions that make it comparable. A price without its conditions is not a price you can act on.

Veetal's accommodation rate data returns, for each competitor and each date:

  • Rate and currency, per night and total for the stay.
  • Room type and occupancy — adults and children, so you compare like with like.
  • Board / meal plan — room only (alo), breakfast (ad), half board (mp), full board (pc) or all inclusive (ti).
  • Cancellation policy — flexible versus non-refundable, which is often where the real price gap hides.
  • Channel-specific offers — Booking Genius rates and mobile-only deals, flagged separately rather than silently mixed into the headline price.
  • Source OTA, so a rate is always attributable to the channel it came from.

That last set of dimensions is what separates a rate shopping API from a screenshot. "Competitor is €20 cheaper" is noise if their rate is non-refundable room-only on a mobile Genius deal and yours is flexible with breakfast.

The endpoints that do the work

Rate shopping in Veetal Connect API spans three families. A production workflow usually touches all three.

  • account_accommodation_competitors — reads the competitor set configured for one of your properties. The compset is managed on the platform, so it stays stable across imports instead of being re-typed each time.
  • feed_accommodation_rates — the daily rate report for your property and its compset, for a single rate_date or a whole month (rate_year + rate_month). Filter by ota, adults/childs, regime, cancel_policy, genius, mobile_device; use min_rates to return only the cheapest rate per competitor per date, or vs_id to compare against one specific competitor.
  • feed_accommodation_parity — the parity score for your property against its compset over a date range, with the best rate per competitor, by device (desktop or mobile).
  • realtime_hotel_parity — a live sweep of every OTA listed on Google Hotel Ads for a given stay: one rate per OTA, each with a booking link and cancellation details. Typically 4–14 seconds.
  • realtime_booking_availability — day-by-day availability on Booking.com across a range, which is how you catch a competitor's restrictions and closed dates rather than just their price.

Read the full field-level structure on the hotel competitors and hotel rates dataset pages.

Manual checks vs rate shopping API

Manual rate checksRate shopping API
CoverageA few competitors, a few datesFull compset × months of arrival dates
FreshnessHours old by the time it's compiledDaily report + live lookup on demand
DimensionsHeadline price onlyBoard, occupancy, cancellation, Genius, mobile, OTA
ReproducibilityVaries by analyst, device, sessionFixed parameters, same query every day
HistoryNone, unless someone archives sheetsStored series, readable by import_id
EffortGrows linearly with propertiesFlat — one integration covers the portfolio
OutputSpreadsheet cellsNormalized JSON, straight into your RMS or BI

Feed or Real Time: which layer to call

Both layers answer "what does the competition charge", but they cost and behave differently. Choosing correctly is most of the cost control.

Feed API (feed_*)Real Time API (realtime_*)
NaturePre-processed reports from scheduled importsLive, on-demand fetch
ScopeYour configured properties and compsetAny hotel, any covered OTA
CostCheap readsConsumes credits per call
LatencyInstant — already storedSeconds
Use it forDaily shopping, trends, history, model trainingSpot checks, audits, verification before publishing a rate

The rule of thumb: Feed for the recurring and configured, Real Time for the ad-hoc and arbitrary. Real Time responses are cacheable from 0 to 24 hours (configurable per API from the dashboard), and no_cache=true forces a fresh fetch when you genuinely need the current second.

What a request looks like

A month of compset shopping for one property, cheapest rate per competitor per date:

CODE
GET /v2/feed/accommodation/{accommodation_slug}/rate?rate_year=2026&rate_month=9&min_rates=true&adults=2&regime=ad

The response is one row per competitor per date, already normalized — no HTML parsing, no per-OTA special cases. Swap min_rates for the full set when you need every rate plan, add vs_id to isolate a single rival, or add ota to look at one channel at a time.

A working daily workflow

This is the pattern most revenue agencies end up with:

  1. Define the compset once in the Account layer, per property. It becomes the stable spine of every later query.
  2. Read the daily feed each morning — feed_accommodation_rates for the next 60–90 arrival dates, filtered to the board and occupancy that match your actual business mix. Comparing like with like — same board, same cancellation policy — is exactly what the rate shopping done like for like recipe walks through.
  3. Alert on movement, not on levels: a competitor crossing a threshold, opening or closing availability, or a sudden shift in cancellation policy across the set.
  4. Check parity with feed_accommodation_parity to see where your own rate is being undercut across channels — the hotel disparities dataset covers this in depth.
  5. Verify live before you publish. Run realtime_hotel_parity on the handful of dates you're about to reprice. Cheap where it matters, precise where it counts.

The result is a loop that runs before the team arrives, instead of a morning spent rebuilding a spreadsheet.

Two recipes cover the ends of that loop: the competitor rate grid for the daily comparison itself, and one feed, one schema, every property once you are running more than a handful of hotels.

Frequently asked questions

What is a rate shopping API? A rate shopping API is an interface that returns competitor hotel rates as structured data — price, room type, board, occupancy, cancellation policy and source OTA — for a defined competitor set and date range, so pricing decisions can be automated instead of collected by hand.

How is a rate shopping API different from a rate shopper tool? A rate shopper tool shows you a dashboard. A rate shopping API gives you the same data as JSON, so it can feed your own RMS, BI stack, pricing model or client-facing product. If you need to build on the data rather than only look at it, you need the API.

How often is rate shopping data updated? Feed data comes from scheduled imports and is available as a daily report per property and compset, with stored history you can read back by import. Real Time lookups fetch on demand, with a configurable cache of 0 to 24 hours; no_cache=true bypasses it.

Which OTAs does Veetal cover for rate shopping? Booking.com, Expedia, Google Hotels, Hotels.com and Airbnb for pricing, plus every OTA listed on Google Hotel Ads through the live parity endpoint. Reviews and reputation additionally cover TripAdvisor.

Can I compare against a specific competitor only? Yes. feed_accommodation_rates accepts vs_id to compare your property against one competitor, and min_rates to return only the lowest rate per competitor per date when you want the market floor rather than every rate plan.

Do I need to build scrapers to get competitor rates? No. That's the point of the API: the collection, normalization and maintenance happen upstream, and you consume clean JSON with timestamps and metadata. No parsers to fix when an OTA changes its layout.

Does rate shopping include availability and restrictions? Yes. realtime_booking_availability returns day-by-day availability on Booking.com over a range, so you can see when a competitor closes out or restricts stays — context that a price alone doesn't give you.

Start rate shopping with an API

You can test the whole flow before integrating anything: 1,000 free API credits, no credit card. Configure a property, add its compset, and pull a real rate report against your own market.

Try Veetal Connect API free · See pricing