Agoda Hotels Scraper

Scrape public Agoda hotel listings, prices, ratings, amenities, and property URLs by destination.

Data fields

FieldTypeDescription
namestringValue exported as name.
pricenumber | nullValue exported as price.
currencystring | nullValue exported as currency.
reviewScorenumber | nullValue exported as reviewScore.
reviewCountinteger | nullValue exported as reviewCount.
starRatingnumber | nullValue exported as starRating.
locationstring | nullValue exported as location.
urlstring | nullValue exported as url.

Input preview

searchUrlsAgoda search URLs
destinationDestination text
cityIdAgoda city ID
checkInCheck-in date
checkOutCheck-out date
adultsAdults

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

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.

Common questions

Questions and answers reused from the canonical actor README.

Why did my local run log a charge warning?

Local Apify runs do not use platform pay-per-event billing, so charge calls can be ignored locally. Cloud runs on the Apify platform use the Actor pricing configuration.

Why did I get fewer hotels than maxItems?

Agoda may return fewer public listings for a destination, date, room mix, or currency. Try broadening dates and guest filters, or use a public Agoda search URL that visibly contains more results.

Should I use a proxy?

For occasional small searches, direct access may work. For repeated searches or larger runs, enable Apify Proxy in the input to reduce blocking risk.