Simple, usage-based pricing
Free forever with no commitment. Scale as you grow. Billed by query credits, not raw request counts.
Free
- Generous free tier
- Hobby projects
- Community support
- Usage analytics
Pro
- Small to medium production use
- Larger bounding boxes
- Higher rate limits
- Dedicated support
Premium
- Medium to large scale projects
- Custom SQL queries
- Everything in Pro
- Priority support
Enterprise
- Dedicated PostGIS instances
- Custom rate limits
- Forward deployed integrations
- Gauranteed consulting services & support
How query credits work
Feature tiles are billed after the response from the rows returned. Stats, places, and routing still estimate cost up front.
Num of Monthly Requests *
A small tagged query is often a few credits. A 100,000-row tile is 50,000 credits, so 2 000 000 credits/month is about 40 full tiles or many smaller queries.
Spatial area
A larger window usually returns more features, so the tile costs more. Area itself is not the billing formula. Tier bbox and radius caps still apply.
Tag filters
Specific tag filters (amenity=restaurant) usually return fewer rows, so they cost less. Tag-free queries have tighter bbox and radius caps.
Element type and shape
Querying more OSM element types (node, way, relation) can return more rows. Use type and way_shape (line or polygon) to narrow the tile.
Result limit
You are billed for rows returned, at most limit. A match set larger than your plan max_limit is HTTP 400 result_too_large and is billed as if limit rows were returned.
Cost preview
A v3 tile is billed after the response, at one credit per two rows returned (minimum 1). Preview the row count with GET /v2/osm_features/count and use total. GET /v2/osm_features/cost is deprecated with the paged v2 feature list.
Frequently asked questions
What is a query unit?
A query unit is an internal cost credit, not a request count. GET /v3/osm_features bills after the response: one credit per two rows returned, minimum 1. Preview the row count with GET /v2/osm_features/count. Places, stats, and routing still use an area-based estimate before the query runs.
How do spatial limits work?
Spatial limits scale by tier and query selectivity. More selective tagged queries can cover larger areas, while broad tag-free scans have tighter caps to keep performance predictable for all users.
Why does a tag-free scan cost more?
Tag-free tiles usually return more features, so row-based billing is higher. They also have tighter bbox and radius caps than tagged queries.
Are negative tag filters (not_tags) expensive?
A not_tags-only query is treated as tag-free for spatial caps. Credits still follow the rows returned. Add at least one positive tags= filter to use the wider tagged window.
What happens if I exceed my limit?
On the free plan, a request that would exceed the monthly credit budget returns HTTP 429 before the tile runs. A match set larger than your plan max_limit is HTTP 400 result_too_large and is billed as if limit rows were returned. Stats, places, and routing still reject oversized estimates before the database. Upgrade from the dashboard at any time.
Can I self-host MapLark?
Open standards (GeoJSON + OSM tags) and our client SDKs are open source today. A self-hostable server for your own PostGIS is coming; contact us for Enterprise deployment support in the meantime.
What data is available?
All OpenStreetMap element types for the entire planet.
Is the data open?
Yes. OSM data is available under the Open Database Licence (ODbL). You must attribute © OpenStreetMap contributors in any public-facing usage.
Do I need a credit card for the free tier?
No. Sign up with email or Google, pick a tier, and start making requests immediately.