Google APIgoogle.com ↗
Retrieve Google Maps place details, popular times, busyness data, local business search, and attribute filtering across 6 structured endpoints.
What is the Google API?
This API exposes 6 endpoints covering Google Maps place data, from detailed profiles via get_place_details to live busyness histograms via get_place_busyness. Each place response includes coordinates, phone number, website, rating, review count, hours, photos, and timezone. You can also search local businesses by keyword, pull every place from a shared Maps list, and filter search results by specific About-tab attributes like 'Outdoor seating' or 'Dogs allowed'.
curl -X GET 'https://api.parse.bot/scraper/2edf1c7e-f190-4df2-81a2-cc70f45fdf2a/get_place_details?query=Empire+State+Building+New+York&price_level=%24' \ -H 'X-API-Key: $PARSE_API_KEY'
Search Google Maps for a specific place and return its detailed information including photos, popular times, and live busyness data. Returns the top matching place's name, address, coordinates, rating, review count, price level, current opening status with today's hours, phone number, website, categories, neighborhood, timezone, description, photos (logo, cover, and categorized place photos), popular times histogram showing typical busyness by hour for each day of the week, live busyness status, and business specialties/highlights. The query can be a place name, business name with address, or any search term that would work in the Google Maps search bar. An optional price_level filter can be provided; when set, the response includes price_level_filter (the requested level) and price_level_match (boolean indicating whether the place's price level matches the filter). Full place details are always returned regardless of filter match.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Place name, business name, or address to search for on Google Maps (e.g. 'Starbucks 1500 Broadway New York', 'Empire State Building', 'Central Park Zoo'). |
| price_level | string | Optional price level filter. When provided, the response includes price_level_filter and price_level_match fields indicating whether the place matches. Accepted values: '$', '$$', '$$$', '$$$$', '$100+'. |
{
"type": "object",
"fields": {
"name": "string",
"phone": "string or null if not available",
"photos": "array of photo objects each with url (direct image URL), label (e.g. logo, cover, interior, exterior), and caption string - null if no photos available",
"rating": "number or null if not available",
"address": "string",
"website": "string or null if not available",
"latitude": "number",
"place_id": "string - hex place ID",
"timezone": "string or null",
"longitude": "number",
"categories": "array of category strings",
"description": "string or null",
"price_level": "string representing the price rating as shown on Google Maps (e.g. '$', '$$', '$$$', '$$$$', '$100+') - null if not available for this place",
"specialties": "array of strings listing the business's specialties or 'from the business' highlights (e.g. 'LGBTQ+ friendly', 'Identifies as veteran-owned', 'Small business') - null if not available",
"full_address": "string",
"neighborhood": "string or null",
"review_count": "integer total number of reviews for the place - null if not available",
"live_busyness": "object with status string describing current busyness relative to usual, optionally current_hour and current_percent - null if not available or place is closed",
"opening_hours": "object with current_status, today_day, today_date, today_hours - null if not available",
"popular_times": "array of day objects each with day, day_number, and hours array containing hour, busyness_percent, description, time_label - null if not available for this place",
"price_level_match": "boolean indicating whether the place's price_level matches the requested filter - present only when price_level param is provided",
"price_level_filter": "string echoing the requested price_level filter value - present only when price_level param is provided"
},
"sample": {
"data": {
"name": "Starbucks Coffee Company",
"phone": "+1 (555) 012-3456",
"rating": 4,
"address": "1500 Broadway, New York, NY 10036",
"website": "https://www.starbucks.com/store-locator/store/13918/",
"latitude": 40.75664,
"place_id": "0x89c258552071bcb3:0x5cc7129cc313de1a",
"timezone": "America/New_York",
"longitude": -73.9859,
"categories": [
"Coffee shop",
"Breakfast restaurant",
"Cafe",
"Coffee store",
"Espresso bar",
"Internet cafe"
],
"description": "Iconic coffeehouse chain",
"full_address": "Starbucks Coffee Company, 1500 Broadway, New York, NY 10036",
"neighborhood": "Manhattan",
"opening_hours": {
"today_day": "Thursday",
"today_date": [
2026,
6,
25
],
"today_hours": [
"5 AM–12 AM"
],
"current_status": "Open · Closes 12 AM"
}
},
"status": "success"
}
}About the Google API
Place Details and Search
get_place_details accepts a free-text query (business name, address, or both) and returns a single best-match place with fields including name, address, latitude, longitude, phone, website, rating, place_id, timezone, and an array of photos each tagged with a label (logo, cover, interior, exterior) and caption. An optional price_level filter adds price_level_filter and price_level_match fields to the response so callers can verify the match. search_local_businesses runs a broader keyword-plus-location query (e.g. 'plumbers in Johannesburg') and returns up to 20 listings with name, address, phone, website, rating, review count, and place_id.
Busyness and Popular Times
get_place_busyness takes a full Google Maps place URL and returns the complete popular-times histogram: an array of day objects, each containing a day name, day_number (1=Sunday through 7=Saturday), and an hours array with integer hour and busyness_percent values. When the place is currently open and data is available, a live_busyness object includes a status string and optionally current_hour and current_percent. This endpoint is useful for any application that needs to reason about crowd patterns without querying in real time for every hour.
Lists and Attribute Filtering
get_list_places retrieves every saved place from a shared Google Maps list URL. It returns the list_title, list_description, total_places count, and a places array where each entry includes name, address, latitude, longitude, place_id, and any user-added note. get_place_attributes resolves a query to a place and returns its full About-tab attribute set structured as objects with section, section_label, name, and availability flag — covering sections like Payments, Parking, Amenities, Atmosphere, and Pets. search_places_by_attribute combines local search with attribute verification: it searches a page of results, reads each place's attributes, and returns only those matching the requested attribute string, along with searched_count, verified_count, and an unverified_places array explaining any results that could not be checked.
The Google API is a managed, monitored endpoint for google.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when google.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official google.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a foot-traffic dashboard by pulling hourly busyness percentages from
get_place_busynessfor a set of competitor locations. - Aggregate local business directories by querying
search_local_businesseswith profession and city and collecting name, phone, website, and rating. - Populate a travel itinerary app by importing all places from a curated shared Maps list via
get_list_places, including user notes. - Find pet-friendly restaurants in a neighborhood using
search_places_by_attributefiltered on the 'Dogs allowed' attribute. - Enrich a CRM with verified contact and location data by resolving business names through
get_place_detailsand extracting phone, website, and coordinates. - Surface accessibility information by pulling wheelchair and amenity attributes from
get_place_attributesfor a given venue. - Display place cover photos and logos in a location-aware app using the labeled
photosarray fromget_place_details.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Google Maps have an official developer API?+
What does `get_place_busyness` return when live data is unavailable?+
live_busyness is returned as null when the place is currently closed or when Google does not have live data for it. The popular_times histogram (historical averages by hour and day) is still returned when available, regardless of live status.How does `search_places_by_attribute` handle places it cannot verify?+
unverified_places array with a reason value of 'attributes_unavailable', 'lookup_failed', or similar. These places are excluded from the main businesses array. The verified_count and searched_count fields tell you exactly how many results were examined versus confirmed.Does the API return Google Maps reviews or review text?+
rating and review_count values but do not expose individual review text, reviewer names, or review dates. You can fork this API on Parse and revise it to add a reviews endpoint if that data is needed.