Despegar Scraper - Hotels, Flights & Travel Data
Pricing
from $2.20 / 1,000 results
Despegar Scraper - Hotels, Flights & Travel Data
Extract Despegar destination suggestions, hotels, flight offers and package listings across Latin American country sites. Export rows with prices, ratings and links. Pay per delivered row plus a start fee.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
4
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Despegar Scraper
Extract Despegar destination suggestions, hotel details, flight offers and package listings from Latin American country sites as exportable rows.
- Destination identifiers and place labels for travel research.
- Hotel names, prices, ratings and optional review rows.
- Flight routes and package offer links where available.
- JSON, CSV and Excel exports for analysis or scheduled checks.
- Free-plan pricing of $3.00 per 1,000 delivered rows, plus a small start fee.
What does Despegar Scraper do?
Despegar Scraper collects publicly available travel information from Despegar. Choose a country site and one place, hotel or route. Available country settings cover Argentina, Mexico, Colombia, Chile, Brazil, Peru, Ecuador and Uruguay; coverage varies by mode and country.
suggestions: find destination identifiers from a place name.hotelsSearch: find hotels for a destination and stay dates.hotelDetail: retrieve one hotel's details byhotelId.flightsSearch: collect offers for an airport-code route.packagesSeo: collect package landing-page offers, not dated booking availability.bffConfig: collect public market config resources (app resources, bottom-bar, shifu, configs, health-check, and nearby cities when a numeric destination gid is given).- Optional hotel enrichment uses
enrichDetails, off by default. Reviews usemaxReviews, default0; each review is a separate row billed at the same rate as a hotel row.
This is an unofficial tool, not affiliated with Despegar. It does not book travel or access private accounts.
What data can you extract from Despegar?
Rows include mode, countrySite and capturedAt. The tables show representative fields, not guaranteed values. Hotels and reviews have rowType; other rows use type to identify their kind.
Suggestions (type: suggestion)
| Field | Description | Example |
|---|---|---|
gid | Despegar destination identifier | CIT_982 |
display | Place or lodging label | Buenos Aires, Argentina |
targetType | Kind of destination | CITY |
address | Available parent geography; may contain identifiers | {"country":"Argentina"} |
geo | Coordinates, when available | {"lat":-34.60,"lng":-58.38} |
Hotels (rowType: hotel)
| Field | Description | Example |
|---|---|---|
hotelId | Hotel identifier | 289843 |
name | Hotel name | Example Hotel |
priceText | Displayed price, when present | ARS 120000 |
currency | Country-site currency | ARS |
productUrl | Hotel or offer link | https://www.despegar.com.ar/ |
reviewScore | Aggregate guest rating | 8.5 |
roomGroups | Available room descriptions and rate information | null |
Flights (type: flight)
| Field | Description | Example |
|---|---|---|
origin | Departure airport code | EZE |
destination | Arrival airport code | MIA |
departureDate | Departure date | 2026-12-20 |
returnDate | Return-date field | 2026-12-27 |
tripType | Requested trip type | roundtrip |
Flight rows also carry priceText, currency and productUrl when available. A search-page link is not necessarily a unique itinerary link.
Packages (type: packageSeo)
| Field | Description | Example |
|---|---|---|
title | Offer heading | 7 Días / 6 Noches |
days | Stated duration in days | 7 |
nights | Stated duration in nights | 6 |
Package rows also include route fields, priceText and productUrl. Duration stays empty when the offer does not state it.
Reviews (rowType: review)
| Field | Description | Example |
|---|---|---|
reviewId | Source identifier or a derived identifier | 289843:example |
reviewIdDerived | Whether the identifier was derived | true |
rating | Individual review score | 9 |
text | Review text | Comfortable room. |
goodComment | Positive comment, if separately supplied | Quiet room. |
badComment | Negative comment, if separately supplied | null |
hotelResponse | Property's reply, if present | null |
Reviews retain the parent hotelId. Contact fields can be empty; suggestions do not supply phone numbers or email addresses. leadAbsences explains missing contact values rather than filling them with guesses.
How to scrape Despegar
- Open Despegar Scraper in Apify Console.
- Enter one target, such as
query: Argentina, and choosecountrySite. - Set
maxResultsto3for a first run. - Click Start and wait for completion.
- Download the dataset or read it through the API.
Empty input {} starts an example using query: Argentina, the default country site and at most 3 rows. Normal event charges apply. With mode: auto, the filled target selects the mode. Conflicting targets are resolved in this order: hotelId, destinationGid, query, then the route. This is not a list of separate searches.
Suggestions
Fill query with a place name. Query text alone selects suggestions, not hotel search. Only matching suggestions are kept, so fewer than the requested number may exist.
Hotel search
Set mode: hotelsSearch with query, or fill destinationGid. Optionally enable enrichDetails and set enrichLimit for additional hotel information.
Hotel detail
Fill hotelId. Set maxReviews above zero to request reviews; hotel rows take priority and reviews use the remaining maxResults allowance.
Flight search
Fill both origin and destination with airport codes. Choose tripType and travel dates. Do not also fill query when relying on automatic mode selection.
Packages
Set mode: packagesSeo and provide origin and destination city slugs. A query is also accepted as a destination; without an origin, the default is bue.
Market config resources
Set mode: bffConfig to read the site's public configuration endpoints (app resources, bottom-bar navigation, shifu marketing config, configs and a health check). One row per endpoint document; when destinationGid is a numeric geo identifier, nearby cities are also returned one per row. Country site chooses the market; query is only used as a nearby-cities geo id when numeric.
What to fill in
| Field | What to enter | Default |
|---|---|---|
mode | Automatic selection or a mode above | auto |
query | Place name; form sample is Argentina | Empty |
hotelId | Despegar hotel identifier | Empty |
destinationGid | Destination identifier such as CIT_982 | Empty |
origin | Airport code or package city slug | Empty |
destination | Airport code or package city slug | Empty |
countrySite | Host selected in the form | despegar.com.ar |
maxResults | Maximum rows for the input, 1–200 | 70; form sample 3 |
checkin | Stay start, YYYY-MM-DD | 21 days ahead |
checkout | Stay end, YYYY-MM-DD | 7 nights after check-in |
departureDate | Flight departure, YYYY-MM-DD | Check-in date |
returnDate | Round-trip return, YYYY-MM-DD | Check-out date |
tripType | roundtrip or oneway | roundtrip |
adults | Adult count | 2 |
children | Child count; see limitations | 0 |
rooms | Room count; see limitations | 1 |
currency | Leave empty or use the site's currency | Site currency |
maxPages | Hotel search page limit, 1–20 | 1 |
enrichDetails | Add hotel details to search rows | false |
enrichLimit | Hotels to enrich, 0–20 | 3 |
maxReviews | Reviews per hotel, 0–50 | 0 |
Use these examples individually.
Suggestions
{"query": "Argentina","maxResults": 3}
Hotel search
{"mode": "hotelsSearch","query": "Buenos Aires","maxResults": 3}
Hotel detail with reviews
{"hotelId": "289843","maxReviews": 2,"maxResults": 3}
Flights
{"origin": "EZE","destination": "MIA","tripType": "roundtrip","maxResults": 3}
Packages
{"mode": "packagesSeo","origin": "bue","destination": "brc","maxResults": 3}
maxItemsandlimitare accepted aliases formaxResults.- Unknown fields are not rejected solely for being unknown: close misspellings are corrected and other names are ignored with a warning.
- Supported modes write
INPUT_REPORTto the default key-value store, recording inferred, filled, corrected and ignored fields. Unsupported modes are rejected separately and do not write this report. - Invalid stay dates stop before collection, for example
INVALID_INPUT: checkin — checkin must be today or later (YYYY-MM-DD). No rows are charged for that error; the start fee is separate. Other validation errors can use different wording. - Empty stay dates move relative to today on each run. Explicit dates are not automatically shifted. Flight dates inherit stay dates when omitted.
Output example
This illustrative suggestion row uses the actual output field names; it is not a fresh collection result.
{"type": "suggestion","mode": "suggestions","countrySite": "despegar.com.ar","gid": "CIT_982","display": "Buenos Aires, Argentina","targetType": "CITY","phones": [],"emails": [],"person": null,"org": null,"web": {"website": null, "socials": []},"capturedAt": "2026-10-24T10:00:00Z"}
Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. RUN_SUMMARY records the outcome; ERROR_SUMMARY supplies failure details when written.
Why use this Despegar scraper?
- Pay for delivered rows. Unavailable pages are not billed as result rows; the start fee still applies.
- Keep delivered data. Rows already in the dataset remain available after a stop. Returned partial results can also be delivered, but an interrupted run is not guaranteed to recover every collected row.
- Inspect failures. Status messages and saved summaries distinguish invalid input, unavailable data and collection errors.
- Reuse inputs. Schedule the same place or route for repeated comparisons, checking dates and currency each time.
- No proxy setup. You do not need to set up proxies.
How much does it cost to scrape Despegar?
Pricing is pay-per-event. The start event costs $0.005 per GB of allocated memory, with a minimum of one event. The default 1024 MB uses one start event. Platform usage is included in these prices.
| Apify plan | Start at 1024 MB | Price per row | Price per 1,000 rows |
|---|---|---|---|
| Free | $0.005 | $0.003 | $3.00 |
| Starter | $0.005 | $0.003 | $3.00 |
| Scale | $0.005 | $0.0026 | $2.60 |
| Business | $0.005 | $0.0022 | $2.20 |
maxResults applies to the single query, hotel or route supplied. Its default is 70, with larger requests collected in parts of 70, up to the schema maximum of 200. All row types share that allowance. Requested counts are ceilings, not promises of available data.
Free Apify plans are capped at 200 rows per run and 10 runs of this Actor. Set Maximum cost per run (maxTotalChargeUsd in the API) to cap the whole run's charges.
Example: 3 delivered rows on the Free plan at 1024 MB cost 3 × $0.003 + $0.005 = $0.014. If reviews replace some hotel rows within that total, the row price stays the same.
What happens when the run timeout is too short
Some searches take longer than the timeout you chose. When an automatic pause is accepted, the run ends early with the message "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." It temporarily shows ABORTED.
When results are ready, the same run resumes, reports "Resumed: delivering N rows.", writes to the same dataset and finishes as SUCCEEDED if delivery succeeds. Rows already delivered are skipped, so they are not delivered or charged again. You do not need to restart that paused run yourself.
- Automatic pauses are limited to 3 per run. Keep the default timeout of 3600 seconds to reduce interruptions.
- Synchronous endpoints (
run-sync,run-sync-get-dataset-items) wait at most 300 seconds and can return an empty dataset while a run is paused. For longer searches, start asynchronously and read the dataset afterSUCCEEDED, or use a succeeded-event webhook.
Use with AI agents and the API
Apify MCP server
Claude, ChatGPT, Cursor and VS Code clients with remote MCP support can use:
https://mcp.apify.com?tools=lentic_clockss/despegar-scraper
Sign in with Apify using OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; read rows with get-dataset-items.
Clients without remote support can run npx @apify/actors-mcp-server --tools lentic_clockss/despegar-scraper with APIFY_TOKEN set.
Example prompt: "Find up to 3 Despegar destination suggestions for Argentina using despegar.com.ar, and return their labels and identifiers."
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/despegar-scraper").call(run_input={"query": "Argentina", "maxResults": 3})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/despegar-scraper').call({query: 'Argentina', maxResults: 3});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
For asynchronous HTTP, send the JSON input to POST https://api.apify.com/v2/acts/lentic_clockss~despegar-scraper/runs with an Authorization: Bearer header. Read results with GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json after completion.
Integrations
Use Apify's Integrations tab to connect results to Google Sheets, Make, Zapier, n8n, Slack, Airtable or a webhook. Use Apify Schedules for recurring runs.
En español
Este Actor recopila sugerencias de destinos, datos de hoteles, ofertas de vuelos y paquetes publicados en Despegar. Para empezar, escribe un lugar en query y limita maxResults a 3. Ese dato por sí solo busca sugerencias; para buscar hoteles, selecciona mode: hotelsSearch. También puedes indicar un hotelId o una ruta con origin y destination. Elige el país en countrySite y revisa las fechas antes de ejecutar. Los resultados se cobran por fila, además del cargo de inicio. Las reseñas opcionales cuentan como filas y comparten el límite. No realiza reservas y no garantiza que todos los campos estén disponibles.
FAQ
Is it legal to scrape Despegar?
This Actor targets public data. You are responsible for complying with Despegar's terms and applicable data protection laws. Personal data requires a lawful basis; public availability alone does not settle that question.
Why did my run end as ABORTED?
Check its status message. An automatic pause can resume as described above. A manual abort or another interruption is not a promise of automatic recovery.
How many results can I get?
Request 1–200 rows with maxResults. Actual counts depend on matching data, maxPages, optional reviews and the run's cost limit. Suggestions are not a complete destination directory.
Why are some fields empty?
The source may omit a price, address, rating or contact field. Different modes expose different information. Empty values are not replaced with invented data.
Is login required, and can it book travel?
No Despegar login is requested. The Actor reads public information and does not submit reservations, payments or account forms.
Why is an SEO hotel page different from search results?
Marketing landing pages are not dated accommodation availability. Use hotelsSearch or hotelDetail for stay-specific information; package landing offers are not confirmed booking quotes.
Do cars, transfers or activities work?
No. Those form options are not available and return an explicit error. Choose one of the five documented modes instead.
Can I request another currency?
Use the selected country's currency, such as ARS for Argentina or MXN for Mexico. A different currency is rejected, not converted.
Limitations
- Country settings do not guarantee identical coverage. Shopping and detail pages may be unavailable even when suggestions work.
- One query, hotel or route is accepted per run; there is no target-list input.
- Suggestions can include name matches outside the intended location. Check returned geography before using a row as a local match.
- Parent geography may contain identifiers instead of readable names. Suggestions do not provide street-level contact completeness.
- Child ages and detailed room allocation are not represented. Multi-room or child pricing should not be treated as an exact booking quote.
- Review counts depend on exposed reviews and the remaining row allowance. Complete review histories are not guaranteed.
Related scrapers
More travel, hotel and flight scrapers from the same publisher:
- Trip.com Scraper — Hotels Flights Trains Cars
- Traveloka Scraper
- Expedia Scraper
- Skyscanner Scraper
- Agoda Scraper — Hotels, Flights, Packages & More
- TripAdvisor Scraper — Hotels, Restaurants & More
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Report a problem or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.