I like data and cannot lie
Objective: Find new cafes around Montreal to try out
Problem statement: finding cafes randomly can be tedious and blog sites often repeat known cafes
Solution: Using Google Place API with a modern data stack to fetch and filter out cafes to an updating list of cafes based on Google Reviews and recent review activity to find trending places
Google Sheet, App Script, BigQuery, Google Place API, ChatGPT/Gemini, Cloudflare
First to validate my idea would work, I went with what I know best, Google Sheets + App Scripts. I had to create a new API Key within my GCP with access to Google Place API, plus a few geo functions as I need to determine Latitude and Longitude for my search.
Google Place API has two important restrictions that made it hard to search for all cafes in the city.
Initially, I focused API calls on individual neighborhoods using text search. Even then, some areas were too large. Switching to Forward Sortation Area (first 3 characters of postal codes) with custom radius helped stay under limits, producing ~650 cafes. Downtown dense areas required multiple smaller grids (250m radius) and deduplication downstream.
For reviews, since only 5 per place were accessible, I fetch daily snapshots to accumulate data over time. This helps track trending places by short-term review spikes.
To visualize the search grid coverage, I plotted existing data with lat/long and search radius.
Accidentally exceeded the free tier twice while testing, requiring minor payments and a Google billing adjustment. Switching from Google Maps to Leaflet reduced billing risk while retaining visualization capabilities.
[WIP] Data architecture
| API Request Type | Free Tier | Paid Pricing (After Free Tier) |
|---|---|---|
| Basic Data (Nearby/Text Search) | ✅ 1000 free requests per month | $7 per 1000 requests |
| Atmosphere Data (rating, user_ratings_total) | ❌ No free tier | $14 per 1000 requests |
| Place Details (Basic Info) | ✅ 1000 free requests per month | $17 per 1000 requests |
| Place Details (Premium: Website, Phone) | ❌ No free tier | $34 per 1000 requests |
Note: Google has updated the Places API abilities and pricing, and each search point is now limited to 20 results instead of 60. I'm working on refining the search pattern to ensure full coverage of Montreal cafes while staying within API limits.