/ Google Maps SKU Calculator
Search Directory (144) Maps APIs Hub Master Matrix
✦ AUTOCOMPLETE KEYSTROKE TRAP ARBITRAGE 2026

Google Maps 2026
SKU Shock & Session Token Calculator

Model the cost difference between un-debounced autocomplete keystrokes ($2.83/1k session) versus Mapbox and Radar geolocation migrations.

Critical: Places Autocomplete without session tokens = $2.83/1k keystrokes × 6 keystrokes/search = $16.98/1k searches. Implementing session tokens cuts this to $17.00/1k sessions (same total, but predictable)

Monthly API Usage Volume

Session Tokens Implemented? Groups keystrokes into 1 session ($17/1k) vs per-keystroke ($2.83/1k)
Google Maps Platform Monthly Invoice
$2,110 / mo
Autocomplete: $1,700 · Geocoding: $250 · Directions: $125 · Map loads: $280
$0.00 free credit applied (removed March 2025)

Migration Alternative Comparison

Mapbox Platform
Search Box $4.50/1k · Geocoding $0.75/1k · 50k free/mo
$388 / mo
Save $1,722 / mo (−81.6%)
Radar.io
Geocoding $0.50/1k · Search $3.00/1k · Geofencing built-in
$295 / mo
Save $1,815 / mo (−86.0%)
HERE Maps Platform
Geocoding $1.00/1k · Autocomplete $2.00/1k · 250k free/mo
$420 / mo
Save $1,690 / mo (−80.1%)
OpenStreetMap (Nominatim)
Self-hosted Nominatim + Tile server. Engineering effort: 2–4 weeks
~$80 / mo
Server hosting cost only
Session Token Advice Session tokens are enabled. Your autocomplete cost is $17/1k sessions. Disabling them would cost $2.83/1k keystrokes × ~6 keystrokes/search = ~$17/1k searches (similar total, but if users type 10+ chars it rapidly multiplies).
Google Maps Platform SKUs (2026)

Complete Google Maps API Pricing Table

API / SKU Price (0–100k req) Price (100k–500k) Price (500k+) Mapbox Equivalent Savings
Places Autocomplete (session)$17.00 / 1k sessions$14.45 / 1k$11.90 / 1k$4.50 / 1k (Search Box)−74%
Places Autocomplete (per-keystroke)$2.83 / 1k keystrokes$2.41 / 1k$1.98 / 1k$4.50 / 1k session
Geocoding API$5.00 / 1k requests$4.00 / 1k$3.00 / 1k$0.75 / 1k−85%
Directions API (Basic)$5.00 / 1k requests$4.00 / 1k$3.00 / 1k$2.00 / 1k−60%
Dynamic Maps (JS API)$7.00 / 1k loads$5.60 / 1k$4.20 / 1k$2.50 / 1k−64%
Static Maps API$2.00 / 1k requests$1.60 / 1k$1.20 / 1k$0.00 (free)−100%
Place Details$17.00 / 1k requests$13.60 / 1k$10.20 / 1k$8.00 / 1k−53%
Distance Matrix$5.00 / 1k elements$4.00 / 1k$3.00 / 1k$2.00 / 1k−60%
All prices USD. Google Maps SKU pricing effective 2026. Volume discounts apply automatically. No $200 monthly credit available since March 2025.
Cost Reduction Patterns

Google Maps Session Token Implementation

Session tokens are the single most impactful optimization for Places Autocomplete users. Without session tokens, each HTTP request to the Autocomplete API is billed separately at $2.83/1k and a typical user generates 5–8 keystrokes per address search. Session tokens group all keystrokes into a single billable "session" at a flat $0.017 per session regardless of keystroke count.

Without Session Tokens (Expensive)

# User types: "123 Main St New York" # = 22 characters = 22 separate API calls # Billed as: 22 × $0.00283 = $0.0623 per search # At 100k searches/month: $6,225/month const service = new AutocompleteService(); service.getPlacePredictions( { input: userTypedSoFar }, handlePredictions ); # PROBLEM: No sessionToken provided → per-keystroke billing

With Session Tokens (Optimized)

# Generate one token per user search session const sessionToken = new AutocompleteSessionToken(); # Pass token with every keystroke request service.getPlacePredictions( { input: userTypedSoFar, sessionToken }, handlePredictions ); # On place selection → call PlaceDetails with same token # Result: entire session billed as 1 request = $0.017 # vs $0.06+ without tokens → 73% cost reduction
When Session Tokens Break (Common Bug) Session tokens ONLY work if you pass the same token through the entire Autocomplete → PlaceDetails call chain. If you generate a new token per keystroke, or forget to pass the token to getDetails(), Google reverts to per-keystroke billing silently. Audit your implementation: check your monthly invoice for unexpected "Autocomplete per keystroke" line items.
FAQ

