Agoda Hotel Scraper — Prices, Reviews & Amenities avatar

Agoda Hotel Scraper — Prices, Reviews & Amenities

Pricing

from $5.00 / 1,000 hotels

Go to Apify Store
Agoda Hotel Scraper — Prices, Reviews & Amenities

Agoda Hotel Scraper — Prices, Reviews & Amenities

Scrape **Agoda** hotel property pages to extract **hotel name, star rating, review score, room types, amenities, coordinates, and images**. Input: property URLs or hotel IDs. Uses Agoda's internal **Cronos JSON API** — structural, no CSS classes, robust to HTML changes.

Pricing

from $5.00 / 1,000 hotels

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

3 days ago

Last modified

Categories

Share

Agoda Hotel Scraper — Rooms, Reviews & Amenities | from $2/1K | No Login

For travel tech teams, hotel chains, OTA intelligence platforms, and hospitality researchers that need deep Agoda property data — rooms, amenities, sub-scores — without managing browser infrastructure.

$2.00 per 1,000 hotels. Guest review comments (optional) add $0.50/1,000 reviews. No Cloudflare, no login, no proxy required for standard volumes — Agoda's internal Cronos API has no anti-bot.

Pricing example: 50 hotels = $0.10. 500 hotels = $1.00. 500 hotels + 10 reviews each (5,000 reviews) = $1.00 + $2.50 = $3.50 total.

Standout feature: 6-sub-score category_scores — cleanliness, facilities, location, roomComfort, service, valueForMoney. Most competitors return only the overall rating.

ScraperPrice / 1kScore distribution?Per-room bed/size/view?parse_confidence?
This actor$2 hotel + $0.50 reviewsYesYesYes
huggable_quote/fast-agoda-hotel-scraperfrom $3.50NoNoNo
knagymate/fast-agoda-scraper$5.00NoNoNo (search-page, Cloudflare-exposed)

Scrape Agoda hotel data at the field-completeness level competitors charge double for — and with a reliability guarantee none of them publish. Extract hotel name, star rating, guest review score, per-category sub-scores, room types with bed/size/view, full amenity lists, nearby attractions, coordinates, and every photo URL for any Agoda property. Search by hotel name, paste property URLs, or feed hotel IDs — your choice. Pay per hotel result.

Built on Agoda's internal Cronos JSON API — the same structured endpoint Agoda's own website calls. No fragile CSS-class scraping, no HTML parsing for data fields. Every record carries a parse_confidence score so you know instantly if anything drifted.


Why This Agoda Scraper Wins

Most Agoda scrapers parse the rendered HTML or scrape the Cloudflare-protected search page — both break the moment Agoda reskins or tightens anti-bot. This actor takes a different path:

  1. It resolves your input to a numeric hotel ID (from a name search, a URL, or directly).
  2. It calls Agoda's Cronos BelowFold JSON API — one GET request returning the entire hotel record as structured JSON.
  3. It maps that JSON with a dual-path parser: a primary path on the known keys, and a structural fallback that finds fields by shape (not by fixed location) if Agoda re-nests its payload.
