Protobuf Endpoints & Internal APIs
Google Maps Internal Protobuf API
Google Maps communicates with its backend using Protocol Buffer (protobuf) encoding over HTTP. Several internal endpoints have been documented.
tbm=map Search Endpoint
Adding tbm=map to a Google search returns protobuf-over-JSON instead of HTML. Single HTTP request, no browser rendering needed.
https://www.google.com/search?tbm=map&hl=en&q=restaurants+in+berlin&tch=1&ech=1
Returns: nested arrays parseable with JSON indexing — business names, ratings, review counts, categories, addresses, coordinates, thumbnails.
/maps/preview/place — Place Details
Returns protobuf-over-JSON place details via a pb parameter with feature ID embedded. More stable than HTML scraping — follows internal schema, not frontend layout.
/maps/vt/pb — Tile Endpoint
Map tile requests containing ~730 fields across ~125 protobuf messages. Uses !-separated text-based protobuf with type characters (s, i, d, f, j, u, v, x, y, g, h, n, o, e, z, B, b, m).
window.APP_INITIALIZATION_STATE
Google Maps embeds data in window.APP_INITIALIZATION_STATE in the HTML response. No headless browser needed:
JSON.parse(window.APP_INITIALIZATION_STATE[3][2].split("'\n")[1])
Source: r/webscraping
Protobuf Pagination Details
- PSI parameter: stored in
window.APP_OPTIONS[11], changes after each page reload — no static URL construction possible - Altitude formula:
altitude = (27.3611 * 6371010 * 768 * cos(lat)) / (2^zoom * 256) - Pagination:
!7i20= 20 results/page,!8i[offset]= offset (increments of 20) - Responses: served through
f.txtendpoint with "XHR1" signature
Data Available
Potentially everything visible in the Maps UI: full review text with timestamps, all photos, Q&A, popular times histograms, wait times, related places, owner responses — far exceeding the official API's 5-review limit.
Fragility Warning
Google's cryptographic constants rotate continuously. SearchGuard makes "reverse-engineered bypasses obsolete within minutes." One Reddit user reported successfully building a pure HTTP/protobuf scraper that reduced costs from $50K/mo to $1K/mo — but maintenance is constant.