Google Maps Pricing Frequently Asked Questions

Did Google Maps remove the $200 free credit?
Yes. Google Maps Platform removed the $200 monthly recurring free credit for all accounts starting March 1, 2025. Previously, every account received $200 of free API usage per month enough for ~40,000 Geocoding calls, ~28,571 Autocomplete sessions, or ~28,571 Dynamic Map loads. After removal, all usage is billed from the first request with no free-tier buffer.
How much do Google Maps session tokens save?
Dramatically. Without session tokens, each Autocomplete keystroke is billed at $2.83/1k. A typical user typing 6 characters generates 6 API calls = $0.017 per search (same as 1 session). But users who type slowly or make long queries (20+ chars) pay $0.057 or more per search without session tokens. With session tokens, all keystrokes in a search are bundled into 1 session at a flat $0.017 regardless of how many characters were typed a 70–90% saving for long-query users.
Is Mapbox cheaper than Google Maps?
For most application use cases, yes significantly cheaper. Mapbox Search Box API charges $4.50/1k sessions (vs $17.00 for Google Places Autocomplete), Geocoding is $0.75/1k (vs $5.00), and Directions is $2.00/1k (vs $5.00). Mapbox also offers 50,000 free sessions per month. The S3-compatible migration path (change API endpoint, update JS SDK to Mapbox GL) typically takes 1–3 days for most web apps.
What is the Google Maps Geocoding API price per request in 2026?
Google Geocoding API is billed at $5.00 per 1,000 requests for the first 100,000 monthly requests, $4.00/1k for 100k–500k, and $3.00/1k above 500k. Each forward geocode (address → coordinates) or reverse geocode (coordinates → address) counts as one request. The old $200 credit previously covered the first 40,000 monthly geocodes for free.
What is the cheapest way to use Google Maps for high-volume geocoding?
For batch geocoding (millions of addresses for internal use, not real-time), consider: (1) Google's Batch Geocoding via the Maps API is still billed per-request but volume discounts at 500k+ requests bring the price to $3.00/1k. (2) OpenStreetMap's Nominatim (free, self-hosted) handles millions of geocodes/day with no API cost beyond server hosting (~$80/mo). (3) Mapbox Batch Geocoding is $0.75/1k requests with the same volume discounts.

Google Maps Platform Architecture: SKU Splitting & $200 Monthly Credit TCO

Google Maps Platform provides every billing account with a $200 monthly free credit, but its multi-tiered SKU matrix can lead to rapid budget exhaustion. While basic map loads cost $7.00 per 1,000 loads, Places API - Place Details costs $17.00/1k, and Atmosphere Data (reviews, user photos, ratings) charges an additional $5.00/1k. Failing to specify exact field masks in API requests automatically defaults to fetching all atmospheric data fields, tripling per-request SKU charges.

Maps Platform SKU Price per 1,000 Requests Free Credit Volume Limit Cost per 50,000 Requests Field Mask Requirement
Dynamic Maps (JS SDK) $7.00 / 1k 28,571 map loads $350.00 ($150 after credit) Standard map container render
Place Details (Basic Data only) $17.00 / 1k 11,764 requests $850.00 ($650 after credit) fields=formatted_address,geometry
Place Details (Unmasked All-Data) $25.00 / 1k (Atmosphere included) 8,000 requests $1,250.00 ($1,050 after credit) Omitted fields param = 3x bill

Production Pipeline: Session Token Autocomplete & Field-Mask Optimization

Using Autocomplete Session Tokens groups multiple keystroke character lookups into a single billing SKU alongside Place Details:

import { v4 as uuidv4 } from 'uuid';

export class MapsLocationClient {
  private sessionToken = uuidv4();

  public async getPlaceDetails(placeId: string) {
    // CRITICAL: Always include explicit 'fields' parameter to prevent Contact/Atmosphere SKUs
    const url = new URL('https://maps.googleapis.com/maps/api/place/details/json');
    url.searchParams.append('place_id', placeId);
    url.searchParams.append('fields', 'formatted_address,geometry/location,name');
    url.searchParams.append('sessiontoken', this.sessionToken);
    url.searchParams.append('key', process.env.GOOGLE_MAPS_API_KEY!);

    const response = await fetch(url.toString());
    const data = await response.json();
    
    // Refresh session token for the next user transaction
    this.sessionToken = uuidv4();
    return data.result;
  }
}

Production Best Practices & Budget Guardrails

4.9 out of 5
★★★★★
Developer Community Benchmark Rating
Verified across 167 community production token & cost audits
Rate this benchmark: