<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: comet data</title>
    <description>The latest articles on DEV Community by comet data (@cometdata98).</description>
    <link>https://dev.to/cometdata98</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4182479%2F6ae58e6b-fd25-48ad-a947-1a9c08db8c03.png</url>
      <title>DEV Community: comet data</title>
      <link>https://dev.to/cometdata98</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cometdata98"/>
    <language>en</language>
    <item>
      <title>I Built a Google Vacation Rentals Scraper That Runs Without a Browser</title>
      <dc:creator>comet data</dc:creator>
      <pubDate>Tue, 13 Oct 2026 14:58:41 +0000</pubDate>
      <link>https://dev.to/cometdata98/i-built-a-google-vacation-rentals-scraper-that-runs-without-a-browser-1beh</link>
      <guid>https://dev.to/cometdata98/i-built-a-google-vacation-rentals-scraper-that-runs-without-a-browser-1beh</guid>
      <description>&lt;p&gt;If you've ever tried to get vacation rental data out of Google Travel, you know the pain. There's no public API, the page data is buried in nested arrays with no field names, and the date and filter parameters are encoded into opaque URL strings.&lt;/p&gt;

&lt;p&gt;I got tired of fighting it, so I built an Apify Actor that does it for me: &lt;strong&gt;&lt;a href="https://apify.com/valie/google-vacation-rentals" rel="noopener noreferrer"&gt;Google Vacation Rentals Scraper&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Give it a destination and a date range, and it returns clean, structured JSON for every listing. It doesn't use a browser, so runs are fast and cheap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get per listing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pricing:&lt;/strong&gt; nightly price and total price for your dates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviews:&lt;/strong&gt; overall rating, review count and individual reviews&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Property details:&lt;/strong&gt; description, amenities, bedrooms, bathrooms, capacity, photos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; neighborhood, nearby restaurants and airports&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Links:&lt;/strong&gt; the Google Travel page &lt;em&gt;and&lt;/em&gt; the original provider URL (Airbnb, Vrbo, Booking.com, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Results paginate automatically until &lt;code&gt;maxResults&lt;/code&gt; is reached or Google runs out of listings. Duplicates are removed, and Google's "Places that don't exactly match your search" suggestions are filtered out, so the dataset stays clean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;

&lt;p&gt;Install the client:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install apify-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Then run it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")

run = client.actor("valie/google-vacation-rentals").call(run_input={
    "place": "Carthage",
    "checkin": "2026-11-29",
    "checkout": "2026-12-05",
    "currency": "USD",
    "minRating": "4.0+",
    "amenities": ["kitchen", "air-conditioned"],
    "maxResults": 50,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item["nightly_price"]["raw"], item["reviews"]["rating"])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Prefer no code? Open the Actor page, fill in the form, click &lt;strong&gt;Start&lt;/strong&gt;, and export as JSON, CSV, Excel or HTML.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sample output
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "Bleu Azur - Sidi Bou Saïd",
  "nightly_price": { "amount": 101.0, "currency_symbol": "$", "raw": "$101" },
  "total_price": { "amount": 406.0, "currency_symbol": "$", "raw": "$406 total" },
  "date_range": "Nov 29 – Dec 5",
  "reviews": { "rating": 4.8, "review_count": 34 },
  "amenities": { "amenities_list": ["Villa", "Sleeps 5", "3 bedrooms"] },
  "original_url": "https://www.example-provider.com/..."
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Prices come back as both numbers and display strings, so you can sort and aggregate immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Filters
&lt;/h2&gt;

&lt;p&gt;You don't have to scrape everything and filter afterwards. The Actor supports:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Filter&lt;/th&gt;
&lt;th&gt;Options&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Price range&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;minPrice&lt;/code&gt;, &lt;code&gt;maxPrice&lt;/code&gt; (nightly)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rating&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;any&lt;/code&gt;, &lt;code&gt;3.5+&lt;/code&gt;, &lt;code&gt;4.0+&lt;/code&gt;, &lt;code&gt;4.5+&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Property type&lt;/td&gt;
&lt;td&gt;apartments, houses, villas, cottages, cabins, other&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amenities&lt;/td&gt;
&lt;td&gt;pool, kitchen, pet-friendly, hot tub, free wi-fi, air-conditioned and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;minimum bedrooms and bathrooms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Market&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;region&lt;/code&gt; and &lt;code&gt;currency&lt;/code&gt;, to see what Google shows travelers in different countries&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What can you build with it?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;price tracker&lt;/strong&gt; that runs daily and alerts you to drops&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Market analysis&lt;/strong&gt; comparing average rates across neighborhoods or seasons&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;travel comparison&lt;/strong&gt; feature for your app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Investment research&lt;/strong&gt; on which property types and amenities earn the most&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-provider checks&lt;/strong&gt;, since each result links back to its original listing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because it runs on Apify, you can schedule runs, trigger webhooks, and connect the output to tools like Make, Zapier, Google Sheets or your own pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;It's pay-per-result, &lt;strong&gt;from $1.00 per 1,000 results&lt;/strong&gt;. A new Apify account comes with free platform credits, so you can try it before paying anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it and tell me what's missing
&lt;/h2&gt;

&lt;p&gt;The Actor is new, and I'd love feedback from people who actually use this kind of data. If there's a field you need, a filter that's missing, or a bug you hit, open an issue on the &lt;a href="https://apify.com/valie/google-vacation-rentals/issues/open" rel="noopener noreferrer"&gt;Actor page&lt;/a&gt; and I'll take a look.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👉 &lt;a href="https://apify.com/valie/google-vacation-rentals" rel="noopener noreferrer"&gt;Try Google Vacation Rentals Scraper on Apify&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Please scrape responsibly: respect the terms of service of Google and the booking providers, avoid personal data, and keep your request volume reasonable.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>python</category>
      <category>api</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
