<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Plaza Docs | Blog</title><description/><link>https://docs.plaza.fyi/</link><language>en</language><item><title>Plaza: The Geospatial Layer for AI</title><link>https://docs.plaza.fyi/blog/plaza-geospatial-layer-for-ai-agents/</link><guid isPermaLink="true">https://docs.plaza.fyi/blog/plaza-geospatial-layer-for-ai-agents/</guid><description>Every AI agent that interacts with the physical world needs geospatial data. Most of them are calling APIs that weren&apos;t designed for this.

</description><pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every AI agent that interacts with the physical world needs geospatial data. Most of them are calling Google Maps or Mapbox — APIs built for rendering web maps, not for tool use by language models. Those APIs are expensive, require stitching multiple providers together, and return inconsistent response formats across endpoints.&lt;/p&gt;
&lt;p&gt;Plaza is a single geospatial data API with billions of features — the full OpenStreetMap planet, curated open datasets, and custom user data. &lt;a href=&quot;https://docs.plaza.fyi/guides/geocoding&quot;&gt;Geocoding&lt;/a&gt;, &lt;a href=&quot;https://docs.plaza.fyi/guides/directions&quot;&gt;routing&lt;/a&gt;, search, &lt;a href=&quot;https://docs.plaza.fyi/guides/isochrones&quot;&gt;isochrones&lt;/a&gt;, distance matrices, elevation, map matching, route optimization, and — critically — arbitrary spatial queries via &lt;a href=&quot;https://docs.plaza.fyi/guides/plazaql&quot;&gt;PlazaQL&lt;/a&gt;. One base URL, one auth mechanism, GeoJSON everywhere.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;plazaql-as-a-graph-query-language&quot;&gt;PlazaQL as a graph query language&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Think about what people actually ask AI assistants:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“I need to get to the office, but I need to stop by the pharmacy on the way”&lt;/li&gt;
&lt;li&gt;“Find me a coffee shop with wifi near a subway station in Manhattan”&lt;/li&gt;
&lt;li&gt;“Where can I charge my EV between here and Portland?”&lt;/li&gt;
&lt;li&gt;“What parks are within a 15-minute walk?”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These sound simple, but with traditional APIs they’re multi-step nightmares. “Stop by the pharmacy on the way” means: geocode the origin, geocode the destination, find pharmacies, figure out which ones are near the route, re-route through the best one. That’s 4-5 API calls across potentially different providers.&lt;/p&gt;
&lt;p&gt;With Plaza, each of these is a single query.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;plazaql-a-query-language-over-the-planet&quot;&gt;PlazaQL: a query language over the planet&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The real power is &lt;a href=&quot;https://docs.plaza.fyi/guides/plazaql&quot;&gt;PlazaQL&lt;/a&gt;. It lets an agent query billions of features like a graph database. Things that would take multiple API calls with any other provider become a single query:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“I need to stop by a pharmacy on the way to work”:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;$r = route(origin: point(40.748, -73.993), destination: point(40.755, -73.970));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;search(node, amenity: &quot;pharmacy&quot;).around(200, $r).sort(distance($r));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;One query: compute the route, find pharmacies within 200m of it, sort by distance. With Google Maps this is 3 separate API calls across 2 different services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Find coffee shops with wifi near subway stations in Manhattan”:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;$manhattan = boundary(name: &quot;Manhattan&quot;, admin_level: &quot;7&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;$subway = search(node, railway: &quot;subway_entrance&quot;).within(geometry: $manhattan);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;search(node, amenity: &quot;cafe&quot;, internet_access: &quot;wlan&quot;).around(200, $subway);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Resolve Manhattan’s boundary, find subway entrances inside it, then find cafes with wifi within 200m of those entrances. A multi-hop spatial query in a single POST.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Where can I charge my EV between Portland and Seattle?”:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;$r = route(origin: point(45.52, -122.68), destination: point(47.61, -122.33));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;search(node, amenity: &quot;charging_station&quot;).around(5000, $r).sort(distance($r));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;“What parks are within a 15-minute walk?”:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;search(way, leisure: &quot;park&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.within(isochrone(center: point(40.748, -73.993), time: 900, mode: &quot;foot&quot;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Each query goes in the &lt;code dir=&quot;auto&quot;&gt;data&lt;/code&gt; field of one POST to &lt;code dir=&quot;auto&quot;&gt;https://plaza.fyi/api/v1/query&lt;/code&gt;, and GeoJSON comes back. LLMs are good at generating PlazaQL from natural language — give the agent one tool that accepts a query string and it can answer almost any spatial question.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;isochrones-whats-within-reach&quot;&gt;Isochrones: “what’s within reach?”&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;When a user asks “What’s within a 15-minute walk?”, an &lt;a href=&quot;https://docs.plaza.fyi/guides/isochrones&quot;&gt;isochrone&lt;/a&gt; gives you the exact reachable area as a polygon:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-X&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;POST&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://plaza.fyi/api/v1/isochrone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-H&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;x-api-key: pk_live_YOUR_KEY&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-H&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Content-Type: application/json&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{&quot;geometry&quot;: {&quot;type&quot;: &quot;Point&quot;, &quot;coordinates&quot;: [-73.993, 40.748]}, &quot;time&quot;: 900, &quot;mode&quot;: &quot;foot&quot;}&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;time&lt;/code&gt; is in seconds and &lt;code dir=&quot;auto&quot;&gt;mode&lt;/code&gt; is &lt;code dir=&quot;auto&quot;&gt;auto&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;foot&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;bicycle&lt;/code&gt;. The agent gets back a GeoJSON polygon it can use to filter results, display on a map, or feed into the next query. Combine it with PlazaQL to find specific things within that reachable area.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;why-this-matters&quot;&gt;Why this matters&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The difference between a fixed list of endpoints and a query language over a planet-scale graph is the difference between an agent that can answer pre-defined questions and one that can reason about physical space.&lt;/p&gt;
&lt;p&gt;An agent with Plaza can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Compose multi-hop spatial queries&lt;/strong&gt; — “Find cafes near subway stations in Manhattan” becomes a single query using variables and area resolution&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search along routes&lt;/strong&gt; — &lt;code dir=&quot;auto&quot;&gt;route()&lt;/code&gt; computes a route, then &lt;code dir=&quot;auto&quot;&gt;.around(200, $r)&lt;/code&gt; finds things near it — no separate API calls&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filter by arbitrary attributes&lt;/strong&gt; — OSM has millions of tags: &lt;code dir=&quot;auto&quot;&gt;cuisine=sushi&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;wheelchair=yes&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;opening_hours&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;height&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;building:levels&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use named areas as boundaries&lt;/strong&gt; — Query by city, country, neighborhood, or any administrative boundary without knowing coordinates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transform results inline&lt;/strong&gt; — &lt;code dir=&quot;auto&quot;&gt;.buffer()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;.sort(distance($r))&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;.limit()&lt;/code&gt; process geometry server-side before returning&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;mcp-server&quot;&gt;MCP server&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza doesn’t have a published MCP server today. We’re rebuilding it, and there’s no date yet. Once it’s out, MCP-compatible agents will be able to geocode, route, search, and run PlazaQL queries without glue code.&lt;/p&gt;
&lt;p&gt;You don’t need it to start. Give your agent &lt;a href=&quot;https://plaza.fyi/llms.txt&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;plaza.fyi/llms.txt&lt;/code&gt;&lt;/a&gt; or the OpenAPI spec and it can call the REST API directly. The &lt;a href=&quot;https://docs.plaza.fyi/guides/ai/&quot;&gt;Use with AI&lt;/a&gt; guide shows how.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-plaza-doesnt-do&quot;&gt;What Plaza doesn’t do&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza covers the spatial data layer — geometry, topology, routing, search. It doesn’t have real-time traffic, Street View imagery, or business reviews. If your agent needs to know whether a restaurant is currently busy, you’ll need another provider for that.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;get-started&quot;&gt;Get started&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Grab an API key from &lt;a href=&quot;https://plaza.fyi/dashboard&quot;&gt;plaza.fyi/dashboard&lt;/a&gt; (free tier, no credit card) and point your agent at &lt;a href=&quot;https://plaza.fyi/llms.txt&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;llms.txt&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;More: &lt;a href=&quot;https://docs.plaza.fyi/api&quot;&gt;API reference&lt;/a&gt; · &lt;a href=&quot;https://docs.plaza.fyi/guides/ai/&quot;&gt;Use with AI&lt;/a&gt;&lt;/p&gt;</content:encoded><category>ai</category><category>agents</category><category>mcp</category><category>function-calling</category></item><item><title>Plaza vs Mapbox</title><link>https://docs.plaza.fyi/blog/plaza-vs-mapbox/</link><guid isPermaLink="true">https://docs.plaza.fyi/blog/plaza-vs-mapbox/</guid><description>Mapbox is a solid product. Here&apos;s a direct comparison on features, pricing, data rights, and AI readiness.

