Agoda Activities Search Scraper avatar

Agoda Activities Search Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Agoda Activities Search Scraper

Agoda Activities Search Scraper

Scrape Agoda's Activities search pages to collect structured data on tours, experiences, and attractions. Captures pricing, reviews, images, cancellation policies, and more — perfect for travel aggregators and market researchers.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Stealth mode

Stealth mode

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

an hour ago

Last modified

Share

Agoda Activities Scraper: Extract Tour & Experience Listings at Scale


What Is Agoda Activities?

Agoda.com is one of Asia's largest travel platforms, offering not only hotel bookings but also a growing catalog of tours, day trips, and local experiences. Its Activities section lists thousands of options across cities worldwide, with rich metadata including pricing, reviews, and cancellation terms. Manually collecting this data is impractical at scale — the Agoda Activities Search Scraper automates extraction from search result pages, delivering clean, structured records ready for analysis or integration.


Overview

This scraper targets Agoda's Activities search result pages, collecting up to hundreds of listings per URL across multiple pages. It is suited for:

  • Travel aggregators building curated activity feeds
  • Market researchers analyzing pricing and availability trends
  • Tour operators benchmarking competitors
  • Data engineers feeding travel datasets into recommendation systems

Input Format

{
"urls": [
"https://www.agoda.com/vi-vn/activities/search?cityId=15470&cid=1922896&tag=7adbeb35-4108-414c-9559-32893b4cdfe5&page=2"
],
"ignore_url_failures": true,
"max_items_per_url": 200,
"page": 3,
"sort_by": "Default"
}
FieldTypeDescription
urlsarrayOne or more Agoda Activities search page URLs. Must be search result pages (e.g., /activities/search?cityId=...), not individual activity detail pages. Add URLs one by one or via bulk edit.
max_items_per_urlintegerMaximum number of activity records to collect per URL. Default: 20. Set higher (e.g., 200) for broader collection.
ignore_url_failuresbooleanIf true, the scraper continues when a URL fails instead of stopping the run. Recommended for bulk runs. Default: true.
pageintegerStarting page number within the search results. Useful for paginated collection across large city catalogs.
sort_bystringSort order for results. Common value: "Default". May also support relevance or price-based sorting depending on Agoda's available options.

Tip: To collect activities across multiple pages, create separate URL entries with different ?page=N parameters, or use the page field to offset the starting point.


Output Format

Sample output

