Scrape public Agoda hotel search result pages and export hotel/property listings with prices, ratings, review counts, locations, amenities, and Agoda property URLs. Use it for travel market research, price monitoring, destination analysis, and hotel lead collection.
Input recipes
{
"searchUrls": [{ "url": "https://www.agoda.com/search?city=9395&adults=2&rooms=1" }],
"maxItems": 20,
"currency": "USD",
"language": "en-US"
}
Or build a search from an Agoda city ID:
{
"destination": "Bangkok",
"cityId": "9395",
"adults": 2,
"rooms": 1,
"maxItems": 20
}
Output
Each dataset item represents one Agoda hotel/property listing and includes fields such as name, price, currency, reviewScore, reviewCount, location, amenities, url, and source search metadata.
Notes
Agoda pages can vary by country, date, currency, and availability. If a search returns no results, try a less restrictive public Agoda search URL or enable Apify Proxy for repeated/larger runs.
Example inputs
Bangkok hotels from a public Agoda search URL
Use a copied Agoda search URL when you already have the destination and guest filters selected in the browser.
{
"searchUrls": [{ "url": "https://www.agoda.com/search?city=9395&adults=2&rooms=1" }],
"maxItems": 50,
"currency": "USD"
}
City ID search with dates
Use Agoda city IDs for repeatable destination tracking.
{
"destination": "Bangkok",
"cityId": "9395",
"checkIn": "2026-08-15",
"checkOut": "2026-08-17",
"adults": 2,
"rooms": 1,
"maxItems": 30
}
API usage
You can run the Actor from the Apify API or Apify client libraries with the same JSON input shown above. After the run finishes, read the default dataset to get one item per scraped Agoda hotel/property listing.
Node.js ApifyClient example
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/agoda-hotels-scraper').call({
searchUrls: [{ url: 'https://www.agoda.com/search?city=9395&adults=2&rooms=1' }],
maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python ApifyClient example
from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/agoda-hotels-scraper').call(run_input={
'searchUrls': [{'url': 'https://www.agoda.com/search?city=9395&adults=2&rooms=1'}],
'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
cURL example
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~agoda-hotels-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"searchUrls":[{"url":"https://www.agoda.com/search?city=9395&adults=2&rooms=1"}],"maxItems":20}'
Who is it for
- Travel analysts comparing hotel supply and pricing across Agoda destinations.
- Revenue managers monitoring public hotel listings for a market or competitor set.
- Data teams enriching destination dashboards with Agoda property names, prices, ratings, and locations.
- Agencies and researchers collecting public accommodation inventory for reporting.
MCP
This Actor can be used from Apify integrations that expose Actors as tools, including MCP-compatible workflows. Provide the same JSON input you would use in the Apify Console, run the Actor, and consume the default dataset as structured hotel listing records.
Add the Apify MCP server to Claude Desktop or Claude Code with your Apify token:
claude mcp add apify -- npx -y @apify/actors-mcp-server --actors fetch_cat/agoda-hotels-scraper
Example MCP server configuration:
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--actors", "fetch_cat/agoda-hotels-scraper"],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_TOKEN"
}
}
}
}
Example prompts:
- "Run Agoda Hotels Scraper for Bangkok city ID 9395 and return 10 hotels with prices."
- "Scrape this Agoda search URL and summarize hotel names, ratings, and nightly prices."
- "Compare the locations and review scores from the Agoda dataset produced by the latest run."
Legality
This Actor is designed for publicly available Agoda search result pages. Use it responsibly, respect applicable laws and Agoda terms, and avoid collecting personal data. If your use case has compliance requirements, consult your legal team before running large-scale extraction.
Support
Open an Apify Actor issue with your run ID, input, and what result you expected if a public Agoda search URL does not produce listings.
Best practices
Start with a small maxItems value to confirm the destination and filters return the listings you expect. For recurring monitoring, keep input dates, currency, and language consistent across runs so price and rating comparisons remain comparable.