PlazaQL Query API

Run PlazaQL queries on dedicated infrastructure. No queue, no timeouts.

Run PlazaQL queries on dedicated infrastructure — no queue, no timeouts.

How it works

1

Write your query

PlazaQL syntax — clean, composable query language.

2

Plaza executes it

Parsed with NimbleParsec, run on H3-indexed Postgres.

3

Get results

GeoJSON or CSV — no response size limit.

See it in action

A real API request, visualized.

terminal
$

          

Who uses this

Teams building with PlazaQL Query API.

Data extraction

Pull structured OSM data for analysis and research.

Custom maps

Query specific features for thematic map layers.

Automated pipelines

Integrate OSM queries into ETL and data pipelines.

Full

PlazaQL syntax

2

Output formats

8B+

Queryable features

NimbleParsec

Parser

What you can build

Example apps powered by PlazaQL Query API.

Infrastructure Mapper

Query and visualize power lines, water systems, and roads.

PlazaQL

OSM Data Pipeline

Automated extraction of POI data for analytics dashboards.

PlazaQL Search

Urban Planner

Analyze building footprints and zoning within boundaries.

PlazaQL Isochrone

Start building

curl -X POST "https://plaza.fyi/api/v1/query" \
-H "Content-Type: application/json" \
-d '{"data": "$$ = search(node, amenity: \"hospital\").bbox(40.7, -74.0, 40.8, -73.9);"}'
View endpoints
Method Path Description
POST /api/v1/query Execute a PlazaQL query

How it compares

overpass-api.de: Shared infra, frequent timeouts
Plaza: Dedicated, no queue
overpass-api.de: XML-only output
Plaza: GeoJSON or CSV
overpass-api.de: Rate limited to 2 concurrent
Plaza: Up to 10K/min on paid plans

Common questions

What output formats does PlazaQL support?

GeoJSON (default) and CSV. Set the format via the $$ statement or Accept header.

How does this differ from overpass-api.de?

Plaza runs PlazaQL against its own database with H3 spatial indexing. No shared queue, no 2-connection limit, no 10-minute global timeout. Paid plans go up to 10K/min.

Does Plaza support area queries and recursion?

Yes. Use area(name: "Berlin") to query by named areas, + and - for union/difference set operations, and search results compose naturally through variable binding with $name = expr syntax.