Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Data & analysis
Google Maps API
Try itA Google Maps API alternative and Google Places API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no Google Cloud billing account. Use when the user wants to search places by text query or anchor the search to a latitude/longitude coordinate, fetch a place's full details by its feature ID (fid), pull a place's reviews sorted by relevance/newest/rating, or look up a single review by ID. Also covers local business discovery, points-of-interest data, store-locator input, and review monitoring without Google Cloud Platform's API key setup, billing, and per-request pricing.
What it does
Google Maps API - Local Business Search, Place Detail, Reviews
The skill document
Google Maps API - Local Business Search, Place Detail, Reviews
Search Google Maps for places, fetch enriched details for a single place, and read its reviews — all as structured JSON. Three endpoints, each 1 credit.
When to trigger
Use this skill when the user asks to:
- Find local businesses or places ("coffee shops near downtown Austin")
- Get a place's address, phone, hours, rating, or coordinates
- Read reviews for a business or place
- Build a local lead list or enrich places with map data
Setup
Get a free API key at scavio.dev (50 free credits to get started, no card required):
export SCAVIO_API_KEY=sk_live_your_key
Endpoints
| Endpoint | Credits | Description |
|---|---|---|
POST https://api.scavio.dev/api/v2/google/maps/search | 1 | Search places, returns a paginated list |
POST https://api.scavio.dev/api/v2/google/maps/place | 1 | Full details for one place |
POST https://api.scavio.dev/api/v2/google/maps/reviews | 1 | Paginated reviews for a place |
Authorization: Bearer $SCAVIO_API_KEY
Workflow
- Search: call
/maps/searchwith aquery. Results are inlocal_results[], each with aplace_id,data_id,title,rating,address, andgps_coordinates. - Localize: Maps uses
ll(map center@lat,lng,zoomz), NOTgl, to decide where results come from. Pass a city center (e.g.@30.2672,-97.7431,12z) to focus a city. If you only have a country, passgland the API defaultsllto that country's center. - Place details: take a
place_id(ordata_cid) from search and call/maps/placefor full info inplace_results. - Reviews: take a
data_id(orplace_id) and call/maps/reviews. Page withnext_page_token.
Maps Search Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | required | Search query (1-500 chars) |
ll | string | -- | Map center @lat,lng,zoomz. Controls result location. Defaults to gl country center if omitted |
start | number | 0 | Result offset, multiple of 20 (0, 20, 40, ...; max 100) |
gl | string | -- | Geo country, ISO 3166-1 alpha-2 |
hl | string | -- | UI language, ISO 639-1 |
google_domain | string | google.com | Regional Google domain |
Place Details Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
place_id | string | -- | Place ID (ChIJ...). One of place_id or data_cid required |
data_cid | string | -- | Numeric CID. One of place_id or data_cid required |
Reviews Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
data_id | string | -- | Data ID (0xHEX:0xHEX). One of data_id or place_id required |
place_id | string | -- | Place ID (ChIJ...). One of data_id or place_id required |
num | number | -- | Reviews per page (1-20) |
sort_by | string | -- | relevance, newest, highest_rating, lowest_rating |
next_page_token | string | -- | Pagination cursor from a prior response |
hl | string | -- | UI language |
gl | string | -- | Geo country |
google_domain | string | google.com | Regional Google domain |
Example
import requests
BASE = "https://api.scavio.dev"
# Your key from https://scavio.dev/?utm_source=clawhub&utm_medium=skill&utm_campaign=google-maps-api. Load it from your environment or secret
# store in real code - keep it out of source control.
API_KEY = "sk_your_key_here"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1. Search places, focused on Austin
search = requests.post(f"{BASE}/api/v2/google/maps/search", headers=HEADERS,
json={"query": "coffee shops", "ll": "@30.2672,-97.7431,12z"}).json()
place = search["local_results"][0]
print(place["title"], place.get("rating"), place.get("address"))
# 2. Full details for that place
detail = requests.post(f"{BASE}/api/v2/google/maps/place", headers=HEADERS,
json={"place_id": place["place_id"]}).json()
print(detail["place_results"].get("phone"), detail["place_results"].get("hours"))
# 3. Newest reviews
reviews = requests.post(f"{BASE}/api/v2/google/maps/reviews", headers=HEADERS,
json={"data_id": place["data_id"], "sort_by": "newest", "num": 10}).json()
for r in reviews["reviews"]:
print(r.get("rating"), r.get("snippet"))
Responses
Search returns local_results[]; place returns place_results; reviews returns place_info, topics[], reviews[], and pagination. Each also includes response_time, credits_used, credits_remaining, and cached.
{
"local_results": [
{
"position": 1,
"title": "Example Coffee",
"place_id": "ChIJLSsVbGBZwokRR0LlGBSvMOI",
"data_id": "0x89c259606c152b2d:0xe230af1b18e542a7",
"rating": 4.6,
"reviews": 1284,
"address": "123 Main St, Austin, TX",
"gps_coordinates": { "latitude": 30.27, "longitude": -97.74 }
}
],
"response_time": 1103,
"credits_used": 1,
"credits_remaining": 998,
"cached": false
}
Guardrails
- Each call costs 1 credit. Inform the user before paginating through many pages.
- Never fabricate place names, ratings, addresses, or review text. Only return API data.
- Maps localizes by
ll(map center), notgl. To search a specific city, pass its center. placeneeds aplace_id/data_cidandreviewsneeds adata_id/place_id— always run/maps/searchfirst to obtain them.
Failure handling
400means an invalid parameter (e.g. missing place identifier) — fix and retry.401means the API key is invalid or missing. CheckSCAVIO_API_KEY.429means rate or usage limit exceeded. Wait before retrying. See https://scavio.dev/docs/rate-limits?utm_source=clawhub&utm_medium=skill&utm_campaign=google-maps-api.502/503mean upstream is temporarily unavailable. Wait a few seconds before retrying.- If search returns no results, suggest a broader query or a different
ll/gl. - If
SCAVIO_API_KEYis not set, prompt the user to export it before continuing.
Related skills
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Query and manage Linear issues, projects, teams, cycles, labels, and comments through a managed OAuth GraphQL endpoint.
Post videos, photos, text, and documents to 10 social platforms through a single REST API call.
Query Twitter/X profiles, tweets, follower events, and KOL data through the 6551 REST API.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
More from scavio-ai
Browse all skillsA TikTok API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no login and no app review. Use when the user wants to search TikTok posts by keyword and sort by most-liked or most recent within a date range, look up a post by its share URL or ID, scrape a TikTok profile by @username, pull a user's posts, followers, or followings, fetch a hashtag's posts, pull posts using a specific sound/music track, get posts from a location, or read a post's comments and comment replies. Also covers TikTok trend tracking, hashtag monitoring, influencer discovery, competitor content analysis, and TikTok data pipelines without official TikTok API access or a scraping browser.
An Apple App Store API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no Apple Developer Program membership. Use when the user wants to search iOS apps by keyword in any country's storefront, fetch an app's or app bundle's full details, reviews sorted by recent/helpful, apps similar to a given app, search or fetch app bundles, or fetch a developer's app catalog. Also covers iOS app store optimization (ASO) research, competitor app monitoring, localized storefront comparison, and app discovery without Apple Developer Program access.
A Google News API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no RSS scraping. Use when the user wants keyword search across Google News scoped to a language edition, section headlines (world, business, technology, entertainment, sport, science, health, or a specific topic ID), the latest headlines, a list of supported language-region codes, or to decode a Google News redirect URL into the real article URL. Also covers news monitoring, headline aggregation, media tracking, and press-mention alerts without scraping Google News' RSS feeds directly.
A Google Play Store API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no Google Play Console access. Use when the user wants to search Android apps by keyword with price (free/paid) and country storefront filters, fetch an app's full details, reviews sorted by newest/rating/helpfulness, permissions, or data safety disclosure, list apps similar to a given app, or fetch a developer's app catalog. Also covers Android app store optimization (ASO) research, competitor app monitoring, review sentiment input, and app discovery without Google Play Console developer access.
A Yelp API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no Yelp Fusion API app approval. Use when the user wants to search local businesses by query and location sorted by rating or review count, fetch a business's full details by ID or by its Yelp URL handle/slug, or fetch a business's reviews. Also covers local business discovery, restaurant/service research, review sentiment input, and competitor monitoring for local businesses without Yelp Fusion API's app-approval process and daily call caps.