Agoda Scraper avatar

Agoda Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Agoda Scraper

Agoda Scraper

[๐Ÿ’ฐ $2.0 / 1K] Extract hotel and accommodation listings from Agoda โ€” prices, ratings, addresses, photos, and amenities. Search by destination keyword or paste Agoda URLs directly.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Pull hotel and accommodation listings from Agoda at scale โ€” names, addresses, coordinates, star ratings, guest scores, nightly prices, photos, amenities, descriptions, and check-in windows for any destination across 200+ countries. Built for travel aggregators, OTA market researchers, hospitality analysts, and travel-content teams who need fresh Agoda inventory and pricing without wrestling with city IDs, locale-prefixed URLs, and date-bound pagination.

Why This Scraper?

  • Full Agoda catalog across 200+ countries โ€” search by destination keyword in any of 20 site languages and 28 currencies, including USD, EUR, GBP, JPY, KRW, IDR, AED, and THB.
  • Six sort modes โ€” Recommended, Price (low/high), Review score (high/low), and Distance from city center, so you can build a Cheapest-First feed or a Highest-Rated comparison without re-fetching.
  • 5-tier star rating filter (1โ˜…โ€“5โ˜…) plus 8 property types โ€” Hotels, Apartments, Hostels, Resorts, Villas, Bed & Breakfasts, Guest Houses, and Vacation Homes โ€” pick any subset, leave empty for everything.
  • Multi-occupancy with child ages โ€” rooms, adults, children, and per-child age list surface the same family-aware nightly pricing the Agoda website shows for that exact party.
  • Output url and propertyId chain straight into Agoda Reviews Scraper โ€” every row carries the canonical hotel URL plus numeric property ID, so a search โ†’ reviews pipeline is one input wire.
  • Optional includeHotelDetails enrichment โ€” flip one toggle to add full hotel description, named amenity categories, and check-in/check-out windows to every row in the same run.
  • Per-row guest-score band with reviewScore, reviewScoreLabel (Exceptional / Excellent / Very good / Good / Fair / Below average), reviewCount, and a separate minReviewScore / maxReviewScore gate on input.
  • Discount detection โ€” when Agoda shows a strikethrough price, the row gets a calculated discountPercent so you can sort or alert on deals without parsing the UI.
  • Search by destination string OR by direct Agoda URL โ€” paste https://www.agoda.com/en-gb/search?city=5085... or any individual hotel page URL and the scraper auto-detects which endpoint to hit.

Use Cases

Travel Comparison & Aggregator Sites

  • Build city-by-city hotel inventories with current nightly rates
  • Surface deals by sorting on discountPercent and pricePerRoomPerNight
  • Power "best of" landing pages with real ratings, photos, and amenity lists

Hospitality Market Research

  • Track hotel supply by star tier and property type across markets
  • Compare average nightly rates by city, neighborhood, or country
  • Monitor seasonal pricing curves with repeated date-window runs

Competitive Pricing & Revenue Management

  • Benchmark your property against neighbors on Agoda for the same dates
  • Detect competitor discounting by watching discountPercent changes
  • Calibrate your own pricing windows by sorting on price_low_to_high

Travel Content & Destination Guides

  • Generate "Top 25 hotels in Bangkok under $100" listicles with verified data
  • Pull full descriptions, amenities, and photos for content-rich destination pages
  • Cross-reference rooms with the Agoda Reviews Scraper to add guest sentiment

Lead Generation & Sales

  • Build hotel sales prospect lists filtered by star rating and review count
  • Target boutique-hotel chains by property type (Villas, Bed & Breakfasts, Guest Houses)
  • Identify under-rated or under-reviewed properties for marketing-services pitches

Getting Started

Simple โ€” One destination, one date window

{
"search": ["hotels in Tokyo"],
"checkIn": "2026-06-15",
"checkOut": "2026-06-18",
"maxResults": 100
}

Filtered โ€” 4โ˜… and 5โ˜… only, sorted cheapest first

{
"search": ["Bangkok"],
"checkIn": "2026-07-10",
"checkOut": "2026-07-12",
"starsCountFilter": ["4", "5"],
"priceMin": 80,
"priceMax": 250,
"sortBy": "price_low_to_high",
"minReviewScore": 8,
"maxResults": 200
}

Advanced โ€” Multi-destination, family of four, full hotel detail enrichment, JPY pricing in Japanese

