
Agoda Hotels Scraper
hipersoft/agoda-hotels-scraper
Scrape Agoda hotels and accommodation in bulk: name, type, address, city, country, coordinates, review score, review count, star rating, nightly price, currency, image and link. For travel research, price monitoring and n8n.
Total users
1Monthly users
0Total runs
74Per hotel scraped
$0.004Last rebuilt
Oct 26, 2026Overview
Extract Agoda hotel and accommodation listings in bulk and export them as clean, structured data. Give it a destination or paste Agoda search URLs, and get back one row per hotel — name, property type, address, city, country, coordinates, review score, review count, star rating, nightly price, currency, image and link — ready for spreadsheets, dashboards, databases and automation.
Perfect for travel price research, market and competitor analysis, revenue management, building hotel datasets, and feeding downstream automations.
Features
- 🔎 Search by destination — just type a city or place (e.g.
Singapore,Bangkok,Bali). - 🔗 Or paste Agoda search URLs — run the exact search you set up on the site, including your dates, guests and currency.
- 💰 Live nightly prices in the currency you choose (USD, EUR, GBP, SGD, THB and more).
- ⭐ Ratings & reviews — star rating, guest review score and total review count for each property.
- 📍 Location data — address, city, country and latitude/longitude for mapping.
- 🖼️ Images & direct links to each property.
- 📄 Automatic pagination across all result pages up to your chosen limit.
- 📊 Export anywhere — download as JSON, CSV, Excel or HTML, or pull via API.
What it does
This actor collects hotel listings from Agoda search results at scale. You can combine both input modes: paste one or more search URLs and add a destination — the actor scrapes them all, de-duplicates properties, and stops once it reaches your maximum.
Input
| Field | Type | Description |
|---|---|---|
searchUrls |
array | One or more Agoda search-result URLs (open a search on Agoda and copy the address bar). Dates, guests and currency in the URL are respected. |
destination |
string | A city or place to search, e.g. Bangkok. Used to build a search when you have not pasted a URL. |
checkIn |
string | Check-in date, YYYY-MM-DD. Optional — a near-future date is used if empty so that prices appear. |
checkOut |
string | Check-out date, YYYY-MM-DD. Optional — defaults to a one-night stay. |
adults |
integer | Number of adult guests (default 2). |
maxItems |
integer | Maximum hotels to collect in total. Set 0 for no limit. |
currency |
string | 3-letter currency code for prices (e.g. USD, SGD, THB). |
Example input
{
"destination": "Bangkok",
"checkIn": "2026-12-01",
"checkOut": "2026-09-21",
"adults": 2,
"currency": "USD",
"maxItems": 100
}
Or with pasted search URLs:
{
"searchUrls": [
"https://www.agoda.com/search?city=4064&checkIn=2026-12-01&los=1&rooms=1&adults=2"
],
"currency": "SGD",
"maxItems": 200
}
Output
Each hotel is one dataset record:
{
"name": "Solaria Nishitetsu Hotel Bangkok",
"type": "Hotel",
"address": "Sukhumvit, Bangkok, Thailand",
"city": "Bangkok",
"country": "Thailand",
"latitude": 13.7368,
"longitude": 100.5602,
"reviewScore": 9.2,
"reviewCount": 17113,
"starRating": 4,
"price": 115.08,
"currency": "USD",
"url": "https://www.agoda.com/solaria-nishitetsu-hotel-bangkok/hotel/bangkok-th.html",
"image": "https://pix8.agoda.net/hotelImages/14654101/-1/3cdaadf72911866b34b1a97eae8f92dd.jpg"
}
You can export the whole dataset as JSON, CSV, Excel or HTML from the run's Storage tab, or fetch it through the Apify API.
Use cases
- Price monitoring — track nightly rates for a destination over time.
- Competitor & market research — compare hotels, ratings and prices across a city.
- Revenue management — benchmark your property against the local set.
- Travel apps & content — build hotel datasets for maps, guides and comparison tools.
- Lead lists — collect properties in a region with contact-ready location data.
Using it with n8n and Make
The dataset works cleanly with no-code automation platforms.
FAQ — n8n
- Can I run this from n8n? Yes. Use the Apify node (or an HTTP Request node) to start the actor, then read the dataset items in the next step.
- How do I get the results into n8n? After the run finishes, call the dataset items endpoint — each hotel comes back as a flat JSON object you can map straight onto a spreadsheet, database or CRM node.
- Can I schedule it? Yes — schedule the actor on Apify, or trigger it on a cron from n8n or Make, and process new results each run.
Tips
- For accurate prices, set
checkInandcheckOut(or use a URL that already includes dates). - Choose your
currencyso prices are directly comparable. - Set
maxItemsto control run size and cost; use0only when you want everything.
Notes
Original clean-room implementation. This actor is not affiliated with, authorized or endorsed by Agoda. Scrape responsibly and use the data in line with applicable laws and terms.
Input
| Field | Type | Description |
|---|---|---|
searchUrlsAgoda search URLs | array | Paste one or more Agoda search-result URLs (open a city or area search on Agoda, then copy the address bar). Dates, guests and currency set in the URL are respected. One URL per line. Use this together with, or instead of, the structured search below. |
destinationDestination | string | A city or place to search (e.g. "Singapore", "Bangkok", "Bali"). Used to build an Agoda search when you have not pasted a search URL above. |
checkInCheck-in date | string | Check-in date in YYYY-MM-DD format (e.g. 2026-12-01). Optional — if left empty a near-future date is used so that nightly prices appear. Applies to the structured Destination search. |
checkOutCheck-out date | string | Check-out date in YYYY-MM-DD format (e.g. 2026-09-21). Optional — defaults to a one-night stay after check-in. Applies to the structured Destination search. |
adultsAdults | integer | Number of adult guests for the structured Destination search. Default: 2 |
maxItemsMax hotels | integer | Maximum number of hotels to collect in total across all searches. Set 0 for no limit. Agoda returns about 45 hotels per result page. Default: 50 |
currencyCurrency | string | 3-letter currency code for displayed prices (e.g. USD, EUR, GBP, SGD, THB). Applied to structured searches and to pasted URLs that do not already set a currency. Default: "USD" |
proxyConfigurationProxy configuration | object | Proxy configuration. Recommended: leave proxy OFF — the actor is tuned to run reliably without a proxy. Enabling a proxy is only for advanced networking setups. Default: {"useApifyProxy": false} |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~agoda-hotels-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchUrls": [
"https://www.agoda.com/search?city=4064&los=1&rooms=1&adults=2"
],
"destination": "Bangkok"
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/agoda-hotels-scraper").call(run_input={
"searchUrls": [
"https://www.agoda.com/search?city=4064&los=1&rooms=1&adults=2"
],
"destination": "Bangkok"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/agoda-hotels-scraper').call({
"searchUrls": [
"https://www.agoda.com/search?city=4064&los=1&rooms=1&adults=2"
],
"destination": "Bangkok"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Hotel Scraped Charged per hotel scraped. | $0.004 | $0.002 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Carousell Scraper
Scrape Carousell search listings: title, price, condition, location, seller, photo and URL. Requires your own Carousell app token.
242 runs · 2 users · $0.003 / listing scrapedGoogle Flights Scraper
Scrape flight options from Google Flights by route and date: airline, flight number, departure and arrival times, duration, stops, layovers and price. One-way or round-trip, any cabin and currency. For travel and price monitoring.
216 runs · 4 users · $0.004 / flight scrapedPinterest Scraper
Search Pinterest and scrape pins (title, description, destination link, image, pinner, board, saves), boards and users. Fast. For visual research, e-commerce, trend and marketing analysis.
151 runs · 2 users · $0.0034 / item scrapedGoogle Trends Scraper
Scrape Google Trends for any keyword: interest over time, related and rising queries, and interest by region. Per country and timeframe. For SEO, market and trend research. No setup.
139 runs · 6 users · $0.001 / keyword scrapedAliExpress Product Search Scraper
Search AliExpress by keyword and export one clean row per product — title, sale price, original price, image and product URL. Export to JSON, CSV or Excel.
135 runs · 3 users · $0.003 / product scrapedGoogle Maps Scraper
Search Google Maps and scrape places: name, category, full address, city, coordinates, rating, phone, website, Place ID and map link. Fast browser-free via Google's internal endpoint, no setup. For local lead generation and market research.
130 runs · 2 users · $0.005 / place scrapedSend the site and the fields. We build it and you get it first.