{
"activity_id": 1440591,
"title": "Disneyland Paris Ticket",
"categories": [
"Attractions"
],
"description": "A two-park outing combines attractions with special events, giving the visit both park experiences and occasions designed to create a magical memory. Disneyland Paris puts its magic at the centre, inviting visitors to enjoy what each park offers at their own pace. Disney Premier Access Ultimate lets visitors skip the lines and maximise the fun.\n\n## Highlights\n- Mickey’s Dazzling Christmas Parade brings festive Disney entertainment to the park.\n\n![image](https://image.kkday.com/v2/image/get/w_960,c_fit,q_55,wm_auto/s1.kkday.com/product_269272/20251031095624_5qWzf/png)\n\n- Character Encounters create opportunities for magical moments with Disney Characters.\n\n![image](https://image.kkday.com/v2/image/get/w_960,c_fit,q_55,wm_auto/s1.kkday.com/product_269272/20251031095608_N8EPB/png)\n\n- Festive togetherness with Disney Characters adds seasonal character moments to the park experience.\n\n![image](https://image.kkday.com/v2/image/get/w_960,c_fit,q_55,wm_auto/s1.kkday.com/product_269272/20251031095635_QN9fU/png)\n\n- World of Frozen recreates the Kingdom of Arendelle with a Nordic-style village, North Mountain, Elsa’s Ice Palace, music, storytelling, the Snowflower Festival, Nordic-inspired dining, and Frozen merchandise.\n\n- Frozen Ever After is a family-friendly boat ride featuring Anna, Elsa, Olaf, Kristoff, and Sven, with songs including “Let It Go.”\n\n- Marvel Avengers Campus at Walt Disney Studios® Park features Avengers encounters alongside Marvel-themed attractions.\n\n![image](https://image.kkday.com/v2/image/get/w_960,c_fit,q_55,wm_auto/s1.kkday.com/product_269272/20250214070701_QHjvX/jpg)\n\n- Avengers Assemble: Flight Force and Spider-Man W.E.B. Adventure add high-energy Marvel experiences to the campus.\n\n![image](https://image.kkday.com/v2/image/get/w_960,c_fit,q_55,wm_auto/s1.kkday.com/product_269272/20250214070701_LyUAK/jpg)\n\n- Mickey and the Magician presents a live Disney stage show.\n\n![image](https://image.kkday.com/v2/image/get/w_960,c_fit,q_55,wm_auto/s1.kkday.com/product_269272/20250214070655_v52g0/jpg)\n\n- Disney Illuminations concludes the park experience with fireworks.\n\n![image](https://image.kkday.com/v2/image/get/w_960,c_fit,q_55,wm_auto/s1.kkday.com/product_269272/20250214070716_t1AZb/jpg)\n\n- Disney Premier Access provides one-time fast-lane access at participating attractions without time-slot reservations. A valid entry ticket to one of the Disney Parks is required to purchase and use Disney Premier Access.\n",
"duration_minutes": 1440,
"duration_minutes_until": null,
"duration_type": "FIXED",
"city": "Paris",
"city_id": 15470,
"country": "France",
"address": "",
"postal_code": "",
"latitude": 48.856667,
"longitude": 2.350987,
"content_locale": "en-us",
"review_score": 0.0,
"review_count": 0,
"currency": "USD",
"price": 58.55,
"price_exclusive": 58.55,
"price_per_person": 58.55,
"original_price": 66.01,
"discount_percent": 11,
"promocodes": [],
"booking_count": 4069,
"is_best_seller": true,
"top_in_category": "Attractions",
"has_instant_confirmation": false,
"cancellation_type": "NON_REFUNDABLE",
"cancellation_policies": [
{
"hours_from": 8760,
"hours_until": 0,
"penalty_code": "100P"
},
{
"hours_from": 0,
"hours_until": -1,
"penalty_code": "100P"
}
],
"supplier_activity_code": "269272",
"image_count": 1,
"image_urls": [
"https://pix6.agoda.net/generic/d7f25594815a2b13f5179f2d55a63c7c.jpeg?ce=3"
],
"raw_data": null,
"from_url": "https://www.agoda.com/activities/search?cityId=15470&cid=1922896&tag=7adbeb35-4108-414c-9559-32893b4cdfe5&page=2"
}

The scraper returns JSON data with each activity as an object containing detailed fields. Understanding field purposes enables effective analysis and application.

Activity Identification

Activity ID: Unique numeric identifier of the activity on Agoda. Purpose: Database indexing, tracking specific activities over time, avoiding duplicates.

Title: Name of the activity as displayed on Agoda. Purpose: Quick preview, keyword analysis, activity summaries.

Categories: List of categories the activity belongs to (e.g., Attractions). Purpose: Segmenting activities by type and market analysis by category.

Description: Full text description of the activity. Purpose: Extracting highlights, included sights and itinerary details, keyword analysis.

Duration

Duration Minutes: Duration of the activity in minutes. Purpose: Comparing activities by length, planning itineraries, price-per-minute analysis.

Duration Minutes Until: Upper bound of duration when the activity has a flexible length (null if fixed). Purpose: Handling variable-length activities in duration analysis.

Duration Type: Duration category of the activity (e.g., FIXED). Purpose: Separating fixed-length from flexible activities.

Location

City: City where the activity takes place. Purpose: City-level market analysis and destination comparison.

City ID: Agoda identifier of the city. Purpose: Joining datasets by city and building search queries.

Country: Country where the activity takes place. Purpose: Geographic segmentation and multi-market analysis.

Address: Street address of the activity meeting point (may be empty). Purpose: Logistics planning and location verification when available.

Postal Code: Postal code of the activity location (may be empty). Purpose: Geographic grouping when available.