{
"search": ["Kyoto", "Osaka", "Hakone"],
"checkIn": "2026-09-20",
"checkOut": "2026-09-25",
"rooms": 1,
"adults": 2,
"children": 2,
"childrenAges": ["5", "8"],
"propertyType": ["hotels", "resorts"],
"starsCountFilter": ["4", "5"],
"sortBy": "review_high_to_low",
"language": "ja-jp",
"currency": "JPY",
"includeHotelDetails": true,
"maxResults": 300
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
searchstring[]["hotels in Tokyo"]Destination keywords. Each entry runs as its own Agoda search. Use this OR startUrls.
startUrlsstring[][]Paste Agoda search-result URLs or individual hotel page URLs. Auto-detects the URL type. Same field shape as Agoda Reviews Scraper for easy chaining.

Dates & Guests

ParameterTypeDefaultDescription
checkInstring (YYYY-MM-DD)emptyCheck-in date. Required to fetch live nightly prices โ€” leave empty for catalog data only.
checkOutstring (YYYY-MM-DD)emptyCheck-out date. Must be after checkIn.
roomsinteger1Number of rooms required (1โ€“9).
adultsinteger2Number of adult guests (1โ€“20). Agoda counts age 18+ as an adult.
childreninteger0Number of child guests (0โ€“10), ages 0โ€“17.
childrenAgesstring[][]Age of each child guest. Required when children > 0 โ€” Agoda prices family rooms based on these ages. Example: ["5", "8"].

Filters

ParameterTypeDefaultDescription
propertyTypeselect[]emptyRestrict to one or more accommodation types: Hotels, Apartments, Hostels, Resorts, Villas, Bed & Breakfasts, Guest Houses, Vacation Homes.
starsCountFilterselect[]emptyOnly include properties with these official star ratings (1 star โ€“ 5 stars). Empty = any.
minReviewScoreinteger0Minimum guest review score on Agoda's 0โ€“10 scale.
maxReviewScoreinteger10Maximum guest review score on Agoda's 0โ€“10 scale.
priceMinintegeremptyMinimum nightly price in the chosen currency. Empty = no minimum.
priceMaxintegeremptyMaximum nightly price in the chosen currency. Empty = no maximum (recommended for high-denomination currencies like JPY, KRW, IDR).

Sort & Localization

ParameterTypeDefaultDescription
sortByselectRecommendedRecommended, Price (lowest first), Price (highest first), Review score (highest first), Review score (lowest first), Distance from city center.
languageselectEnglish (UK)Agoda site language (locale). Affects descriptions and amenity labels. 20 options: English (UK/US), German, French, Spanish, Italian, Dutch, Portuguese, Polish, Russian, Japanese, Korean, Chinese (Simplified/Traditional), Thai, Vietnamese, Indonesian, Malay, Arabic, Turkish.
currencyselectUS DollarCurrency code (ISO 4217). 28 options including USD, EUR, GBP, JPY, KRW, IDR, AED, THB. Forces all prices into this currency regardless of the locale default.

Options

ParameterTypeDefaultDescription
maxResultsinteger100Maximum hotels to return per destination/URL. Set to 0 for all available. The last page is kept whole โ€” the scraper stops asking for new pages once the cap is reached but never truncates mid-page. A single Agoda search holds anywhere from a few hundred to several thousand listings depending on the destination (Bangkok โ‰ˆ 4,000, Tokyo โ‰ˆ 900). For very large destinations, split the query by neighborhood, star tier, or property type to go beyond what one search can return.
includeHotelDetailsbooleanfalseFetch the hotel detail page for every result and add full description, amenities, and check-in/check-out times to each row. Roughly doubles the row cost โ€” leave off for fast catalog runs.

Output

Hotel row (always)

{
"propertyId": 1234567,
"name": "The Peninsula Tokyo",
"url": "https://www.agoda.com/en-gb/the-peninsula-tokyo/hotel/tokyo-jp.html",
"propertyType": "Hotel",
"image": "https://q-xx.bstatic.com/xdata/images/hotel/max1024x768/12345.jpg",
"address": {
"country": "Japan",
"countryCode": "JP",
"city": "Tokyo",
"area": "Marunouchi",
"street": "",
"postalCode": ""
},
"location": { "lat": 35.6762, "lng": 139.7649 },
"rating": 5,
"reviewCount": 1842,
"reviewScore": 9.2,
"reviewScoreLabel": "Exceptional",
"pricePerRoomPerNight": 920,
"pricePerBook": 2760,
"priceCurrency": "USD",
"requestedCurrency": "USD",
"discountPercent": 15,
"freeCancellation": true,
"breakfastIncluded": null,
"amenities": [],
"description": null,
"checkInTime": null,
"checkOutTime": null,
"searchQuery": "hotels in Tokyo",
"searchUrl": "https://www.agoda.com/en-gb/search?city=14266"
}

Core Fields

FieldTypeDescription
propertyIdnumberNumeric Agoda hotel ID. Drops directly into the Agoda Reviews Scraper hotelIds input.
namestringHotel name in the requested locale.
urlstringCanonical Agoda hotel URL. Drops directly into the Agoda Reviews Scraper startUrls input.
propertyTypestringProperty type label (Hotel, Resort, Apartment, etc.).
imagestringPrimary hotel photo URL (https-normalized).
ratingnumberOfficial star rating (1โ€“5).
searchQuerystringThe destination string that produced this row.
searchUrlstringThe Agoda search URL that produced this row.

Address & Location

FieldTypeDescription
address.countrystringCountry name.
address.countryCodestringISO country code.
address.citystringCity name.
address.areastringNeighborhood / district name.
address.streetstringStreet address (populated when includeHotelDetails is on).
address.postalCodestringPostal code (populated when includeHotelDetails is on).
address.fullstringFull formatted address (populated when includeHotelDetails is on).
location.latnumberLatitude.
location.lngnumberLongitude.

Ratings & Pricing

FieldTypeDescription
reviewCountnumberTotal guest reviews on Agoda.
reviewScorenumberGuest review score on Agoda's 0โ€“10 scale.
reviewScoreLabelstringBucketed label: Exceptional, Excellent, Very good, Good, Fair, Below average.
pricePerRoomPerNightnumberNightly rate in priceCurrency.
pricePerBooknumberTotal stay price in priceCurrency.
priceCurrencystringCurrency Agoda actually returned (some locales force a substitution).
requestedCurrencystringCurrency the input asked for. Compare with priceCurrency to detect overrides.
discountPercentnumberPercent off the strikethrough price, when Agoda displays one.
freeCancellationbooleanWhether the surfaced offer includes free cancellation.

Detail Enrichment (only when includeHotelDetails: true)

FieldTypeDescription
descriptionstringFull hotel description in the requested locale.
amenitiesstring[]Named amenity categories (e.g. "Wellness", "Food and drink", "Outdoors").
imagesstring[]Up to 12 gallery photo URLs for the hotel (https-normalized).
checkInTimestringStated check-in window (e.g. "From 15:00").
checkOutTimestringStated check-out window (e.g. "Until 11:00").

Tips for Best Results

  • Pair this scraper with Agoda Reviews Scraper โ€” feed each row's url straight into the reviews scraper's startUrls (or propertyId into hotelIds) for end-to-end hotel + guest-feedback pipelines in two clicks.
  • Always pass checkIn and checkOut when you need prices โ€” without dates the catalog data still comes through (names, ratings, addresses, photos) but pricePerRoomPerNight will be empty, since Agoda only quotes rates against a real date window.
  • Run multiple date windows for maximum city coverage โ€” Agoda's available inventory shifts with seasonality and last-minute releases, so three runs across three weekends will pick up properties a single run misses.
  • Match currency to your audience, not the destination โ€” set currency: "USD" for a US-facing dashboard even when scraping Tokyo or Bangkok; Agoda will convert and surface the rate.
  • Leave priceMax empty for high-denomination currencies (JPY, KRW, IDR, VND) unless you really mean to filter โ€” a priceMax: 1000 against JPY will exclude almost everything.
  • Use sortBy: "review_high_to_low" with minReviewScore: 8 to build a "best in city" list without sifting through low-rated properties.
  • Children pricing requires childrenAges โ€” Agoda quotes family rooms based on each child's age. A children: 2 input without ages will fall back to adult-priced occupancy.

Pricing

$2.00 per 1,000 results โ€” flat. No compute charges โ€” you only pay per result returned.

ResultsEstimated Cost
100$0.20
1,000$2.00
10,000$20.00
100,000$200.00

A "result" is one hotel row in the output dataset. Enabling includeHotelDetails does not change the per-row price โ€” it only changes how many fields each row contains.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n โ€” Workflow automation
  • Google Sheets โ€” Direct spreadsheet export
  • Slack / Email โ€” Notifications on new results
  • Webhooks โ€” Trigger custom APIs on run completion
  • Apify API โ€” Full programmatic access
  • Agoda Reviews Scraper โ€” Pipe each url straight in for a complete hotel + reviews dataset

This actor is designed for legitimate travel research, market analysis, content publishing, and competitive benchmarking. Users are responsible for complying with applicable laws and Agoda's Terms of Service. Do not use extracted data for spam, price manipulation, or any illegal purpose. Respect Agoda's published rate parity rules when republishing pricing data.