If your app needs to search for places — cafes, restaurants, shops, or any other points of interest — chances are you’ve looked at the Google Maps Platform first.
It’s a powerful solution, but it’s not always the best fit. Pricing, usage limits, licensing restrictions, or simply the need for more flexibility often push developers to look for alternatives.
What we’ll explore
In this article, we’ll take a practical look at Places APIs — focusing on one common use case:
- Finding places by category. For example: cafes or restaurants near a location
We’ll compare how place search works across several popular providers and when each one makes the most sense to use:
- Google Maps Platform — Places API
- Geoapify — Places API
- Foursquare — Places API
- HERE Technologies — Geocoding & Search API
- TomTom — Search API (POI search)
- What to choose?
Use Case: Find Restaurants in Miami Beach
To keep this comparison practical, let’s use one specific scenario:
Find restaurants near this point in Miami Beach:
- Latitude:
25.777415 - Longitude:
-80.132432
This is a good test case because every provider in this article supports location-based place search, but they expose it in different ways.
Key differences to keep in mind
Request structure: Some APIs use simple query parameters (location, radius, category), while others require more structured requests or additional configuration.
Search capabilities: APIs vary in how they support filtering, ranking, and biasing results.
Data sources: Some providers rely on proprietary datasets, while others are based on open data sources like OpenStreetMap.
Result format: The structure and level of detail in responses can differ significantly.
Even for a simple task like finding nearby restaurants, the choice of API can lead to very different results and developer experience.
Google Maps Platform — Places API
📘 Docs · 🔎 Playground · 💰 Pricing · ⚖️ Terms
The Google Maps Platform Places API is one of the most widely used solutions for working with points of interest.
It provides rich and detailed place data — including ratings, reviews, opening hours, and more — and is often the default choice for developers building location-based features.
Example request
POST https://places.googleapis.com/v1/places:searchNearby
Content-Type: application/json
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: places.displayName,places.location,places.rating,places.reviews,places.photos
{
"includedPrimaryTypes": ["restaurant"],
"maxResultCount": 10,
"locationRestriction": {
"circle": {
"center": {
"latitude": 25.777415,
"longitude": -80.132432
},
"radius": 1000
}
}
}
This request searches for restaurants near the given coordinates in Miami Beach within a 1 km radius and returns a limited set of fields.
Example response
{
"places": [
{
"id": "sample-place-id-001",
"displayName": {
"text": "Sample Restaurant"
},
"formattedAddress": "100 Example St, Miami Beach, FL 33139, USA",
"location": {
"latitude": 25.778102,
"longitude": -80.131245
},
"rating": 4.4,
"userRatingCount": 1842,
"websiteUri": "https://www.example.com",
"nationalPhoneNumber": "(305) 555-0142",
"regularOpeningHours": {
"openNow": true,
"weekdayDescriptions": [
"Monday: 11:00 AM – 10:00 PM"
]
},
"primaryType": "restaurant",
"primaryTypeDisplayName": {
"text": "Restaurant"
}
}
]
}
The response can include much more than basic place information. In addition to name, location, and rating, the API can return reviews, photos, contact details, opening hours, and various attributes describing the place.
Reviews are returned directly in the response, while photos are provided as references that can be used to request actual images via a separate endpoint.
The exact data you receive depends on the fields specified in the X-Goog-FieldMask.
Pros
- Rich place data — includes ratings, reviews, photos, opening hours, and many additional attributes
-
Flexible field selection — control response size and content via
X-Goog-FieldMask - Large dataset — backed by a widely used platform with high user contribution and coverage
Cons
Pricing can scale quickly — depends on number of requests and fields requested, so cost estimation is important
Strict licensing terms — usage is limited by Google Maps Platform Terms, including requirements on how data is displayed, where it can be used, and integration with Google services
Data usage limitations — place data often cannot be stored long-term or used outside Google services
More complex requests — requires
POSTrequests and field masks instead of simple query parameters
Geoapify — Places API
📘 Docs · 🔎 Playground · 💰 Pricing · ⚖️ Terms
Geoapify Places API provides access to POI data based on open data sources such as OpenStreetMap.
It focuses on simplicity and flexibility, offering a straightforward way to search for places by category, location, and additional filters.
Example request
GET https://api.geoapify.com/v2/places?categories=catering.restaurant&filter=circle:-80.132432,25.777415,1000&limit=10&apiKey=YOUR_API_KEY
This request searches for restaurants near the given coordinates in Miami Beach within a 1 km radius.
The API uses a simple GET request with query parameters, making it easy to test and integrate.
Example response
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "Bella Cuba",
"formatted": "Bella Cuba, 1659 Washington Avenue, Miami Beach, FL 33139, United States of America",
"lat": 25.7909549,
"lon": -80.1316981,
"categories": [
"catering",
"catering.restaurant",
"catering.restaurant.cuban"
],
"catering": {
"cuisine": "cuban"
},
"distance": 265,
"datasource": {
"sourcename": "openstreetmap",
"license": "Open Database License",
"attribution": "© OpenStreetMap contributors"
},
"raw": {
"osm_id": 3057276069,
"osm_type": "n"
}
},
"geometry": {
"type": "Point",
"coordinates": [-80.1316981, 25.7909549]
}
}
]
}
The response uses a standard GeoJSON-like structure, which is especially convenient for map applications. Depending on available source data, results may include categories, cuisine, phone number, website, opening hours, and other attributes.
The datasource field is especially useful because it makes the data origin explicit. In this example, the results come from OpenStreetMap, with attribution and license information included in the response.
The raw.osm_id and raw.osm_type values allow you to link back to the original OpenStreetMap object — for example: view this place in OpenStreetMap >>
Pros
Open data (OpenStreetMap-based) — transparent data source that allows you to cache, store, and redistribute data, depending on the OpenStreetMap license terms
Affordable pricing model — as a service provider (not a data owner), Geoapify offers more cost-efficient and predictable pricing
Simple and intuitive API — uses
GETrequests with clear query parameters, making it easy to test and integrateFlexible usage — not tightly coupled to a specific platform, allowing more freedom in how data is stored and displayed
GeoJSON-like response format — ready to use directly in mapping libraries without transformation
Cons
No built-in reviews or ratings — unlike Google, the API does not provide user-generated reviews, ratings, or photos
Data completeness varies — coverage and quality depend on OpenStreetMap data in the region
Less enriched data — fewer high-level attributes compared to Google’s dataset
May require additional data sources — some features (e.g. reviews or popularity) may require integration with other APIs
Foursquare — Places API
Foursquare Places API provides access to a global POI dataset enriched with location intelligence and user behavior signals.
It is known for its structured place data and strong categorization system, making it well-suited for search and discovery use cases.
curl --request GET \
--url 'https://api.foursquare.com/v3/places/search?ll=25.777415%2C-80.132432&radius=1000&categories=restaurants' \
--header 'X-Places-Api-Version: 2023-10-01' \
--header 'accept: application/json'
This request searches for restaurants near the given coordinates in Miami Beach within a 1 km radius.
Foursquare uses category IDs instead of text-based categories, which allows precise filtering but requires referencing their category taxonomy.
Example response
{
"results": [
{
"fsq_id": "5f8a9c1b2d_example",
"name": "Ocean Breeze Grill",
"location": {
"formatted_address": "200 Ocean Dr, Miami Beach, FL 33139",
"locality": "Miami Beach",
"region": "FL",
"country": "US"
},
"geocodes": {
"main": {
"latitude": 25.778245,
"longitude": -80.130912
}
},
"categories": [
{
"id": 13065,
"name": "Restaurant",
"short_name": "Restaurant"
}
],
"distance": 180,
"rating": 4.3,
"price": 2,
"tel": "+1 305-555-0199",
"website": "https://oceanbreeze.example.com",
"hours": {
"display": "Mon–Sun 11:00 AM – 11:00 PM",
"open_now": true
},
"features": {
"services": {
"delivery": true,
"takeout": true,
"dine_in": {
"reservations": true
}
},
"food_and_drink": {
"meals": {
"lunch": true,
"dinner": true
},
"alcohol": {
"beer": true,
"wine": true
}
},
"amenities": {
"outdoor_seating": true,
"wifi": "free"
}
},
"photos": [
{
"id": "photo_001",
"prefix": "https://fastly.4sqi.net/img/general/",
"suffix": "/12345_sample.jpg",
"width": 800,
"height": 600
}
],
"tips": [
{
"id": "tip_001",
"text": "Great seafood and ocean views. Try the grilled snapper!",
"agree_count": 12
}
],
"stats": {
"total_ratings": 540,
"total_photos": 120,
"total_tips": 34
},
"popularity": 0.82,
"verified": true
}
],
"context": {
"geo_bounds": {
"circle": {
"center": {
"latitude": 25.777415,
"longitude": -80.132432
},
"radius": 1000
}
}
}
}
The response includes core place information such as name, location, categories, and distance. Depending on the endpoint and plan, Foursquare can also provide additional enrichment such as ratings, popularity signals, and place attributes.
Pros
Rich and structured place data — includes categories, attributes, popularity signals, and user-generated content
Includes user-generated content — provides photos and tips, adding useful context to places, though the coverage and depth may vary compared to larger platforms like Google Maps Platform
Strong categorization system — enables precise filtering using a well-defined taxonomy (category IDs)
High-quality curated dataset — especially strong in urban areas and commercial locations
Enriched data signals — provides popularity, trends, and behavioral insights beyond basic POI data
Cons
Strict licensing restrictions — data is provided under a limited, revocable license and must be used only within your application; you cannot store, merge, redistribute, or build your own POI dataset, and must display “Powered by Foursquare” attribution
Limited external usage — reports or demos must be non-monetized, non-competitive, and cannot expose material portions of data
Category-based filtering complexity — requires working with category IDs instead of simple text queries
Pricing scales with usage — costs can increase with request volume and data enrichment
HERE Technologies — Places API
📘 Docs · 🔎 Playground · 💰 Pricing · ⚖️ Terms
HERE Technologies provides location services and POI data through its Discover endpoint, which allows searching for places by category, location, and filters.
It is widely used in navigation, mobility, and enterprise applications, especially where accurate geolocation is critical.
Example request
GET https://discover.search.hereapi.com/v1/discover?at=25.777415,-80.132432&q=restaurant&limit=10&apiKey=YOUR_API_KEY
This request searches for restaurants near the given coordinates in Miami Beach.
Example response
{
"items": [
{
"id": "here-poi-001",
"title": "Ocean Breeze Restaurant",
"resultType": "place",
"address": {
"label": "150 Ocean Dr, Miami Beach, FL 33139, United States",
"countryCode": "USA",
"countryName": "United States",
"stateCode": "FL",
"state": "Florida",
"city": "Miami Beach",
"street": "Ocean Dr",
"postalCode": "33139",
"houseNumber": "150"
},
"position": {
"lat": 25.778215,
"lng": -80.131102
},
"distance": 210,
"categories": [
{
"id": "100-1000-0000",
"name": "Restaurant",
"primary": true
}
],
"foodTypes": [
{
"id": "101-000",
"name": "Seafood",
"primary": true
}
],
"contacts": [
{
"phone": [
{
"value": "+1 305-555-0188"
}
],
"www": [
{
"value": "https://oceanbreeze.example.com"
}
]
}
],
"openingHours": [
{
"text": [
"Mon–Sun: 11:00 AM – 11:00 PM"
],
"isOpen": true
}
],
"timeZone": {
"name": "America/New_York",
"utcOffset": "-04:00"
},
"chains": [
{
"id": "chain-001",
"name": "Ocean Breeze Group"
}
],
"media": {
"images": {
"items": [
{
"href": "https://images.example.com/photo1.jpg",
"supplier": {
"id": "tripadvisor"
}
}
]
},
"ratings": {
"items": [
{
"count": 320,
"average": 4.2,
"supplier": {
"id": "tripadvisor"
}
}
]
}
}
}
],
"count": 1,
"limit": 10,
"offset": 0
}
The HERE API returns structured place data with a strong focus on address details, categories, and consistency across regions.
Depending on the available data, the response may include:
- Contact details such as phone numbers and websites
- Opening hours in both structured and human-readable formats
- Categories and food types for classification
- Media and ratings, often sourced from third-party providers (for example, TripAdvisor)
- Extended attributes such as EV charging stations, fuel information, or logistics-related data
Compared to consumer-focused APIs, HERE emphasizes reliable, standardized data and global coverage rather than building its own user-generated content ecosystem.
Pros
Reliable global coverage — strong presence across multiple regions and industries, including automotive and logistics
Structured and consistent data — predictable response format with detailed address components and classification
Simple request model — supports text-based and location-based search without complex request bodies
Enterprise-focused features — includes extended attributes such as EV stations, fuel data, and logistics-related information
Third-party enrichment — may include ratings and media from external providers (for example, TripAdvisor)
Cons
Proprietary dataset — data is not open and cannot be freely stored, reused, or redistributed
Limited user-generated content — generally does not provide native reviews or rich photo ecosystems like larger consumer platforms
Licensing restrictions — usage is governed by HERE terms, including limitations on storage, redistribution, and usage scope
Pricing scales with usage — costs depend on request volume and service usage
TomTom — Places API
📘 Docs · 🔎 Playground · 💰 Pricing · ⚖️ Terms
TomTom provides access to place data through its Search and Places APIs, allowing developers to search for POIs by category, name, or geographic location.
It is widely used in navigation, mobility, and enterprise applications, with a focus on accurate geolocation and global coverage.
Example request
curl -X GET "https://api.tomtom.com/search/2/categorySearch/restaurants.json?lat=25.777415&lon=-80.132432&radius=1000&categorySet=7315&view=Unified&relatedPois=off&key=YOUR_API_KEY" \
-H "accept: */*"
This request searches for restaurants within a 1 km radius around Miami Beach and returns categorized place results using TomTom’s Places API.
Example response
{
"summary": {
"query": "restaurants",
"queryType": "NON_NEAR",
"numResults": 10,
"offset": 0,
"totalResults": 84,
"geoBias": {
"lat": 25.777415,
"lon": -80.132432
}
},
"results": [
{
"type": "POI",
"id": "tomtom-poi-001",
"score": 2.57,
"dist": 145.3,
"poi": {
"name": "Ocean Breeze Cafe",
"phone": "+1 305-555-0181",
"url": "www.oceanbreeze.example.com",
"categorySet": [
{
"id": 7315
}
],
"categories": [
"restaurant"
],
"classifications": [
{
"code": "RESTAURANT",
"names": [
{
"nameLocale": "en-US",
"name": "restaurant"
}
]
}
]
},
"address": {
"streetNumber": "120",
"streetName": "Ocean Dr",
"municipality": "Miami Beach",
"countrySubdivision": "FL",
"postalCode": "33139",
"countryCode": "US",
"country": "United States",
"freeformAddress": "120 Ocean Dr, Miami Beach, FL 33139"
},
"position": {
"lat": 25.778201,
"lon": -80.131502
},
"entryPoints": [
{
"type": "main",
"position": {
"lat": 25.77812,
"lon": -80.13144
}
}
]
},
{
"type": "POI",
"id": "tomtom-poi-002",
"score": 2.56,
"dist": 210.8,
"poi": {
"name": "Seaside Grill",
"categorySet": [
{
"id": 7315
}
],
"categories": [
"restaurant"
]
},
"address": {
"freeformAddress": "200 Collins Ave, Miami Beach, FL 33139"
},
"position": {
"lat": 25.77901,
"lon": -80.13088
}
}
]
}
The response includes a summary section plus a list of matching POIs. For each result, TomTom returns core place information such as the place name, categories, address, coordinates, and distance. Some results may also include contact details like a phone number or website.
A useful detail is the entryPoints field, which can help in routing and navigation scenarios by showing where the place can actually be accessed.
Pros
Reliable global location data — strong coverage optimized for navigation and mobility use cases
Well integrated with routing services — works seamlessly with routing, traffic, and navigation APIs
Simple and developer-friendly API — clear parameters and predictable responses
Accurate positioning data — includes fields like
entryPointsfor real-world navigation
Cons
Limited focus on user-generated content — minimal support for reviews or community-driven insights
Limited media support — photos and rich media are not part of standard responses
Proprietary dataset — data cannot be freely stored or redistributed
Licensing restrictions — usage is constrained by TomTom terms and conditions
What to choose?
Choosing a Places API depends not only on features, but also on your use case, constraints, and budget. Here’s a practical way to approach it.
1. Define your goal
Start with what you actually need to build:
Rich place details (reviews, photos, popularity signals) → Best fit: Google Maps Platform, Foursquare, HERE
Category-based search with structured place data (no need for reviews) → Best fit: Geoapify, TomTom, HERE
Navigation, routing, fleet, or logistics applications
→ Best fit: TomTom, HERE, Geoapify
👉 If your app relies on user-generated content, your main options are Google or Foursquare.
2. Consider your budget early
Pricing models differ significantly:
- Google Maps Platform → powerful but can scale in cost quickly
- Foursquare → commercial dataset with flexible plans
- HERE / TomTom → enterprise-oriented pricing, often bundled with other services
- Geoapify → affordable and predictable pricing
👉 Always estimate usage before building — especially for high-traffic apps.
3. Check licensing and data restrictions
This is often a deciding factor:
- Some providers restrict storing or caching data (e.g., Google)
- Some allow more flexibility with usage and storage
- Most require attribution
👉 If you need to store or reuse data, this can narrow your options quickly.
4. Match provider strengths
Each provider is optimized for different scenarios:
- Google / Foursquare → rich place content and discovery
- HERE / TomTom → navigation, routing, and enterprise mobility
- Geoapify → flexible APIs with open-data foundation, providing access to OpenStreetMap (OSM) data
👉 Example:
- Building a city discovery app → Foursquare or Geoapify
- Building a delivery platform → HERE or TomTom
- Building an infrastructure or utility app (electricity, supply, field services) → Geoapify, TomTom, or HERE
5. Think long-term
Switching providers later can be costly.
Consider:
- scaling costs
- API limits
- vendor lock-in
- data portability
Summary
There is no single “best” API — only the best fit for your case.
- Choose Google or Foursquare for rich place content
- Choose HERE or TomTom for routing and mobility
- Choose Geoapify for flexibility, open data, and cost efficiency
👉 The right choice comes down to balancing features, budget, and licensing constraints.

Top comments (0)