Latitude: Geographic latitude of the activity. Purpose: Map plotting and spatial analysis. Note: 0.0 means the coordinates are not provided.

Longitude: Geographic longitude of the activity. Purpose: Map plotting and spatial analysis. Note: 0.0 means the coordinates are not provided.

Content Locale: Language and region of the listing content (e.g., en-us). Purpose: Understanding the language of text fields and localized content.

Reviews

Review Score: Average customer rating of the activity. Purpose: Quality benchmarking and ranking. Note: 0.0 with zero reviews means no rating yet.

Review Count: Total number of customer reviews. Purpose: Judging the reliability of the rating and popularity.

Pricing

Currency: Currency in which prices are displayed (e.g., VND). Purpose: Correct financial interpretation and currency conversion.

Price: Final all-inclusive price for one booking. Purpose: Price comparison, budget filtering, market valuation.

Price Exclusive: Price for one booking excluding taxes and fees. Purpose: Analyzing the tax and fee component of the final price.

Price Per Person: Final all-inclusive price per person. Purpose: Per-person comparison across activities.

Original Price: Crossed-out price before discount. Purpose: Measuring discount depth and promotional pricing.

Discount Percent: Discount percentage shown on the listing. Purpose: Identifying deals and promotional strategies.

Promocodes: List of promo codes applicable to the activity (empty if none). Purpose: Finding extra savings opportunities.

Popularity and Highlights

Booking Count: Total number of bookings of all time. Purpose: Measuring demand and popularity.

Is Best Seller: Whether the activity carries the Best Seller badge. Purpose: Identifying top-performing activities.

Top In Category: Category in which the activity is ranked at the top (null if none). Purpose: Identifying category leaders.

Has Instant Confirmation: Whether bookings are confirmed immediately. Purpose: Assessing booking convenience.

Cancellation

Cancellation Type: Cancellation rule category (e.g., NON_REFUNDABLE). Purpose: Evaluating booking flexibility and risk.

Cancellation Policies: List of cancellation windows with hours before start and penalty code (e.g., 100P = 100% penalty). Purpose: Detailed analysis of refund conditions.

Supplier

Supplier Activity Code: Identifier of the activity in the supplier's system. Purpose: Matching the same activity across platforms and tracking supplier inventory.

Media

Image Count: Total number of images in the listing. Purpose: Evaluating listing quality and completeness.

Image URLs: List of direct links to the activity images in original order. Purpose: Downloading images, visual inspection, computer vision analysis.

Raw Data

Raw Data: Complete original JSON object of the activity as scraped, without modification. Purpose: Auditing, debugging, accessing fields not included in the cleaned output, and reprocessing without re-scraping.


How to Use

  1. Find a search URL — Go to agoda.com/activities/search, filter by city or category, and copy the URL from your browser.
  2. Paste into urls — Add one or more search URLs to the array.
  3. Set limits — Adjust max_items_per_url based on how many listings you need. Start with 20 for testing.
  4. Configure pagination — Use ?page=N in URLs or the page field to target specific result pages.
  5. Run and export — Download results as JSON or CSV for use in spreadsheets, databases, or pipelines.

Common issues:

  • Ensure URLs point to search result pages, not individual activity pages.
  • If results seem incomplete, try reducing max_items_per_url and splitting across multiple URL entries.
  • Use ignore_url_failures: true for multi-URL runs to prevent a single failure from stopping the job.

Use Cases & Business Value

  • Aggregator feeds: Sync Agoda activity inventory into a custom travel marketplace
  • Pricing intelligence: Monitor how tour prices fluctuate across cities and seasons
  • Content enrichment: Pull descriptions, images, and badges to enrich internal databases
  • Review analytics: Analyze guest sentiment across activity categories

Conclusion

The Agoda Activities Search Scraper turns paginated search results into structured, analysis-ready datasets. With flexible pagination, configurable limits, and rich output spanning pricing, reviews, and cancellation terms, it covers the full data needs of travel industry professionals. Configure your first URL and start collecting.