Extract structured data from Google Hotels β π°$0.7/1k β Scrape Google Hotels: nightly & total prices, ratings, reviews, deals, star class, coordinates, address, phone & website. One structured row per property (JSON/CSV). Track price changes across runs, enrich every row from Google's own data. API + MCP for AI agents.
Google Hotels Scraper API π°$0.7/1k on Apify β
No credit card required. No commitment. Cancel anytime.
- Click sign up β pick GitHub, Google, or email; takes ~30 seconds
- Open this actor β input is pre-filled with a working example
- Click Start β export results as JSON, CSV, or Excel
Your $5 monthly platform credit is enough to run this actor right away β and again every month β scraping typically several hundred to several thousand results per run, depending on your input.
Incremental mode β Only get new or changed listings since your last run. Content hash per listing β no duplicates, no re-processing.
Change classification β Track unchanged across runs. Build audit trails of how listings evolve over time.
Export anywhere β Download as JSON, CSV, or Excel. Stream via Apify API, webhooks, or integrations with Make, Zapier, Airbyte, Keboola.
Structured data β Every listing returns the same schema with consistent field naming. All fields always present β null when unavailable, never omitted.
Data pipeline automation Integrate with your ETL pipeline to collect structured listings from Google Hotels on a schedule. Export to CSV, JSON, or directly to your database.
Market research Monitor listings, track trends, and analyze market dynamics with structured, deduplicated data from Google Hotels.
Change monitoring Run daily or hourly in incremental mode to capture only new, updated, or expired listings. Perfect for price-tracking, churn analysis, and alerting pipelines.
Lead generation Extract contact details alongside listings to build targeted outreach lists for sales teams, partnerships, or B2B prospecting.
AI / LLM training data Structured JSON per listing is ready for RAG pipelines, embeddings, and agent workflows.
{
"destination": "Paris",
"checkIn": "2026-08-01",
"checkOut": "2026-08-03",
"maxItems": 5
}| Parameter | Type | Default | Description |
|---|---|---|---|
destination |
string | β | Where to search β a city, an area, or a landmark (e.g. Paris, or hotels near Times Square, New York). |
checkIn |
string | β | Check-in date (YYYY-MM-DD). |
checkOut |
string | β | Check-out date (YYYY-MM-DD). Must be after check-in. |
adults |
integer | 2 |
Number of adult guests. |
childrenAges |
array | β | One age (0β17) per child β Google Hotels prices each child by age, so the list is also the number of children. Leave empty for adults only. |
market |
string | "us" |
Point-of-sale country (e.g. us, gb, de, jp). Google prices by this location, so it also decides the currency you see β the currency each hotel was priced in is reported on every record. There is no separate currency control: Google Hotels ignores one. |
language |
string | "en" |
Language code (e.g., en, de, fr). |
searches |
array | β | Search several destinations or date ranges in one run. Each entry takes the same fields as a single search: destination, checkIn, checkOut, and optionally market / language. |
minPrice |
integer | β | Only keep hotels priced at or above this amount per night. In the currency Google prices the search in (see each record's currency). Leave empty for no lower bound. |
maxPrice |
integer | β | Only keep hotels priced at or below this amount per night. Leave empty for no upper bound. |
minRating |
integer | β | Only keep hotels with a guest rating at or above this value (0β5). |
minHotelClass |
integer | β | Only keep hotels of at least this star class (1β5). |
propertyType |
string | β | Only keep properties whose type matches this text (e.g. hotel, hostel, apartment, guest house). Case-insensitive. Leave empty for all types. |
sortBy |
enum | "relevance" |
Order the output. 'Relevance' keeps Google's own ranking. |
maxItems |
integer | β | Maximum number of hotels to return across the whole run. Leave empty for unlimited. |
includeReviews |
boolean | false |
Collect each hotel's full detail profile: the full street address, phone and Google Maps link, room types (with bed configuration and photos), the neighbourhood write-up, nearby rated landmarks, and richer review data (guest highlights, per-source review counts, positive/negative sentiment). Note the overall score, star breakdown and guest sentiment by category are already included for free on every hotel β this adds the deeper per-hotel detail. It does extra work per hotel, so runs take longer and it is billed as a separate per-hotel add-on. Leave off for prices and the free profile only. |
excludeEmptyFields |
boolean | false |
Drop null, empty-string, and empty-array fields from each record before push. Smaller payloads for AI agents and dashboards. |
incremental |
boolean | false |
Track NEW / UPDATED / EXPIRED hotels across runs (price-drop detection). |
emitUnchanged |
boolean | false |
Also output hotels whose price, rating and availability did not change since the last run. |
stateKey |
string | β | Optional. Pin a name to share one incremental tracking history across runs. Leave empty and each distinct search keeps its own isolated history automatically. |
telegramToken |
string | β | Telegram bot token (from @BotFather). Required for Telegram notifications. |
telegramChatId |
string | β | Telegram chat or channel ID where alerts are sent. |
discordWebhookUrl |
string | β | Discord incoming webhook URL. |
slackWebhookUrl |
string | β | Slack incoming webhook URL. |
webhookUrl |
string | β | Universal escape hatch for n8n / Make / Zapier / custom HTTP backends. Receives a JSON POST per run. |
notificationLimit |
integer | 5 |
Maximum number of hotels included in each notification message (1β20). |
notifyOnlyChanges |
boolean | false |
When Incremental tracking is on, only notify for NEW and UPDATED hotels. |
appConnector |
string | β | Optional. Pick a connected app under Settings β API & Integrations to receive your results. A run-summary is written to the connected app; support is best-effort as Apify expands its connector catalog. |
mcpIssueTeam |
string | β | Only when the connected app is an issue tracker: the team (name or ID) the summary issue is created under, if that app requires one. |
Every listing returns the same 32-field schema. Missing values are null β never omitted.
propertyTokentitlesourceUrlscrapedAtsearchQuerycheckIncheckOutnightsnamedealTextpriceNightlypriceTotalpriceDisplaycurrencyratingreviewCountamenityHintslatitudelongitudeaddressLinephonewebsitecheckInTimecheckOutTimehotelClasshotelClassLabelpropertyTypepropertyTypeTagsthumbnailUrlmapsUrlcountryCodetrackedHash
One object per listing. Here is a real example from a production run:
{
"propertyToken": "ChkIjqiq6fm0zNFYGg0vZy8xMWc2bWMwcnZxEAE",
"title": "Best Western 11BAUER Paris Saint-Ouen",
"sourceUrl": "https://www.google.com/travel/hotels/entity/ChkIjqiq6fm0zNFYGg0vZy8xMWc2bWMwcnZxEAE",
"scrapedAt": "2026-07-16T09:00:00.000Z",
"searchQuery": "Paris 2026-08-01 to 2026-08-03",
"checkIn": "2026-08-01",
"checkOut": "2026-08-03",
"nights": 2,
"name": "Best Western 11BAUER Paris Saint-Ouen",
"dealText": null,
"priceNightly": 68,
"priceTotal": 172
}Truncated β full records contain 32 fields. See Output fields for the complete schema.
Try Google Hotels Scraper API π°$0.7/1k now β $5 free credit, no credit card β
Pay only for what you extract. No subscription required β Apify's free $5 credit covers thousands of results.
| Event | Price (USD) |
|---|---|
| Run start | $0.005 |
| Result | $0.0007 |
| Property details | $0.003 |
See the actor on Apify for current pricing.
How do I scrape Google Hotels? Use this actor on Apify to extract structured data from google.com/travel/search. Configure your search query and filters in the input, then click Start β no coding required.
How do I get Google Hotels data as JSON, CSV, or Excel? The actor writes each listing to Apify's dataset. Download as JSON, CSV, or Excel from the Console, stream via the API, or push to Make, Zapier, Airbyte, or Keboola.
Is it legal to scrape Google Hotels? Web scraping of publicly available data is generally legal. This actor only accesses publicly visible information. Always check Google Hotels's terms of service for your specific use case.
How much does it cost? Pay-per-event pricing β you only pay for listings extracted. Apify's free $5 credit is enough to run thousands of results before you pay anything.
How does incremental mode work? Each listing gets a content hash. On subsequent runs, only new or changed listings are emitted β saving time, compute, and storage. Expired listings can be tracked separately.
Do I need an API key or credentials? No. Just sign up for Apify, paste your input, and click Start. No credit card required.
Browse all Black Falcon Data actors β
New to Apify? Create a free account with $5 credit β no credit card required.
- Sign up β $5 platform credit included
- Open Google Hotels Scraper API π°$0.7/1k and configure your input
- Click Start β export results as JSON, CSV, or Excel
Need more later? See Apify pricing.
Black Falcon Data builds production-grade web scrapers for job boards and marketplace data. Browse our full actor catalog at www.blackfalcondata.com.
Last updated: 2026 07