Google Maps Platform community node — Geocoding, Directions, Distance Matrix, Timezone

Just published something I’ve been working on: n8n-nodes-google-maps-platform, a community node for Google Maps Platform.

Google Maps has apparently been one of the most-requested integrations in the n8n community for years, but there’s still no official node. The usual workaround is a bunch of HTTP Request nodes, so I figured… why not just build the integration properly?

It currently supports:

  • Geocoding — address ↔ coordinates
  • Directions (Get Route) — origin/destination, optional waypoints, distance, duration, and polyline
  • Distance Matrix — multiple origins × destinations with distance/duration for each pair
  • Timezone — coordinates + timestamp → IANA timezone ID

One thing I was careful about: Directions and Distance Matrix use Google’s current Routes API, rather than the old legacy endpoints. Those APIs are feature-frozen and can’t even be enabled on a new Google Cloud project anymore, so I didn’t want to build a new node around something that’s already on its way out.

Install: Settings → Community Nodes → n8n-nodes-google-maps-platform

Repo & docs:

I included a walkthrough for setting up Google credentials, some of the billing gotchas I ran into, and a real example with actual output.

The billing part is worth mentioning: Google requires a billing account even if you’re using the free tier, and Distance Matrix is billed per element (origins × destinations), not per API request.

There’s also an example where you geocode a list of property addresses and then calculate the distance/duration to a set of amenities in a single batch call. The README includes screenshots from the actual run.

The nodes can also be used as tools by n8n AI Agent nodes, if that’s something you’re working with.

It’s brand new and hasn’t been officially verified yet. If you try it and something breaks, please open an issue on GitHub — I’d genuinely like to fix it.

Update: v0.1.4 is on npm — mostly things that came out of using the node on real workflows, plus a couple of gaps a fork exposed.

Update from Settings → Community Nodes, or:

npm install n8n-nodes-google-maps-platform@0.1.4

New

  • Departure Time / Arrival Time on both Get Route and Get Distance & Duration. Arrival Time is transit-only, the two are mutually exclusive, and both are converted to RFC 3339 for you. If you’re using Traffic Aware / Traffic Aware Optimal, this is what makes it meaningful — without a departure time you were paying Pro-tier pricing for “now” traffic.
  • Coordinates and Place ID as origin/destination on Get Route, so you can chain straight off a Geocode node’s lat/lng or place_id instead of paying for a second geocoding round-trip. Defaults to Address, so existing workflows are untouched.
  • Additional Fields on every operation — language, region and components for Geocoding; units, avoid tolls/highways/ferries, alternative routes, and waypoint order optimization for the Routes-based ones.
  • Include Steps toggle on Get Route (default off). Turn-by-turn legs, instructions and per-step polylines are a big payload that gets stored in every execution record; now the field mask only asks Google for them when you actually want them.
  • Request Options → Batching on the node, defaulting to 10 items / 1000 ms. Feeding a lot of input items used to fire one concurrent request per item and trip Google’s per-minute quota, aborting the whole run.

Fixed

  • Transit routes failing. Google’s Routes API rejects routingPreference for non-driving modes and rejects intermediate waypoints for transit; those fields are now stripped before the request goes out.
  • Timezone no longer errors on ZERO_RESULTS. A coordinate with no known timezone (usually a point in the ocean) is data, not a failure — one bad row no longer aborts the batch.
  • Distance Matrix address cap. Google’s separate “origins + destinations ≤ 50” rule wasn’t enforced, so something like 40×15 passed local validation and came back as a raw 400 from Google. It’s now caught with a clear message before the request.
  • Node subtitle showed raw values (getDistanceDuration: distanceMatrix) instead of the labels.
  • Credential help link landed at the top of the README instead of the credential setup steps.
  • Routing Preference options are now in the same order on both operations.

Billing note

Two Wheeler travel mode bills at Google’s Enterprise tier — 1,000 events/month free, the smallest of the three. It’s now labelled as such in the dropdown and in the README’s billing section, alongside the existing Pro-tier notes for traffic-aware routing.

Credit

The departure/arrival time support and the transit fix were ported from @JeronimoMendes’s fork, which found a real gap in the original implementation. Thank you!

Bug reports and feature requests are welcome, here or on GitHub.