Data & analysis

Google Maps API

Try it

A 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

EndpointCreditsDescription
POST https://api.scavio.dev/api/v2/google/maps/search1Search places, returns a paginated list
POST https://api.scavio.dev/api/v2/google/maps/place1Full details for one place
POST https://api.scavio.dev/api/v2/google/maps/reviews1Paginated reviews for a place
Authorization: Bearer $SCAVIO_API_KEY

Workflow

  1. Search: call /maps/search with a query. Results are in local_results[], each with a place_id, data_id, title, rating, address, and gps_coordinates.
  2. Localize: Maps uses ll (map center @lat,lng,zoomz), NOT gl, 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, pass gl and the API defaults ll to that country's center.
  3. Place details: take a place_id (or data_cid) from search and call /maps/place for full info in place_results.
  4. Reviews: take a data_id (or place_id) and call /maps/reviews. Page with next_page_token.

Maps Search Parameters

ParameterTypeDefaultDescription
querystringrequiredSearch query (1-500 chars)
llstring--Map center @lat,lng,zoomz. Controls result location. Defaults to gl country center if omitted
startnumber0Result offset, multiple of 20 (0, 20, 40, ...; max 100)
glstring--Geo country, ISO 3166-1 alpha-2
hlstring--UI language, ISO 639-1
google_domainstringgoogle.comRegional Google domain

Place Details Parameters

ParameterTypeDefaultDescription
place_idstring--Place ID (ChIJ...). One of place_id or data_cid required
data_cidstring--Numeric CID. One of place_id or data_cid required

Reviews Parameters

ParameterTypeDefaultDescription
data_idstring--Data ID (0xHEX:0xHEX). One of data_id or place_id required
place_idstring--Place ID (ChIJ...). One of data_id or place_id required
numnumber--Reviews per page (1-20)
sort_bystring--relevance, newest, highest_rating, lowest_rating
next_page_tokenstring--Pagination cursor from a prior response
hlstring--UI language
glstring--Geo country
google_domainstringgoogle.comRegional 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), not gl. To search a specific city, pass its center.
  • place needs a place_id/data_cid and reviews needs a data_id/place_id — always run /maps/search first to obtain them.

Failure handling

  • 400 means an invalid parameter (e.g. missing place identifier) — fix and retry.
  • 401 means the API key is invalid or missing. Check SCAVIO_API_KEY.
  • 429 means 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 / 503 mean 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_KEY is not set, prompt the user to export it before continuing.

Related skills

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

Query and manage Linear issues, projects, teams, cycles, labels, and comments through a managed OAuth GraphQL endpoint.

by byungkyu518 installs18 stars

Post videos, photos, text, and documents to 10 social platforms through a single REST API call.

by victorcavero14375 installs50 stars

Query Twitter/X profiles, tweets, follower events, and KOL data through the 6551 REST API.

by infra403840 installs27 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván555 installs18 stars

More from scavio-ai

Browse all skills

A 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.

by fetcher-sh1 installs

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.

by fetcher-sh1 installs1 stars

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.

by fetcher-sh1 installs

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.

by fetcher-sh1 installs

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.

by fetcher-sh1 installs