EndpointAnti-botStatus
Property page HTMLNone detected200 OK confirmed
BelowFold JSON APINone detected200 OK confirmed
Suggest (name search) APINone detected200 OK confirmed
Review comments APINone detected200 OK confirmed
Search results pageCloudflareNot used (we don't need it)

If Agoda ever changes its JSON shape, you don't get silent empty rows — you get a record with a lowered parse_confidence and machine-readable warnings telling you exactly which field fell back. That is the difference between a scraper you can trust in production and one you have to babysit.


Why this beats the alternatives

The Agoda field on the Apify Store splits into two kinds of scraper, and this actor beats both:

  • Search-page scrapers like knagymate/fast-agoda-scraper ($5/1k) scrape the one Agoda surface that is Cloudflare-protected, and return a thin record (name, price, rating, location) — no rooms, no amenities, no score distribution, no confidence. When Agoda tightens anti-bot, they stop. We never touch that page: we go straight to the Cronos BelowFold JSON API (no anti-bot, confirmed 200 OK), and rotate IP + retry on the rare block.
  • Detail scrapers like huggable_quote/fast-agoda-hotel-scraper (from $3.50/1k, "22+ fields") are the strong incumbent — they do return per-category reviewCategoryScores and nearby placesOfInterest (so we don't pretend to uniquely own those). But their docs confirm no score distribution, no per-room breakdown, no parse-confidence.
CapabilityThis actorhuggable_quote detail scraperknagymate search scraper
Avoids Cloudflare search pageYes (Cronos JSON API)Yes (detail API)No (scrapes search page)
Per-category sub-scoresYes (6)Yes (5)No
score_distribution (counts per band)YesNoNo
Per-room bed / size / viewYesNoNo
amenity_groups (grouped)YesFlat listNo
nearby_essentials w/ distance_kmYesAttractions onlyNo
parse_confidence + drift warningsYesNoNo
Base price / 1k$2from $3.50$5

The one-sentence edge: the Agoda scraper that skips the Cloudflare search page entirely, adds the score distribution and per-room (bed/size/view) breakdown the best competitor omits, and tells you — via parse_confidence — the moment Agoda's JSON drifts, at $2/1k (vs $3.50–$5). Full breakdown in ./COMPETITIVE_EDGE.md.


Three Ways to Input

Option A — search by hotel name (no URL hunting)

{ "searchTerms": ["The Peninsula Bangkok", "Marina Bay Sands"] }

Each term is resolved through Agoda's suggest API to the matching hotel ID, then scraped. Best with a specific hotel name; broad city names return only the few top properties Agoda surfaces.

Option B — property URLs

{
"propertyUrls": [
"https://www.agoda.com/the-peninsula-bangkok/hotel/bangkok-th.html"
]
}

Option C — hotel IDs

{ "hotelIds": [10715, 197181] }

Mix and match all three in one run. Add "includeReviews": true and "reviewsPerHotel": 20 to pull guest comments.


Output Schema — Per Hotel

FieldTypeDescription
hotel_idintegerAgoda internal hotel ID
hotel_namestringHotel name
former_namestringPrevious name, if any
accommodation_typestring"Hotel", "Apartment", "Villa", etc.
addressstringFull address
city / country / area_namestringLocation parts
postal_codestringPostal/ZIP code
location_highlightstringe.g. "800 meters from city center"
star_ratingfloatOfficial star rating (1–5)
review_scorefloatAgoda guest score (0–10)
review_countintegerNumber of verified reviews
review_textstringScore label ("Exceptional", "Superb")
category_scoresobjectPer-category 0–10: cleanliness, facilities, location, roomComfort, service, valueForMoney
score_distributionobjectReview counts per band (9+, 8–9, …)
awardsstringAwards & accolades, if listed
price / currencyfloat / stringDateless baseline price (null if Agoda returns none)
room_typesarrayRoom type names
roomsarrayRich per-room objects: name, bed, size, view, features, image_count, thumbnail
amenitiesarrayFlat, de-duplicated amenity list
amenity_groupsobjectAmenities grouped by category
highlightsarrayNotable highlights
nearby_attractionsarrayAttractions with distance text
nearby_essentialsarrayAirports/transport with distance_km
check_in_time / check_out_timestringWhen available
descriptionstringFull property overview
image_urlstringHero image (CDN)
image_countintegerTotal photos available
all_imagesarrayEvery photo URL
lat / lngfloatCoordinates
property_urlstringAgoda property page URL
parse_confidencefloat0.0–1.0 structural parse-quality score
warningsarrayMachine-readable drift signals
scraped_atstringISO-8601 UTC timestamp
reviewsarrayGuest comments (when includeReviews=true)

Review record fields (when includeReviews=true)

review_id, rating, title, comment, positives, negatives, check_in_month, review_date, reviewer_type, reviewer_country, room_type, stay_length.


Use Cases

Competitive hotel benchmarking

Compare star rating, overall score, and per-category sub-scores (cleanliness vs service vs value) across rival properties in one city. The category_scores field surfaces exactly where a competitor wins or loses — data most scrapers omit entirely.

Travel app & map enrichment

Hydrate hotel listings with amenities, room configurations, nearby_attractions, nearby_essentials (airport distance in km), lat/lng, and the full all_images gallery.

Reputation & sentiment monitoring

Track review_score, review_count, and score_distribution over time, and pull includeReviews=true to feed comment/positives/negatives into sentiment or theme-extraction pipelines.

Hospitality market research

Build datasets by city, country, or accommodation type. Filter on star rating, score, amenities, or room attributes (bed type, room size, view).


Notes on Pricing Data

Agoda's BelowFold endpoint is dateless — it returns hotel metadata without a check-in window. The price field is null unless Agoda surfaces a dateless promotional price. The actor is honest about this: it never invents a 0. For date-specific room rates, supply dates via the roadmap pricing option.


Proxy

Defaults to Apify Residential proxy (useApifyProxy: true, groups ["RESIDENTIAL"]) — recommended for production scale. The JSON API works from datacenter IPs in testing, but residential ensures reliability at volume. On a block, the actor rotates to a fresh exit IP and retries with backoff automatically. Proxy usage is billed to the run owner.


Pricing

Pay per hotel result successfully scraped (hotel-result event, $2.00/1k). Guest review comments (review-item event, $0.50/1k) are charged separately when includeReviews=true — you only pay for reviews you actually pull. Failed or blocked fetches are never charged.


FAQ

Does this work outside Asia? Yes. Agoda lists hotels globally; the API returns data for any indexed property.

How do I find a property URL? Open any hotel on agoda.com and copy the browser URL — or just use searchTerms with the hotel name.

Is pricing real-time? The price field reflects Agoda's dateless response. Date-specific rates require the pricing endpoint (roadmap).

What is parse_confidence? A 0.0–1.0 score per record. 1.0 means every expected field resolved on the primary path. A lower score with warnings means Agoda's structure drifted and a fallback path was used — your early-warning signal.


parse_confidence trust score

Every record carries a parse_confidence score (0.0–1.0) and a warnings list. The Cronos API dual-path parser flags drift loudly instead of returning silent empty rows.

Use with AI agents (MCP)

This actor is available as an MCP tool for Claude, GPT-4o, or any MCP-compatible agent.

Config: https://mcp.apify.com/?tools=bovi/agoda-scraper

Not affiliated with Agoda. Data is retrieved from publicly accessible Agoda property pages and internal APIs.

Integrations

Built for travel-tech teams and OTA intelligence platforms benchmarking hotel rates, amenities, and per-category guest scores — the JSON/dataset output drops into the tools you already run, no glue code:

  • n8n / Make / Zapier — trigger a run or pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your database) with no code: n8n, Make, Zapier.
  • Webhooks — fire your own endpoint the moment a run finishes, to push results straight into your pipeline (docs).
  • MCP server — expose this actor as a tool to Claude, Cursor, or any MCP client so an AI agent can pull this data mid-conversation (guide).
  • API & SDKs — fetch the dataset as JSON, CSV, or Excel through the Apify REST API or the Python / JS SDKs.

See all Apify integrations.