Skip to main content
Engineering

Beyond the radius: building with Google's Isochrones API

Most "nearby" experiences still cheat: they draw a circle on a map and call it reachability. Isochrones flip that model: instead of "everything within X kilometres," you ask what area someone can actually reach in X minutes. Here's how we applied Google's Isochrones API in AroundMe.

by Justin Boynton7 min read
Isochrone travel-time polygons overlaid on a map

Most “nearby” experiences still cheat.

They draw a circle on a map, query everything inside it, and call it reachability. That works until a river, a motorway junction, or a one-way system intervenes, and suddenly the café “ten minutes away” is twenty-five, while something further out as the crow flies is actually closer on the road.

Isochrones flip that model. Instead of “everything within X kilometres,” you ask: what area can someone actually reach from here in X minutes, given how they travel?

Google’s Isochrones API makes that question a product building block. This article explains what it is, how it works, where it creates business value, and how we applied it in AroundMe: a proof-of-concept that turns a natural-language prompt into places and events you can genuinely get to in time.

Isochrone travel-time polygons overlaid on a map

What is an isochrone?

An isochrone (from Greek iso “equal” + chronos “time”) is a boundary of equal travel time. Points on the edge of the polygon take roughly the same time to reach from an origin under a given travel mode.

Compare that with a radius:

Radius (distance)Isochrone (time)
ShapeCircleIrregular polygon shaped by the road network
Question answered“How far away?”“How long to get there?”
Rivers / barriersIgnoredReflected in the geometry
Typical failure modeFalse confidenceSlightly more complex filtering

For consumer apps, logistics tools, and site-selection products, time is usually what users and operators actually care about. Distance is a proxy that breaks in the real world.

How the Isochrones API works

At a high level, you send Google an origin, a travel mode, a duration, and a travel direction. You get back a GeoJSON MultiPolygon representing a reachable area.

Request shape

POST https://isochrones.googleapis.com/v1/isochrones:generate

Core parameters:

  • Origin: a lat/lng, or a Place resource (places/{place_id})
  • travelMode: WALK, BICYCLE, or DRIVE (public transit is not supported)
  • travelDuration: a Duration string such as "600s" (capped at 120 minutes; 60 minutes for DRIVE)
  • travelDirection: FROM (outbound catchment) or TO (inbound / commute-to catchment)
  • routingPreference: i.e. TRAFFIC_UNAWARE for stable planning polygons, or TRAFFIC_AWARE when live conditions matter
  • enableSmoothing: softens jagged polygon edges for map display

Response shape

The API returns GeoJSON geometry (typically a MultiPolygon). That matters in cities: reachable areas can be disjoint islands (you can reach two neighbourhoods but not the blocked strip between them) and can include holes (inaccessible interiors).

Product implication: treat the response as a filter geometry, not a pretty outline only. Anything you discover afterwards (shops, depots, events) should be tested against that polygon (point-in-polygon), not merely against a bounding box.

A pattern that works in production-minded POCs

  1. Generate the isochrone for the user’s origin and budget
  2. Derive a bounding box for cheap upstream search (Places text search, event APIs with radius, etc.)
  3. Point-in-polygon filter candidates against the MultiPolygon (respecting holes)
  4. Enrich only the survivors (Place Details, photos, ticket deep links)

Skipping step 3 is the classic bug: the map looks correct, but results leak in from unreachable corners of the bounding box.

Example use cases

Isochrones are valuable wherever “can we get there / serve there in time” beats “is it nearby on a ruler.”

1. Delivery and field operations

Outbound (FROM) polygons answer: From this depot, which customers can we reach in a 30-minute SLA?

Teams use that for:

  • Serviceable-area maps on signup
  • Dispatch rules that refuse out-of-SLA orders
  • Comparing warehouse locations before committing lease cost

Unlike radius, the polygon follows the road network your drivers actually use.

2. Commute and workforce planning

Inbound (TO) polygons answer: Where can employees live and still reach the office in 45 minutes?

Useful for:

  • Site selection for a new HQ or clinic
  • Talent-market mapping for hiring campaigns
  • Benefits tooling (“homes within X minutes of campus”)

3. Retail catchment and media

Retail brands often buy media or open stores against drive-time trade areas. Isochrones replace hand-drawn catchments with something reproducible and updatable, especially when you recompute under TRAFFIC_AWARE for peak hours.

4. Healthcare and public services

Planners ask whether essential services are reachable within policy thresholds (e.g. “15-minute walk to a pharmacy”). Isochrones turn that from a slide-deck claim into a measurable layer.

5. Consumer local discovery

This is where Around Me sits: help someone with limited time find something they can actually do before their next commitment, not something that merely looks close.

AroundMe: a short implementation story

AroundMe is a thin POC built on our Spydr starter stack. The product promise is simple:

Tell us what you want to do and how long you can travel. We’ll show places and events inside the reachable area.

The user journey

  1. Origin: browser geolocation, address search, or a map pin
  2. Prompt: e.g. “Comedy nights within an hour by bus” or “Good sushi within 10 minutes walk”
  3. Interpretation: heuristics extract activity, travel mode, duration, and whether we should look for places, ticketed events, or both
  4. Isochrone: server calls Isochrones (FROM, mode, clamped duration, smoothing on)
  5. Discovery: Places Text Search (bounding box → Point In Polygon → Details/Photos) plus Ticketmaster and Google Events (SerpApi), also PIP-filtered and merged
  6. UI: map overlay of the MultiPolygon, markers, rich cards, deep links to ticket or info sites

Design choices that mattered

Time over distance. A walk isochrone and a drive isochrone for the same “30 minutes” look nothing alike. The product UI always shows the polygon so users trust the filter.

1 hour’s walk 10 minute drive

Server-owned secrets. Isochrones, Places, and event APIs run from Route Handlers. The browser never sees web-service keys.

Honest limitations. The Isochrones API does not support transit. When someone asks for “by bus”, we surface that and fall back to a drive-time budget rather than inventing a tube network. Drive durations are clamped to the API’s 60-minute maximum.

Cheap search, expensive enrichment. We search broadly inside the bounding box, discard unreachable candidates with Turf point-in-polygon, then pay for Place Details / photos only for relevant results.

Natural language as the primary control. Seed prompts like “Quiet park within 10 minutes walk” double as product demos and regression fixtures for the parser.

The result is a small surface area with a clear story for stakeholders: radius lies; travel time doesn’t.

What product and engineering leaders should take away

For businesses evaluating location-heavy products: if your users think in minutes, your backend should too. Isochrones turn a fuzzy “nearby” promise into a defensible product rule, useful in logistics SLAs, store catchments, and consumer trust.

For engineers: the API is approachable, one generate call, GeoJSON out, but the craft is in the surrounding system: clamping, FROM vs TO, traffic preference, MultiPolygon-aware filtering, and not overspending on details for unreachable candidates. Preview APIs also demand isolation (a thin client module) so request shapes can evolve without rewriting the product.

If you are exploring a travel-time product, or want a partner to prototype something like AroundMe on a modern Next.js stack, that is exactly the class of problem we like to ship: clear user value, real map constraints, and an implementation path from POC to production.


Further reading