</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mapbox makes good maps. If you need custom map rendering, their GL JS and Studio tools are best-in-class. The vector tile rendering, 3D terrain, and mobile SDKs are impressive engineering.&lt;/p&gt;
&lt;p&gt;But if what you need is geospatial data — geocoding, routing, spatial queries, feeding location context to an AI agent — the comparison looks different. Here’s a direct breakdown.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;feature-comparison&quot;&gt;Feature comparison&lt;/h2&gt;&lt;/div&gt;
























































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Plaza&lt;/th&gt;&lt;th&gt;Mapbox&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Forward geocoding&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Reverse geocoding&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Autocomplete&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes (part of geocoding)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://docs.plaza.fyi/guides/batch-geocoding&quot;&gt;Batch geocoding&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Routing&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://docs.plaza.fyi/guides/directions#navigation&quot;&gt;Turn-by-turn data&lt;/a&gt; (steps, voice and banner instructions, lanes, exits)&lt;/td&gt;&lt;td&gt;Yes (Mapbox Directions response shape)&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Live traffic&lt;/td&gt;&lt;td&gt;No (time-of-day profiles)&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Isochrones&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Distance matrix&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Map matching&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Route optimization&lt;/td&gt;&lt;td&gt;Yes (50 stops)&lt;/td&gt;&lt;td&gt;Yes (25 waypoints)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Full-text search&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Limited (geocoding-based)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Elevation&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes (Tilequery)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://docs.plaza.fyi/guides/plazaql&quot;&gt;PlazaQL&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Vector tiles&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes (core product)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Custom datasets&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Yes (Tilesets/Datasets API)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MCP server for AI&lt;/td&gt;&lt;td&gt;Not yet&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Custom map styling&lt;/td&gt;&lt;td&gt;No (data API only)&lt;/td&gt;&lt;td&gt;Yes (Studio, GL JS)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mobile map SDKs&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Yes (iOS, Android, Flutter)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Static map images&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3D terrain/buildings&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Navigation SDK (on-device guidance)&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Plaza covers more data and query capabilities. Mapbox covers more rendering, plus the client side of navigation. These are different products that overlap in the middle.&lt;/p&gt;
&lt;p&gt;One thing worth noting: Plaza serves billions of geospatial features, the full OpenStreetMap planet plus curated open datasets, from a single API. That is how it offers PlazaQL and complex spatial queries alongside geocoding and routing. Most providers need multiple specialized services to cover the same feature set.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;pricing&quot;&gt;Pricing&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Mapbox prices each API separately and offers generous free tiers per SKU. Plaza uses flat monthly plans with a single request pool.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;mapbox-pricing-published-rates&quot;&gt;Mapbox pricing (published rates)&lt;/h3&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Geocoding (v6):&lt;/strong&gt; 100K free/mo, then ~$5/1K&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Directions:&lt;/strong&gt; 100K free/mo, then ~$5/1K&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matrix:&lt;/strong&gt; 100K free elements/mo, then varies by volume&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isochrone:&lt;/strong&gt; 100K free/mo, then ~$5/1K&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimization:&lt;/strong&gt; 100K free/mo, 25-waypoint limit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Map loads (GL JS):&lt;/strong&gt; 50K free/mo, then $5/1K&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h3 id=&quot;plaza-pricing&quot;&gt;Plaza pricing&lt;/h3&gt;&lt;/div&gt;






























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Plan&lt;/th&gt;&lt;th&gt;Included requests&lt;/th&gt;&lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Free&lt;/td&gt;&lt;td&gt;500 std/day + 50 premium/day&lt;/td&gt;&lt;td&gt;$0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pro 100K&lt;/td&gt;&lt;td&gt;100,000/mo&lt;/td&gt;&lt;td&gt;$50/mo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pro 300K&lt;/td&gt;&lt;td&gt;300,000/mo&lt;/td&gt;&lt;td&gt;$150/mo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pro 1M&lt;/td&gt;&lt;td&gt;1,000,000/mo&lt;/td&gt;&lt;td&gt;$500/mo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Overage: $0.50/1K standard, $1.50/1K premium. Premium endpoints (routing, isochrone, distance matrix) carry a 4x multiplier against your included allocation.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;running-the-numbers&quot;&gt;Running the numbers&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Scenario 1: 100K geocoding + 50K routing requests per month&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mapbox:&lt;/strong&gt; Both within free tiers. &lt;strong&gt;$0/mo.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plaza:&lt;/strong&gt; 100K standard + 50K x 4 premium multiplier = 300K effective requests. Pro 300K plan. &lt;strong&gt;$150/mo.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At this volume, Mapbox’s per-SKU free tiers are hard to beat on price alone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scenario 2: 500K geocoding + 200K routing + 100K matrix per month&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mapbox:&lt;/strong&gt; Past free tiers on all three SKUs. Geocoding: ~$2,000. Routing: ~$500. Matrix: varies, estimate ~$500-1,000. &lt;strong&gt;Roughly $2,500-3,500/mo.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plaza:&lt;/strong&gt; 500K + (200K x 4) + (100K x 4) = 1.7M effective requests. Pro 1M plan ($500) + 700K overage at blended rate. &lt;strong&gt;Roughly $850/mo.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The crossover happens around 200-300K total requests. Below that, Mapbox’s free tiers win. Above that, Plaza’s flat pricing pulls ahead, and the gap widens with volume.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;data-rights&quot;&gt;Data rights&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza serves open data — OpenStreetMap (ODbL-licensed) plus curated open datasets — so you can cache results, display them on any map, and use them in AI pipelines. Mapbox uses proprietary data with restrictions: results must be displayed on Mapbox maps, caching is temporary only, and reuse in AI training or vector databases is not permitted.&lt;/p&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Plaza&lt;/th&gt;&lt;th&gt;Mapbox&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Cache results permanently&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Temporary only&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Display on non-Mapbox maps&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No (per ToS section 3)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Use in AI training data&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Store in vector DB for RAG&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Map renderer lock-in&lt;/td&gt;&lt;td&gt;None&lt;/td&gt;&lt;td&gt;GL JS required for map display&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The display restriction catches people off guard. If you’re building with Leaflet, MapLibre, or no map at all, Mapbox’s terms create a contractual problem. Plaza has no renderer dependency.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;ai-readiness&quot;&gt;AI readiness&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;There’s no MCP server right now. It’s being rebuilt, with no release date. Today, agents can read &lt;a href=&quot;https://plaza.fyi/llms.txt&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;llms.txt&lt;/code&gt;&lt;/a&gt; or the OpenAPI spec and call the REST API to geocode addresses, find nearby points of interest, calculate routes, and run PlazaQL queries. Agents can cache and reuse results across sessions, which is how most RAG and agent architectures need to work.&lt;/p&gt;
&lt;p&gt;Mapbox has no MCP server and no published AI agent tooling. If geospatial data is part of your AI stack, tooling and caching freedom matter as much as per-request pricing.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;where-mapbox-wins&quot;&gt;Where Mapbox wins&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Mapbox is a map rendering company that also does data APIs. Plaza is a data API company that doesn’t do map rendering. That distinction matters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mapbox is the better choice when you need:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Custom map styling.&lt;/strong&gt; Mapbox Studio is the best visual map design tool available. If your product’s value depends on how the map looks, this is a real advantage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile map SDKs.&lt;/strong&gt; Native iOS, Android, and Flutter SDKs with offline support, gesture handling, and annotation systems. Plaza doesn’t ship mobile rendering SDKs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GL JS for web maps.&lt;/strong&gt; Despite the proprietary license change in v2, Mapbox GL JS remains a capable web map renderer with a large ecosystem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3D terrain and building extrusion.&lt;/strong&gt; If your app renders 3D cityscapes or terrain visualization, Mapbox has production-ready support.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn-by-turn navigation.&lt;/strong&gt; The Mapbox Navigation SDK runs on the phone: it follows the GPS, speaks the instructions, re-routes and adjusts for live traffic. Plaza’s Directions API returns the navigation data (steps, instructions in 22 languages, voice and banner text, lanes, exit numbers, congestion) in the shape of a Mapbox Directions response, with snake_case names and unit suffixes (&lt;code dir=&quot;auto&quot;&gt;distance_m&lt;/code&gt;), so a Mapbox-style client ports over with little mapping. But you write the client yourself; &lt;a href=&quot;https://docs.plaza.fyi/guides/tutorial-nav-app&quot;&gt;Build a Turn-by-Turn Nav App&lt;/a&gt; shows how. Plaza’s congestion comes from time-of-day profiles, not live traffic, and there are no shield images or junction views.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Static map images.&lt;/strong&gt; Server-generated map images for emails, PDFs, or social sharing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you’re building a consumer map application where the visual design of the map is central to the product, Mapbox is still the right tool.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;using-both&quot;&gt;Using both&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Some teams use Mapbox for map rendering and Plaza for data queries. This works well when you want Mapbox’s visual layer but need flexible spatial queries, batch geocoding, or AI-ready data access that Mapbox doesn’t offer. Plaza returns standard GeoJSON, so results drop directly onto any map renderer, including Mapbox GL JS.&lt;/p&gt;
&lt;p&gt;They’re not mutually exclusive.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Mapbox is a rendering-first platform with strong data APIs attached. Plaza is a data-first platform with no rendering layer. If you need custom map styling, a ready-made mobile navigation SDK, live traffic, or 3D terrain, go with Mapbox. If you need flexible geospatial queries, AI tooling, or lower costs at scale, &lt;a href=&quot;https://docs.plaza.fyi/guides/migrating-from-mapbox&quot;&gt;go with Plaza&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Try it at &lt;a href=&quot;https://plaza.fyi/dashboard&quot;&gt;plaza.fyi/dashboard&lt;/a&gt;. The free tier includes 500 standard requests/day + 50 premium requests/day for $0, no credit card required. The &lt;a href=&quot;https://docs.plaza.fyi/api&quot;&gt;API reference&lt;/a&gt; covers every endpoint.&lt;/p&gt;</content:encoded><category>comparison</category><category>mapbox</category></item><item><title>Plaza vs Google Maps</title><link>https://docs.plaza.fyi/blog/plaza-vs-google-maps-features/</link><guid isPermaLink="true">https://docs.plaza.fyi/blog/plaza-vs-google-maps-features/</guid><description>A side-by-side breakdown of every feature, the actual pricing math, and where each API wins.

