Agoda Hotel Scraper API π°$1/1k β Listings & Prices
Pricing
from $1.00 / 1,000 results
Agoda Hotel Scraper API π°$1/1k β Listings & Prices
Agoda Hotel Scraper API β search hotels & accommodations by destination + dates. Per hotel: name, star rating, review score & count, nightly price, area, city, coordinates, type, image & URL. Any city, currency & locale. Pure HTTP, no browser. $1/1k flat, JSON or CSV out.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
17
Total users
16
Monthly active users
10 hours ago
Last modified
Categories
Share
Agoda Hotel Scraper API β Listings, Prices, Ratings & Reviews
How It Works

- Your input β either a destination (city name) + dates, or one or more Agoda hotel-page URLs to scrape those exact hotels. Plus rooms, guests, currency, locale, and optionally how many guest reviews to pull per hotel.
- Search API β for a destination, the Actor resolves it to Agoda's internal
cityIdand calls Agoda'scitySearchAPI page by page; for a hotel URL it resolves the link to itspropertyIdand fetches that one hotel. Either way it decodes the full result β listings, ratings and live prices β over pure HTTP, no browser. WithmaxReviewsset, it also paginates Agoda's review API for individual guest reviews. - Your dataset β flat rows or nested JSON: hotel name, star rating, review score & count, nightly price, total price, area, city, country, coordinates, type, image, a dated deep-link URL, and (optionally) an array of guest reviews β CSV-ready or JSON.
Scrape hotels, prices, ratings and reviews from Agoda β by destination + dates, or by hotel URL β at $1 per 1,000 results. Each hotel carries its name, star rating, guest review score and count, live nightly and total price in your chosen currency, area/city/country, latitude & longitude, accommodation type, a photo, and a deep-link URL that lands on the priced page for your exact dates. Paste a hotel link to scrape that exact property, and set maxReviews to pull individual guest reviews (text, rating, traveler type, room type, the hotel's reply). Pure HTTP β no browser, no CAPTCHA solver. Output is CSV-ready flat rows or nested JSON, straight into your Apify dataset.
Why Use This Scraper?
- $1 / 1,000 results β flat, simple pricing, and the cheapest Agoda listings scraper on the Store. No opaque per-page math.
- Listings, prices and reviews β many Agoda scrapers do one or the other. This one returns search results with live nightly + total prices and optional individual guest reviews, for your dates and occupancy.
- Two ways to target β search a whole city by destination + dates, or paste specific Agoda hotel URLs to scrape exactly those properties (each link resolved to its
propertyIdautomatically). - Guest reviews on demand β set
maxReviewsto pull individual reviews per hotel: review text, title, rating, traveler type, room type, length of stay, reviewer country, the hotel's response, and any review photos β sorted by most recent, rating, or most-helpful. - No browser, no CAPTCHA solver β pure HTTP against Agoda's own search API. Small responses, low bandwidth.
- Rich per-hotel data β star rating, guest review score + count, amenities, full photo gallery, nearest landmark & transport with distances, room size, area/city/country, latitude/longitude, vibe tags, and sample guest-review snippets.
- Discounts β
discount-percentand the crossed-outprice-originalwhenever Agoda is running a deal, plus afree-cancellationflag. - Built-in filters β narrow by star rating, price min/max, review score min/max, and property type β the Actor paginates further so strict filters still fill up.
- Optional deep detail β flip on
includeDetailsto add per-category review sub-scores (cleanliness, location, staff, valueβ¦) with city averages, score distribution, a 30-day review trend, the hotel description, and AI review highlights (one extra call per hotel). - Dated deep links β every row's
urlcarries your check-in, nights and occupancy, so it opens the hotel on the priced page β ready for click-through. - Sold-out aware β unavailable hotels are flagged
sold-out: trueand still carry an indicative price, so nothing silently drops out. - Global β any city, any
currency, anymarket(locale). - Spreadsheet or JSON β flat dashed columns (
price-per-night,review-scoreβ¦) for Excel/Sheets, or nested objects for pipelines.
Overview
This Actor harvests structured hotel results from Agoda over pure HTTP, two ways: by destination (it resolves the city to Agoda's cityId, posts the citySearch API, and paginates the full sorted result set) or by hotel URL (it resolves each link to its propertyId and fetches that exact property). Either way it parses each property's content, ratings and pricing β and, when maxReviews is set, paginates Agoda's review API for individual guest reviews.
Output is one row per hotel. Each row carries identity (name, type, star rating), reputation (review score + count), pricing (per-night + total, in your currency), location (area/city/country + coordinates), a photo, a dated booking deep-link, and β when requested β a nested array of guest reviews.
Supported Inputs
| Input | What it does |
|---|---|
| Destination | location β a city or destination name, e.g. Bangkok, London, New York. Resolved to Agoda's cityId automatically. |
| Hotel URLs | startUrls β one or more Agoda hotel-page links (e.g. https://www.agoda.com/<hotel>/hotel/<city>-<cc>.html) to scrape those exact hotels. When set, the destination search is skipped. Each URL is resolved to its propertyId automatically. |
| Dates | checkIn (YYYY-MM-DD) plus nights, or a checkOut date (nights is derived from it). |
| Occupancy | rooms, adults, children, and optional childAges. |
| Reviews (optional) | maxReviews β individual guest reviews to pull per hotel (text, rating, traveler type, room type, hotel reply, photos); reviewsSort orders them. 0 = off. |
| Sort | sortField: Ranking (default) Β· Price Β· Recommended Β· Review Β· Distance. |
| Filters | starRatings, priceMin / priceMax, minReviewScore / maxReviewScore, propertyTypes. All optional; the Actor paginates further when a page is filtered out, so strict filters still fill up to maxItems. |
| Detail (optional) | includeDetails β per-hotel review sub-scores (with city averages), score distribution, 30-day trend, description & AI review highlights. |
| Currency & locale | currency (ISO 4217, e.g. USD, THB) and market (locale, e.g. en-gb). |
| Volume | maxItems β how many hotels to return; the Actor paginates until it reaches it. |
Not supported: flights or car hire, live booking/checkout, room-level rate-plan breakdowns. This Actor returns hotel search listings + headline prices (plus guest reviews on request).
Use Cases
| Audience | What they do with it |
|---|---|
| Travel aggregators / OTAs | Power a hotel-comparison page across many cities and dates. |
| Revenue / pricing teams | Benchmark competitor hotel prices and rating bands over time. |
| Hotels & hostels | Track how rivals in the same area are priced and reviewed. |
| Rate-shopping products | Snapshot nightly prices per city + date daily and alert on moves. |
| Reputation & CX teams | Pull individual guest reviews (text, rating, traveler type, room type, hotel replies) for specific hotels by URL to mine sentiment and service gaps. |
| Data & ML pipelines | Ingest hotel price + review data to model demand and seasonality. |
| Researchers | Build open hotel price/quality datasets for a destination. |
Input Configuration
| Field | Type | Required | Notes |
|---|---|---|---|
startUrls | array | β | Agoda hotel-page URLs to scrape exactly those hotels. When set, location is ignored. Each link is resolved to its propertyId automatically. |
location | string | β | City / destination name, e.g. Bangkok. Defaults to London. Used only when startUrls is empty. |
checkIn | string | β | YYYY-MM-DD. Defaults to ~30 days out if empty. |
checkOut | string | β | Optional. If set, nights is derived from it. |
nights | integer | β | Length of stay (ignored when checkOut is given). Default 1. |
rooms | integer | β | Default 1. |
adults | integer | β | Default 2. |
children | integer | β | Default 0. |
childAges | array | β | Ages of children, e.g. [5, 9] β only used when children > 0. |
sortField | enum | β | Ranking Β· Price Β· Recommended Β· Review Β· Distance. Default Ranking. |
currency | string | β | ISO 4217, e.g. USD, EUR, THB. Default USD. |
market | string | β | Locale, e.g. en-gb, en-us, de-de. Default en-gb. |
maxItems | integer | β | Max hotels to return. Default 100. |
maxReviews | integer | β | Individual guest reviews to scrape per hotel (text, rating, traveler/room type, hotel reply, photos). 0 = off (default). Paginates extra requests per hotel, so large values Γ many hotels run slower. |
reviewsSort | enum | β | Order reviews are scraped in: Most recent (default) Β· Highest rated Β· Lowest rated Β· Most helpful. Only used when maxReviews > 0. |
includeDetails | boolean | β | Add per-hotel detail: review sub-scores (with city averages), score distribution, 30-day trend, description, AI highlights. One extra request per hotel. Default false. |
starRatings | array | β | Keep only these star ratings, e.g. ["4","5"]. Half-stars floor to their tier (a 4.5β
is a 4-star match). Empty = any. |
priceMin / priceMax | integer | β | Nightly-price band in the selected currency. Empty = no bound. |
minReviewScore / maxReviewScore | number | β | Guest review-score band (Agoda 0β10). Empty = no bound. |
propertyTypes | array | β | Keep only these types, e.g. ["hotel","resort"] (matched against each hotel's type). Empty = all. |
proxy | object | β | Residential proxy, on by default (recommended for reliable, geo-consistent pricing). |
Everything is optional β run it with no input at all and it searches London, ~30 days out, 1 night, 2 adults as a sane default. Set location + checkIn for a normal search.
Example input
{"location": "Bangkok","checkIn": "2026-08-03","nights": 2,"rooms": 1,"adults": 2,"currency": "USD","market": "en-gb","sortField": "Ranking","maxItems": 100}
Filtered β 5-star hotels under $150/night with a strong review score, check-out date instead of nights:
{"location": "London","checkIn": "2026-09-10","checkOut": "2026-09-13","adults": 2,"sortField": "Price","currency": "GBP","starRatings": ["5"],"priceMax": 150,"minReviewScore": 8,"maxItems": 50}
Specific hotels by URL, with 20 guest reviews each (most recent first):
{"startUrls": [{ "url": "https://www.agoda.com/the-savoy/hotel/london-gb.html" },{ "url": "https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html" }],"maxReviews": 20,"reviewsSort": "Most recent","currency": "USD","market": "en-gb"}
Output Overview
One row per hotel β in the order Agoda returns them for your chosen sort, or in startUrls order when you scrape by URL. Available hotels carry a live nightly + total price; sold-out hotels are flagged sold-out: true and carry an indicative average price. Each row's url is a dated deep-link to the hotel's priced page. When maxReviews > 0, each row also carries a nested reviews array and a scraped-review-count.
Output Samples
Real smoke-test row (Bangkok, 2 nights, 2 adults) β abbreviated arrays:
{"index": 0,"property-id": 14654101,"name": "Solaria Nishitetsu Hotel Bangkok","type": "Hotel","star-rating": 4,"review-score": 9.2,"review-count": 16382,"price-per-night": 127.56,"price-total": 510.24,"price-original": 175.52,"discount-percent": 27,"currency": "USD","free-cancellation": false,"room-size-sqm": 25,"area": "Sukhumvit","city": "Bangkok","country": "Thailand","latitude": 13.73682,"longitude": 100.560272,"distance-from-center-km": 0,"nearest-landmark": "Siam Paragon","nearest-landmark-m": 2965,"nearest-transport": "Asok BTS Station","nearest-transport-m": 27,"top-landmarks": ["Siam Paragon", "MBK Center", "Jim Thompson House"],"amenities": ["Swimming pool", "Free Wi-Fi in all rooms!", "Balcony/terrace", "Desk", "Private pool"],"atmospheres": ["shopping", "business center", "nightlife", "restaurants"],"review-snippets": ["Location is right next to both BTS-Asok and MRT-Sukhumvit.", "From the location to the staff, everything is perfect!"],"top-selling-point": "Cheapest Four Star Rating","is-popular": false,"sustainable": false,"sold-out": false,"image": "https://pix8.agoda.net/hotelImages/14654101/0/β¦","images": ["https://pix8.agoda.net/β¦", "https://pix8.agoda.net/β¦"],"image-count": 10,"url": "https://www.agoda.com/solaria-nishitetsu-hotel-bangkok/hotel/bangkok-th.html?checkIn=2026-08-03&los=2&rooms=1&adults=2&children=0¤cyCode=USD&cid=-1","check-in": "2026-08-03","nights": 2,"rooms": 1,"adults": 2,"children": 0,"agoda-city-id": 9395}
With maxReviews set, each row also carries scraped-review-count and a reviews array β one object per guest review:
{"scraped-review-count": 20,"reviews": [{"reviewId": 1002362394,"title": "Wonderful!","text": "Loved our three night stay at The Savoy. For a special occasion, we pushed the boat outβ¦","positives": null,"negatives": null,"rating": 9.6,"ratingText": "Exceptional","date": "2025-08-02T02:10:00+07:00","checkInMonth": "July 2025","lengthOfStay": 3,"roomType": "Superior Queen Room","travelerType": "Couple","reviewer": "Helen","reviewerCountry": "United Kingdom","provider": "Agoda","helpfulVotes": 0,"response": { "by": "The Savoy Hotel", "text": "Dear Helen, We are so happy to receive your reviewβ¦", "date": "Responded December 10, 2025" },"images": []}]}
Reviews come from every provider Agoda aggregates (Agoda's own guests, Booking.com, β¦) β each review's
providerfield tells you which. Booking.com-style reviews split into liked/disliked, surfaced inpositives/negativesand merged intotext.
Key Output Fields
Identity
property-idβ Agoda's internal hotel idname,type(e.g.Hotel,Hostel,Resort)star-ratingβ official star rating (0 when unrated)
Reputation
review-scoreβ guest review score (e.g. 8.6 / 10)review-countβ number of guest reviews
Pricing
price-per-night,price-totalβ in the selectedcurrencyprice-original,discount-percentβ the crossed-out price + % off when Agoda is running a dealfree-cancellationβtruewhen the cheapest offer is free-cancellationsold-outβtruewhen unavailable for the dates (price is then an indicative average)
Property detail
room-size-sqmβ size of the cheapest roomamenitiesβ array of facilities (e.g. Swimming pool, Free Wi-Fi, Balcony, Private pool)atmospheresβ vibe tags (e.g. shopping, nightlife, business center)review-snippetsβ sample guest-review quotestop-selling-point,is-popular,sustainable
Location
area,city,country,latitude,longitudedistance-from-center-kmnearest-landmark+nearest-landmark-m,nearest-transport+nearest-transport-m,top-landmarks
Media & link
imageβ primary photo URL Β·imagesβ full gallery Β·image-counturlβ dated deep-link that opens the hotel on the priced page for your search
Detailed scores & content (only when includeDetails is on)
score-overall,score-cleanliness,score-facilities,score-location,score-staff,score-valueβ per-category review sub-scoresreview-gradesβ full array with each category's score and the city average to benchmark againstscore-distributionβ review counts per band (exceptional β below-expectation)review-trend-30dβ 30-day review-score trend (positive = improving)descriptionβ hotel descriptiondetail-highlightsβ AI-summarized review highlights
Guest reviews (only when maxReviews > 0)
scraped-review-countβ how many reviews were pulled for this hotelreviews[]β one object per review:text(full comment),title,rating(0β10) +ratingText,positives/negatives,date+checkInMonth,lengthOfStay,roomType,travelerType,reviewer+reviewerCountry,provider,helpfulVotes, the hotel'sresponse(reply), and reviewimages
Search echo
check-in,nights,rooms,adults,children,agoda-city-id
FAQ
Is this an official Agoda API? No. It's an independent scraper that reads publicly available Agoda hotel search results. Not affiliated with or endorsed by Agoda.
Can I scrape one specific hotel instead of a whole city?
Yes β put the Agoda hotel-page URL(s) in startUrls (e.g. https://www.agoda.com/the-savoy/hotel/london-gb.html). The Actor resolves each link to its hotel id and returns that exact property as a full priced row. When startUrls is set, the location search is skipped. Pass several URLs to scrape a fixed list of hotels.
Does it scrape individual guest reviews?
Yes β set maxReviews to the number of reviews you want per hotel and each row gets a reviews array: review text, title, rating, traveler type, room type, length of stay, reviewer country, the hotel's reply, and any review photos. Order them with reviewsSort (Most recent, Highest rated, Lowest rated, Most helpful). Works in both destination and hotel-URL mode. Reviews are aggregated across every provider Agoda shows (its own guests, Booking.com, β¦), each tagged with its provider.
Do I need a proxy? A residential proxy is on by default and recommended β it gives reliable, geo-consistent pricing and avoids rate-limiting. Agoda has no CAPTCHA, but datacenter IPs can be throttled. Responses are small, so bandwidth cost is minimal.
Does it return real prices, or just hotel names? Real prices. Every available hotel carries a live nightly and total price for your dates and occupancy, in your chosen currency β not just the listing.
What about sold-out hotels?
They're kept and flagged sold-out: true, with an indicative average price (the greyed price Agoda shows), so your dataset stays complete.
Can I filter the results?
Yes β by starRatings, nightly price (priceMin / priceMax), guest review score (minReviewScore / maxReviewScore), and propertyTypes. Filters are applied as the Actor paginates, so a strict filter keeps fetching more pages until it fills maxItems or the city runs out β you never get a short result set just because the first page didn't match.
Does it include amenities and photos?
Yes β every row carries an amenities list, the full photo images gallery, room-size-sqm, nearest-landmark / nearest-transport with distances, vibe atmospheres, and sample review-snippets β all at the same $1/1,000, no extra calls or detail-page fetches.
What currency / locale?
currency (ISO 4217, e.g. USD, EUR, THB) and market (locale, e.g. en-gb). Defaults USD / en-gb.
How many hotels per search?
The Actor paginates Agoda's full result set for the city (dozens of hotels per page) up to your maxItems. Run many city Γ date searches to build a larger dataset.
Can I sort the results?
Yes β sortField: Ranking (default), Price, Recommended, Review or Distance.
Is the URL ready to open?
Yes β each url carries your check-in, nights and occupancy, so it lands on the hotel's priced page for that exact search.
Support
Found a bug or need a field that isn't exposed? Open an issue on the Actor's Issues tab on Apify, or reach out via the Apify Store profile. Include your input JSON and the run ID.
Additional Services
Need a custom hotel or travel data pipeline β a different source, a bespoke schema, scheduled delivery to S3/BigQuery, or rate-shopping with alerts? Custom scraping and data-engineering work is available via the Apify Store profile.
Explore More Scrapers
- Agoda Reviews Scraper β
memo23/agoda-reviews-scraperβ dedicated review scraper for pulling all of a hotel's guest reviews at scale (this Actor already covers reviews inline viamaxReviews; reach for the dedicated one for full-history review dumps). - Google Flights Scraper β
memo23/google-flights-scraperβ fares, segments, aircraft/legroom, multi-city & booking options. - Skyscanner Flight Scraper β
memo23/skyscanner-scraperβ 180+ fields per itinerary, Best/Cheapest/Fastest tags, OTA aggregation. - 140+ other scrapers β see the developer's Apify Store profile.
β οΈ Disclaimer
This Actor accesses publicly available hotel search data on Agoda for legitimate research, market-intelligence and business-analysis purposes. It is not affiliated with, endorsed by, or sponsored by Agoda Company Pte. Ltd. "Agoda" is a trademark of its respective owner; it is used here only to describe the data source. Use of this Actor must comply with Agoda's Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). The Actor's authors are not responsible for any misuse. Users must:
- Respect rate limits and avoid overloading Agoda's infrastructure
- Not use scraped data to violate user privacy or terms
- Use the data in compliance with applicable jurisdictions
- Not republish scraped content in violation of copyright
We do not store any scraped data; the Actor returns it directly to your Apify dataset for your authorized use.
SEO Keywords
agoda scraper, agoda api, agoda hotel scraper, hotel scraper, hotel price scraper, hotel data api, agoda price scraper, hotel rates scraper, hotel reviews scraper, hotel ratings scraper, accommodation scraper, travel data api, hotel listing scraper, hotel availability scraper, agoda json export, agoda csv export, hotel price monitoring, rate shopping api, hotel price tracker, hotel comparison data, city hotel scraper, apify hotel scraper, agoda data extraction, hotel deals scraper