</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This isn’t an opinion piece. Here’s what each API does, what it costs, and where it’s better.&lt;/p&gt;
&lt;p&gt;We put Plaza and Google Maps Platform side by side across every endpoint category and ran the pricing math at three different volumes. The results are below.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;feature-comparison&quot;&gt;Feature comparison&lt;/h2&gt;&lt;/div&gt;














































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Plaza&lt;/th&gt;&lt;th&gt;Google Maps&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Forward geocoding&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/geocode&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Geocoding API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Reverse geocoding&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/geocode/reverse&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Geocoding API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Autocomplete&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/geocode/autocomplete&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Places Autocomplete&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://docs.plaza.fyi/guides/batch-geocoding&quot;&gt;Batch geocoding&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/geocode/batch&lt;/code&gt;&lt;/td&gt;&lt;td&gt;No (must loop single requests)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Routing / directions&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/route&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Directions API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Turn-by-turn instructions&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/route&lt;/code&gt; with &lt;a href=&quot;https://docs.plaza.fyi/guides/directions#turn-by-turn-steps&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;steps&lt;/code&gt;&lt;/a&gt;: 22 languages, voice and banner text, lanes, exits&lt;/td&gt;&lt;td&gt;Directions API steps&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Isochrones&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/isochrone&lt;/code&gt;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Distance matrix&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/matrix&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Distance Matrix API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Map matching&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/map-match&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Roads API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Route optimization&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/optimize&lt;/code&gt; (up to 50 stops)&lt;/td&gt;&lt;td&gt;Routes API (waypoint optimization, 25 stops max)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Full-text search&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/search&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Places Text Search&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Elevation&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/elevation&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Elevation API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://docs.plaza.fyi/guides/plazaql&quot;&gt;PlazaQL&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/query&lt;/code&gt;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Vector tiles&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/tiles/{z}/{x}/{y}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Map Tiles API&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Custom datasets&lt;/td&gt;&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;/datasets&lt;/code&gt;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MCP server for AI&lt;/td&gt;&lt;td&gt;Not yet&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Street View&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Real-time traffic&lt;/td&gt;&lt;td&gt;No (time-of-day profiles)&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Business reviews/photos&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Yes (Places API)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Transit directions&lt;/td&gt;&lt;td&gt;Scheduled, where a GTFS feed is loaded&lt;/td&gt;&lt;td&gt;Yes, with live delays&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Plaza covers 15 of the 20 rows, plus scheduled transit where a feed is loaded. Google covers 15. The overlap is large, but each platform has exclusive capabilities the other lacks entirely.&lt;/p&gt;
&lt;p&gt;Plaza’s exclusive features lean toward developer infrastructure: PlazaQL for arbitrary spatial queries, custom datasets, and tooling for AI agents. Everything runs behind one API, without the fleet of specialized services other providers require. Google’s exclusive features lean toward consumer-facing applications: Street View imagery, real-time traffic from billions of Android phones, business reviews and photos, and transit directions with live schedules.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;pricing-comparison&quot;&gt;Pricing comparison&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Google Maps Platform bills per SKU. Each API call type has a separate price, and the costs add up across endpoints. Plaza uses flat monthly plans with included request allocations. Premium endpoints (routing, isochrone, distance matrix) count as 4x against your allocation.&lt;/p&gt;
&lt;p&gt;Here’s the published pricing for the most common endpoints:&lt;/p&gt;



























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Endpoint type&lt;/th&gt;&lt;th&gt;Google Maps (per 1K)&lt;/th&gt;&lt;th&gt;Plaza standard (per 1K overage)&lt;/th&gt;&lt;th&gt;Plaza premium (per 1K overage)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Geocoding&lt;/td&gt;&lt;td&gt;$5.00&lt;/td&gt;&lt;td&gt;$0.50&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Directions (basic)&lt;/td&gt;&lt;td&gt;$5.00–$10.00&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;td&gt;$1.50&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Directions (advanced)&lt;/td&gt;&lt;td&gt;$20.00&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;td&gt;$1.50&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Distance Matrix&lt;/td&gt;&lt;td&gt;$5.00–$10.00&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;td&gt;$1.50&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Places Nearby Search&lt;/td&gt;&lt;td&gt;$32.00&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Places Text Search&lt;/td&gt;&lt;td&gt;$32.00&lt;/td&gt;&lt;td&gt;$0.50&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Places Details&lt;/td&gt;&lt;td&gt;$17.00&lt;/td&gt;&lt;td&gt;$0.50&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Elevation&lt;/td&gt;&lt;td&gt;$5.00&lt;/td&gt;&lt;td&gt;$0.50&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Google offers a $200/month free credit. Plaza’s free tier gives you 500 standard requests/day + 50 premium requests/day for $0, no credit card required. Paid plans start at $50/month.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;scenario-1-100k-geocoding-requestsmonth&quot;&gt;Scenario 1: 100K geocoding requests/month&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Google:&lt;/strong&gt; 100,000 x $5.00/1K = $500. Minus $200 credit = &lt;strong&gt;$300/mo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plaza:&lt;/strong&gt; Pro 100K plan = &lt;strong&gt;$50/mo&lt;/strong&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;scenario-2-100k-mixed-requests-50k-geocoding--30k-routing--20k-search&quot;&gt;Scenario 2: 100K mixed requests (50K geocoding + 30K routing + 20K search)&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Google:&lt;/strong&gt; (50K x $5) + (30K x $10) + (20K x $32) = $250 + $300 + $640 = $1,190. Minus $200 credit = &lt;strong&gt;$990/mo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plaza:&lt;/strong&gt; 50K standard + 30K premium (x4 = 120K effective) + 20K standard = 190K effective requests. Pro 300K plan = &lt;strong&gt;$150/mo&lt;/strong&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;scenario-3-1m-geocoding-requestsmonth&quot;&gt;Scenario 3: 1M geocoding requests/month&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Google:&lt;/strong&gt; 1,000,000 x $5.00/1K = $5,000. Minus $200 credit = &lt;strong&gt;$4,800/mo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plaza:&lt;/strong&gt; Pro 1M plan = &lt;strong&gt;$500/mo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;At every volume we tested, Plaza costs between 6x and 10x less than Google Maps Platform for equivalent API calls. The gap widens with mixed workloads because Google’s most expensive SKUs (Places Search at $32/1K) have no equivalent premium multiplier on Plaza.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;data-rights&quot;&gt;Data rights&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Google’s Terms of Service prohibit caching API responses, storing results in your database, displaying data on non-Google maps, and using results in ML pipelines. Plaza is built on open data — OpenStreetMap (ODbL-licensed) plus curated open datasets — with none of these restrictions. Cache freely, store permanently, display anywhere.&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Plaza&lt;/th&gt;&lt;th&gt;Google Maps&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Cache results&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No (session-length only)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Store in your database&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Display on non-Google maps&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Use in AI training data&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Store in vector DB for RAG&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bulk export&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;&lt;h2 id=&quot;developer-experience&quot;&gt;Developer experience&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza serves every endpoint from a single base URL (&lt;code dir=&quot;auto&quot;&gt;https://plaza.fyi/api/v1/&lt;/code&gt;) and returns GeoJSON for all responses. Google Maps Platform has separate base URLs, authentication schemes, and response formats for each API family. Geocoding returns one JSON structure, Places returns another, Directions returns a third.&lt;/p&gt;
&lt;p&gt;Plaza publishes an OpenAPI spec for the whole API. The TypeScript, Python, and Go SDKs are being regenerated from that spec after the Stainless shutdown, so for now you call the REST API directly. The &lt;a href=&quot;https://docs.plaza.fyi/api&quot;&gt;API reference&lt;/a&gt; has a request example for every endpoint. Google provides official client libraries for JavaScript, Android, and iOS, plus raw REST access for everything else.&lt;/p&gt;
&lt;p&gt;Rate limits on Plaza scale with your plan: 10 req/min on Free, 300 on Pro 100K, 1,000 on Pro 300K, 2,000 on Pro 1M, and 10,000 on Enterprise. One number, applied uniformly. Google enforces per-API quotas with different limits per SKU, and the defaults vary by billing account age and history.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;ai-readiness&quot;&gt;AI readiness&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The MCP server is being rebuilt and has no release date. In the meantime, an agent given &lt;a href=&quot;https://plaza.fyi/llms.txt&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;llms.txt&lt;/code&gt;&lt;/a&gt; can call geocoding, routing, search, and PlazaQL over REST. An LLM can write a PlazaQL query, run it against Plaza’s full dataset, and work with the results. Agents can cache and reuse results across sessions.&lt;/p&gt;
&lt;p&gt;Google Maps Platform has no MCP server and no function-calling tooling. Every agent invocation is a fresh billable call with no ability to persist the result.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;where-google-maps-wins&quot;&gt;Where Google Maps wins&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Google Maps Platform has real advantages that Plaza does not replicate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real-time traffic.&lt;/strong&gt; Google collects live traffic data from billions of Android devices. Their ETAs in congested urban corridors are more accurate than any routing engine that relies on historical or static speed data. Plaza’s Directions API returns full navigation data (steps, instructions in 22 languages, voice and banner text, lanes, exit numbers, per-segment congestion), but its speeds and congestion come from time-of-day profiles for each road type, not from live traffic. If your product is a consumer navigation app where ETA accuracy in rush-hour traffic is the core feature, Google’s data moat is real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Business listings.&lt;/strong&gt; Google’s Places database includes business hours, user reviews, photos, price levels, and structured metadata for hundreds of millions of businesses worldwide. Plaza has extensive POI data from OpenStreetMap and other open sources, but it doesn’t have Yelp-style reviews or user-submitted photos. If your application needs “show me the 4-star Italian restaurants open right now with photos,” Google is the better data source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Street View.&lt;/strong&gt; Panoramic street-level imagery covering most of the world’s road network. Plaza has no imagery product.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transit directions.&lt;/strong&gt; Google aggregates real-time transit schedules from thousands of agencies globally. Their transit routing includes live delay information, transfers, and fare estimates. Plaza’s &lt;a href=&quot;https://docs.plaza.fyi/guides/transit-routing&quot;&gt;transit routing&lt;/a&gt; works from published GTFS timetables, and only where a feed for that agency is loaded. It handles transfers, &lt;code dir=&quot;auto&quot;&gt;arrive_by&lt;/code&gt; and wheelchair-accessible trips, but it has no live delays and no fares.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile SDKs.&lt;/strong&gt; Google’s Android and iOS SDKs are deeply integrated with native map rendering, gesture handling, and platform-specific optimizations built over more than a decade. Plaza has no mobile or navigation SDK. Its route responses carry what a nav screen needs, but following the GPS and re-routing is your code (&lt;a href=&quot;https://docs.plaza.fyi/guides/tutorial-nav-app&quot;&gt;here’s a walkthrough&lt;/a&gt;). If you’re building a mobile-first consumer maps experience, Google’s client-side SDK ecosystem is more mature.&lt;/p&gt;
&lt;p&gt;If your product depends on any of these capabilities, Google Maps is still the right choice for those specific features. Many teams use both: Google for consumer-facing traffic and business data, Plaza for backend geocoding, spatial queries, and data pipelines where cost and flexibility matter most.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;get-started&quot;&gt;Get started&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza’s free tier includes 500 standard requests/day + 50 premium requests/day for $0, covers every endpoint in the table above, and requires no credit card.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://plaza.fyi/dashboard&quot;&gt;Get your API key in 30 seconds.&lt;/a&gt;&lt;/p&gt;</content:encoded><category>comparison</category><category>google-maps</category></item><item><title>PlazaQL: Query Geospatial Data Without the Overhead</title><link>https://docs.plaza.fyi/blog/overpass-ql-plaza-osm-queries/</link><guid isPermaLink="true">https://docs.plaza.fyi/blog/overpass-ql-plaza-osm-queries/</guid><description>PlazaQL gives you access to billions of geospatial features — OpenStreetMap, curated open datasets, and your own data. One endpoint, GeoJSON back, no setup required.

</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’ve ever tried to pull specific geographic data from OpenStreetMap, you’ve probably hit infrastructure walls. The public &lt;a href=&quot;https://overpass-api.de&quot;&gt;overpass-api.de&lt;/a&gt; has aggressive rate limits, and self-hosting an Overpass instance means downloading 70GB+ and managing your own server. Neither option is fun when you just want location data in your app.&lt;/p&gt;
&lt;p&gt;PlazaQL is Plaza’s query language for geospatial data. It lets you query billions of features — every pharmacy within 500 meters, all parks in a city, every bike shop with a repair stand — through a single HTTP endpoint that returns GeoJSON.&lt;/p&gt;
&lt;p&gt;This article covers PlazaQL itself and how Plaza removes the infrastructure headache so you can query geospatial data with one POST request.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-plazaql-is&quot;&gt;What PlazaQL is&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;PlazaQL is a read-only query language designed for geospatial data. It reads a bit like SQL for geographic places. You can query OpenStreetMap nodes, ways, and relations, Plaza-curated datasets, and your own custom data — all with the same syntax.&lt;/p&gt;
&lt;p&gt;Features have tags and properties. An OpenStreetMap pharmacy is tagged &lt;code dir=&quot;auto&quot;&gt;amenity=pharmacy&lt;/code&gt;. A park is &lt;code dir=&quot;auto&quot;&gt;leisure=park&lt;/code&gt;. A vegan restaurant has &lt;code dir=&quot;auto&quot;&gt;amenity=restaurant&lt;/code&gt; plus &lt;code dir=&quot;auto&quot;&gt;diet:vegan=yes&lt;/code&gt;. PlazaQL lets you filter by any combination of tags or properties, apply geographic constraints like bounding boxes or radius searches, and return the results — whether the data comes from OSM, a curated dataset, or your own uploads.&lt;/p&gt;
&lt;p&gt;The syntax is clean and readable. Once you see a few examples, you can pull almost any real-world geographic dataset you can think of.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-you-can-ask-it&quot;&gt;What you can ask it&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza gives you direct access to billions of features — the full OpenStreetMap planet, curated open datasets, and any custom data you upload.&lt;/p&gt;
&lt;p&gt;Google Maps and Mapbox expose curated POI data through their own APIs. You get what they decide to surface, in the format they choose, under their licensing terms. With PlazaQL, you query the raw data yourself. You can filter by obscure tags, combine conditions, mix data sources, and retrieve data that simply does not exist in commercial APIs.&lt;/p&gt;
&lt;p&gt;A few examples of what you can do that you can’t easily do with a standard geocoding API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find every public drinking fountain in Berlin&lt;/li&gt;
&lt;li&gt;List all ATMs that are wheelchair accessible within a city&lt;/li&gt;
&lt;li&gt;Pull every road with a specific surface type for a cycling app&lt;/li&gt;
&lt;li&gt;Get all buildings taller than 10 floors in a bounding box&lt;/li&gt;
&lt;li&gt;Filter roads by computed length (&lt;code dir=&quot;auto&quot;&gt;length() &gt; 1000&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Aggregate data — average building height by type, total restaurant capacity by neighborhood&lt;/li&gt;
&lt;li&gt;Use expression filters with arithmetic on tag values (&lt;code dir=&quot;auto&quot;&gt;number(t[&quot;capacity&quot;]) &gt; 50&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PlazaQL is useful for data-heavy applications, urban planning tools, accessibility apps, and anything beyond “find a coffee shop near me.”&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;running-your-own-osm-query-server-is-a-chore&quot;&gt;Running your own OSM query server is a chore&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;To query OSM data in production, you historically had two realistic options.&lt;/p&gt;
&lt;p&gt;You can use the public Overpass API at &lt;a href=&quot;https://overpass-api.de&quot;&gt;overpass-api.de&lt;/a&gt;. It’s free, but it’s shared infrastructure. Rate limits kick in fast. Heavy queries get rejected. You can’t rely on it for anything user-facing because you have no SLA and no control over availability.&lt;/p&gt;
&lt;p&gt;Or you run your own Overpass instance. This means downloading a full OSM planet file (over 70GB compressed), setting up the server, keeping the data synced, and managing the infrastructure yourself. It works, but it’s a lot of ops work before you’ve written a single line of application code.&lt;/p&gt;
&lt;p&gt;Neither option is a good fit if you’re a developer who just wants to query geographic data and ship something.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;one-endpoint-for-plazaql&quot;&gt;One endpoint for PlazaQL&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza is a geospatial data API that handles all of this for you. It supports &lt;a href=&quot;https://docs.plaza.fyi/guides/geocoding&quot;&gt;geocoding&lt;/a&gt;, reverse geocoding, routing, and POI search. But PlazaQL support is probably the most relevant part if you want raw query power.&lt;/p&gt;
&lt;p&gt;You send your PlazaQL query to &lt;code dir=&quot;auto&quot;&gt;POST /api/v1/query&lt;/code&gt; in the &lt;code dir=&quot;auto&quot;&gt;data&lt;/code&gt; field of a JSON body. Plaza runs it against its full dataset — OpenStreetMap, curated sources, and any custom data you’ve uploaded — and returns a GeoJSON FeatureCollection. No infrastructure to manage, no caching restrictions.&lt;/p&gt;
&lt;p&gt;For large result sets, add &lt;code dir=&quot;auto&quot;&gt;format=geojson&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;format=ndjson&lt;/code&gt; and Plaza streams the response, so your client can process features as they arrive.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;how-it-works&quot;&gt;How it works&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;You make a standard HTTP request to the Plaza API with your PlazaQL query in the &lt;code dir=&quot;auto&quot;&gt;data&lt;/code&gt; field of a JSON body. Plaza handles the query execution and returns the response. No special client library required — if you can make an HTTP request, you can use Plaza.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;examples&quot;&gt;Examples&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Some real examples using cURL. All of these work against the Plaza endpoint and return GeoJSON.&lt;/p&gt;
&lt;div&gt;&lt;h4 id=&quot;pharmacies-near-a-coordinate&quot;&gt;Pharmacies near a coordinate&lt;/h4&gt;&lt;/div&gt;
&lt;p&gt;This query finds every pharmacy within 500 meters of a point in central Paris.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-X&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;POST&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://plaza.fyi/api/v1/query&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-H&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;x-api-key: YOUR_API_KEY&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-H&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Content-Type: application/json&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;data&quot;: &quot;search(node, amenity: \&quot;pharmacy\&quot;).around(500, point(48.8566, 2.3522));&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You get back a GeoJSON FeatureCollection with each pharmacy as a feature, including its name, address tags, and coordinates.&lt;/p&gt;
&lt;div&gt;&lt;h4 id=&quot;parks-in-london&quot;&gt;Parks in London&lt;/h4&gt;&lt;/div&gt;
&lt;p&gt;This query finds every park in the City of London by looking up the area by name — no coordinates needed.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-X&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;POST&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://plaza.fyi/api/v1/query&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-H&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;x-api-key: YOUR_API_KEY&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-H&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Content-Type: application/json&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;data&quot;: &quot;search(way, leisure: \&quot;park\&quot;).within(boundary(name: \&quot;City of London\&quot;));&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;PlazaQL returns the full geometry of each way, so you get polygon outlines for the parks, not just centroid points. Useful if you’re rendering them on a map or doing area calculations.&lt;/p&gt;
&lt;div&gt;&lt;h4 id=&quot;cafes-with-outdoor-seating&quot;&gt;Cafes with outdoor seating&lt;/h4&gt;&lt;/div&gt;
&lt;p&gt;This one combines two tag conditions to find cafes with outdoor seating across all of Paris.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-X&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;POST&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://plaza.fyi/api/v1/query&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-H&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;x-api-key: YOUR_API_KEY&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-H&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Content-Type: application/json&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;data&quot;: &quot;search(node, amenity: \&quot;cafe\&quot;, outdoor_seating: \&quot;yes\&quot;).within(boundary(name: \&quot;Paris\&quot;));&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You can’t do this through the Mapbox geocoding API or Google Places. You’re querying raw tags, which means you can filter on any attribute in the dataset.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;plazaql-and-ai-agents&quot;&gt;PlazaQL and AI agents&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;If you build LLM-powered tools, PlazaQL has a useful property: it is structured enough for a model to generate and expressive enough to handle queries that no pre-built API category system covers.&lt;/p&gt;
&lt;p&gt;When you give a Google Places API to an LLM agent, the agent picks from predefined categories — “restaurant,” “hospital,” “gas_station.” That works for common searches. But what happens when the query is “find all buildings with solar panels within 1km of this school” or “show me every road segment with a speed limit under 30km/h in this neighborhood”? Google’s category system has no answer.&lt;/p&gt;
&lt;p&gt;An LLM can generate PlazaQL for those queries directly:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;User prompt:&lt;/strong&gt; “Find all wheelchair-accessible ATMs in Berlin”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LLM-generated PlazaQL:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;search(node, amenity: &quot;atm&quot;, wheelchair: &quot;yes&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.within(boundary(name: &quot;Berlin&quot;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;User prompt:&lt;/strong&gt; “Show me every building taller than 10 floors near Times Square”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LLM-generated PlazaQL:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;$ts = search(node, name: &quot;Times Square&quot;, place: &quot;square&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;search(way, building: *)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.around(500, $ts)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.filter(is_number(t[&quot;building:levels&quot;]) &amp;#x26;&amp;#x26; number(t[&quot;building:levels&quot;]) &gt;= 10);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Expression filters let the LLM do numeric comparisons on tag values — something regex hacks can’t handle cleanly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;User prompt:&lt;/strong&gt; “Find a pharmacy on my way to work”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LLM-generated PlazaQL:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;$r = route(origin: point(40.748, -73.993), destination: point(40.755, -73.970));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;search(node, amenity: &quot;pharmacy&quot;).around(200, $r).sort(distance($r));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That last one computes a route, finds pharmacies within 200m of it, and sorts by distance — all in a single query. With traditional APIs, that’s 3 separate calls across 2 different services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;User prompt:&lt;/strong&gt; “What’s the average restaurant capacity by cuisine in Manhattan?”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LLM-generated PlazaQL:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;search(node, amenity: &quot;restaurant&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.within(boundary(name: &quot;Manhattan&quot;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.filter(is_number(t[&quot;capacity&quot;]))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.group_by(t[&quot;cuisine&quot;])&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.avg(number(t[&quot;capacity&quot;]));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Aggregation queries skip GeoJSON and return a small JSON object. This one comes back as &lt;code dir=&quot;auto&quot;&gt;{&quot;groups&quot;: {&quot;italian&quot;: 62.5, &quot;japanese&quot;: 41.0, ...}, &quot;total&quot;: 2}&lt;/code&gt;, with one average per cuisine. Without &lt;code dir=&quot;auto&quot;&gt;.group_by()&lt;/code&gt;, a &lt;code dir=&quot;auto&quot;&gt;.sum()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;.avg()&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;.min()&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;.max()&lt;/code&gt; returns &lt;code dir=&quot;auto&quot;&gt;{&quot;value&quot;: n}&lt;/code&gt;. The LLM gets the answer in one call.&lt;/p&gt;
&lt;p&gt;Send any of these in the &lt;code dir=&quot;auto&quot;&gt;data&lt;/code&gt; field of a &lt;code dir=&quot;auto&quot;&gt;POST /api/v1/query&lt;/code&gt; request and you get back GeoJSON (or the aggregate object above). The LLM doesn’t need to know what categories exist ahead of time. It writes the query based on the tag system, which covers millions of attribute combinations.&lt;/p&gt;
&lt;p&gt;If you’re building an AI agent that needs flexible geospatial queries, point it at this endpoint. We’re rebuilding the MCP server, with no release date. Until it ships, an agent can call the query endpoint directly.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;plaza-vs-mapbox&quot;&gt;Plaza vs Mapbox&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Mapbox is a solid product. The map rendering and geocoding work well. But pricing scales quickly, you can’t freely cache and store results, and you’re limited to the POI data Mapbox chooses to expose.&lt;/p&gt;
&lt;p&gt;If you’re building something that needs flexible geographic queries, open data access, or lower per-request cost at scale, Plaza is worth evaluating. PlazaQL alone covers use cases that Mapbox simply does not offer. Plaza has no caching restrictions — store query results in your own database, build offline-capable features, whatever you need.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://plaza.fyi/dashboard&quot;&gt;Try it free — no credit card needed.&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;faqs&quot;&gt;FAQs&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;What is PlazaQL used for?&lt;/strong&gt;
PlazaQL is a query language for geospatial data. Developers use it to retrieve geographic features filtered by tags and properties — finding all hospitals in a city, all bike lanes in a bounding box, or all restaurants with a specific cuisine type. It works across OpenStreetMap data, Plaza-curated datasets, and custom uploads.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do I need to run my own server to query geospatial data?&lt;/strong&gt;
Not if you use Plaza. Plaza exposes a hosted PlazaQL endpoint so you can send queries directly via HTTP and get GeoJSON back without managing any infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How is Plaza different from the public Overpass API?&lt;/strong&gt;
The public Overpass API at &lt;a href=&quot;https://overpass-api.de&quot;&gt;overpass-api.de&lt;/a&gt; is shared infrastructure with rate limits and no SLA. Plaza is a managed API with consistent availability, a cleaner query language, and no caching restrictions on the data you retrieve.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is Plaza a good Mapbox alternative for geocoding?&lt;/strong&gt;
Yes. Plaza supports geocoding, reverse geocoding, routing, and POI search alongside PlazaQL queries, all through one unified API at &lt;code dir=&quot;auto&quot;&gt;https://plaza.fyi/api/v1/&lt;/code&gt;. It’s designed as a drop-in replacement for Mapbox or Google Maps at a lower cost.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Can I use PlazaQL with LLM agents?&lt;/strong&gt;
Yes. LLMs can generate PlazaQL from natural language prompts, which makes it a good fit for AI tool use and function calling. There’s no MCP server yet, so agents call the query endpoint over REST for now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Can I cache Plaza results for RAG or training data?&lt;/strong&gt;
Yes. You can cache, store, and reuse query results in vector databases, training pipelines, or any other system. OpenStreetMap data is open (ODbL), and other datasets carry their own license terms.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Can I use Plaza for commercial projects?&lt;/strong&gt;
Yes. Plaza is built for production use. Check &lt;a href=&quot;https://plaza.fyi/pricing&quot;&gt;plaza.fyi/pricing&lt;/a&gt; for current pricing tiers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What response formats does Plaza support?&lt;/strong&gt;
Endpoints that return feature lists take a &lt;code dir=&quot;auto&quot;&gt;format&lt;/code&gt; parameter: &lt;code dir=&quot;auto&quot;&gt;json&lt;/code&gt; (default), &lt;code dir=&quot;auto&quot;&gt;geojson&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;csv&lt;/code&gt;, and &lt;code dir=&quot;auto&quot;&gt;ndjson&lt;/code&gt;. The PlazaQL endpoint returns a GeoJSON FeatureCollection for feature results, and a small JSON object for counts and aggregates. See &lt;a href=&quot;https://docs.plaza.fyi/guides/streaming&quot;&gt;Streaming &amp;#x26; Response Formats&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is the data accurate enough for production apps?&lt;/strong&gt;
OpenStreetMap data quality varies by region but is generally strong in urban areas and improving globally. Plaza also curates additional open datasets to fill gaps. For many use cases — especially those requiring tag-level specificity — open data covers things that commercial datasets do not.&lt;/p&gt;</content:encoded><category>plazaql</category><category>tutorial</category><category>mapbox-alternative</category></item><item><title>Introducing Plaza</title><link>https://docs.plaza.fyi/blog/introducing-plaza/</link><guid isPermaLink="true">https://docs.plaza.fyi/blog/introducing-plaza/</guid><description>We built Plaza because the geospatial API market is broken. Here&apos;s why we&apos;re fixing it.

</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The geospatial API market has a problem. If you’ve built anything that touches maps, geocoding, or routing, you already know what I’m talking about.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google Maps&lt;/strong&gt; charges obscene prices and increases them without warning. A startup with moderate geocoding traffic can easily face a five-figure monthly bill. Their pricing model punishes growth — the more successful your product, the more they take. And they know you’re locked in.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mapbox&lt;/strong&gt; offers better pricing but wraps everything in restrictive licensing. Want to cache results? Want to use the data in ways they didn’t anticipate? Their licensing terms add friction for common use cases. Licensing shouldn’t slow down a simple integration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Geocode.earth&lt;/strong&gt; is a step in the right direction with its open-data philosophy, but the feature set is limited. Need routing? Isochrones? Batch geocoding? You’ll be stitching together multiple providers and maintaining glue code forever.&lt;/p&gt;
&lt;p&gt;None of these meet developers where they are.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-is-plaza&quot;&gt;What is Plaza?&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza is a full-featured geospatial data API. The full OpenStreetMap planet, curated open datasets, and your own custom data — all behind a single API with consistent conventions and honest pricing. Geocoding, reverse geocoding, &lt;a href=&quot;https://docs.plaza.fyi/guides/directions&quot;&gt;routing&lt;/a&gt;, &lt;a href=&quot;https://docs.plaza.fyi/guides/isochrones&quot;&gt;isochrones&lt;/a&gt;, distance matrices, map matching, route optimization, search, and more.&lt;/p&gt;
&lt;p&gt;We’re not just wrapping existing open-source tools and calling it a day. We built the query engine ourselves so billions of geographic features come back with sub-50ms response times. It’s the reason Plaza can serve all its data sources through a single API without the fleet of specialized services that other providers need.&lt;/p&gt;
&lt;p&gt;There’s no MCP server yet. We’re rebuilding it and have no date, so agents call the REST API directly for now. You can cache results, store them in vector databases, and use them in AI pipelines without restrictions.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;why-now&quot;&gt;Why now?&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;A few things lined up to make this the right time:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open data has matured.&lt;/strong&gt; OpenStreetMap’s coverage and quality have improved enormously over the past decade, and governments and organizations are publishing more geospatial data than ever. The data foundation is there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Infrastructure costs have dropped.&lt;/strong&gt; What would have required a warehouse of servers ten years ago now runs on modern cloud infrastructure. We can offer performance that competes with Google at a fraction of the cost because the economics are different now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Developer expectations have changed.&lt;/strong&gt; Developers expect APIs that are well-documented, predictable, and fair. SDKs that work, error messages that help, and pricing that doesn’t require a spreadsheet to understand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI needs a geospatial layer.&lt;/strong&gt; Every LLM-powered agent that interacts with the physical world needs to geocode, route, search, and answer spatial questions. But the APIs they’re calling weren’t built for this. Self-hosting OSM is operationally complex, and most commercial APIs restrict caching. We built a geospatial API that’s fast, cacheable, and designed for AI workflows from day one.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;the-backstory&quot;&gt;The backstory&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;I’ve been working with geospatial and civic data for over a decade. I previously founded &lt;a href=&quot;https://stae.co&quot;&gt;Stae&lt;/a&gt;, where we built open data platforms for local governments — helping cities like Atlanta and Jersey City standardize, share, and actually use their infrastructure data. Before that, I started the Code for Phoenix civic tech brigade, where 30+ engineers volunteered to make municipal data accessible.&lt;/p&gt;
&lt;p&gt;At Stae, I saw firsthand how fragmented the geospatial data ecosystem is. Cities were paying steep licensing fees for basic geocoding. Developers building civic tools were priced out by Google’s API costs. Open-source alternatives existed but were fragmented and hard to operate at scale.&lt;/p&gt;
&lt;p&gt;After Stae, I spent time at Apple working on AI and security. Building systems at that scale changed how I think about infrastructure, performance, and what’s possible when you invest in doing things right.&lt;/p&gt;
&lt;p&gt;Plaza is the product of all of these experiences. It’s what I wished existed every time I saw a city, a startup, or an independent developer get locked into a mapping API they couldn’t afford to leave.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-we-believe&quot;&gt;What we believe&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Geospatial data should be accessible. No lock-in, no surprises.&lt;/li&gt;
&lt;li&gt;Pricing should be honest. Predictable, designed so that your success doesn’t become your biggest expense.&lt;/li&gt;
&lt;li&gt;Developer experience matters. Clear docs, a published OpenAPI spec, TypeScript, Python, and Go SDKs being regenerated after the Stainless shutdown, and an API that behaves the way you’d expect.&lt;/li&gt;
&lt;li&gt;Performance is not optional. Fast by default, not “fast for an open-source alternative.”&lt;/li&gt;
&lt;li&gt;AI should understand the real world. Geospatial data for agents should be fast, cacheable, and affordable — not priced to make AI applications unviable.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;try-it&quot;&gt;Try it&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Plaza is live today. &lt;a href=&quot;https://plaza.fyi/dashboard&quot;&gt;Create an account&lt;/a&gt;, grab an API key, and start building. Check out our &lt;a href=&quot;https://docs.plaza.fyi&quot;&gt;getting started guide&lt;/a&gt; or jump straight into the &lt;a href=&quot;https://docs.plaza.fyi/api&quot;&gt;API reference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We’re just getting started. If you have questions, ideas, or just want to say hi — reach out.&lt;/p&gt;</content:encoded><category>announcement</category><category>launch</category></item></channel></rss>