Local Places
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Peter Steinberger
@steipete
What This Skill Does
Local proxy server that wraps the Google Places API, allowing you to resolve location names to coordinates and search for nearby places like restaurants or cafes with filters for rating, open status, and price level.
Replaces manually crafting Google Places API requests by providing a local HTTP endpoint with a simpler two-step flow for location resolution and place search.
When to Use It
- Find coffee shops near a specific address that are currently open
- Resolve a vague location like 'downtown' to precise coordinates for place search
- List highly-rated restaurants within a 1km radius of a given point
- Get detailed information about a specific place using its place ID
- Search for gyms with a minimum rating of 4.0 and moderate price level
Install
$ openclaw skills install @steipete/local-places๐ Local Places
Find places, Go fast
Search for nearby places using a local Google Places API proxy. Two-step flow: resolve location first, then search.
Setup
cd {baseDir}
echo "GOOGLE_PLACES_API_KEY=your-key" > .env
uv venv && uv pip install -e ".[dev]"
uv run --env-file .env uvicorn local_places.main:app --host 127.0.0.1 --port 8000
Requires GOOGLE_PLACES_API_KEY in .env or environment.
Quick Start
-
Check server:
curl http://127.0.0.1:8000/ping -
Resolve location:
curl -X POST http://127.0.0.1:8000/locations/resolve \
-H "Content-Type: application/json" \
-d '{"location_text": "Soho, London", "limit": 5}'
- Search places:
curl -X POST http://127.0.0.1:8000/places/search \
-H "Content-Type: application/json" \
-d '{
"query": "coffee shop",
"location_bias": {"lat": 51.5137, "lng": -0.1366, "radius_m": 1000},
"filters": {"open_now": true, "min_rating": 4.0},
"limit": 10
}'
- Get details:
curl http://127.0.0.1:8000/places/{place_id}
Conversation Flow
- If user says "near me" or gives vague location โ resolve it first
- If multiple results โ show numbered list, ask user to pick
- Ask for preferences: type, open now, rating, price level
- Search with
location_biasfrom chosen location - Present results with name, rating, address, open status
- Offer to fetch details or refine search
Filter Constraints
filters.types: exactly ONE type (e.g., "restaurant", "cafe", "gym")filters.price_levels: integers 0-4 (0=free, 4=very expensive)filters.min_rating: 0-5 in 0.5 incrementsfilters.open_now: booleanlimit: 1-20 for search, 1-10 for resolvelocation_bias.radius_m: must be > 0
Response Format
{
"results": [
{
"place_id": "ChIJ...",
"name": "Coffee Shop",
"address": "123 Main St",
"location": {"lat": 51.5, "lng": -0.1},
"rating": 4.6,
"price_level": 2,
"types": ["cafe", "food"],
"open_now": true
}
],
"next_page_token": "..."
}
Use next_page_token as page_token in next request for more results.
Top skills in this category
Computer Use
@ram-raghav-sFull desktop computer use for headless Linux servers. Xvfb + XFCE virtual desktop with xdotool automation. 17 actions (click, type, scroll, screenshot, drag,...
SEO Intelligence & Competitor Analysis Pro
@qqyulePerform deep SEO competitor analysis, including keyword research, backlink checking, and content strategy mapping. Use when the user wants to analyze a website's competitors or improve their own SEO ranking by studying the competition.
System Resource Monitor
@passersssA clean, reliable system resource monitor for CPU load, RAM, Swap, and Disk usage. Optimized for OpenClaw.
Google Search Console
@jdrhyneQuery Google Search Console for SEO data - search queries, top pages, CTR opportunities, URL inspection, and sitemaps. Use when analyzing search performance,...
Deep Scraper
@opsunPerforms deep scraping of complex sites like YouTube using containerized Crawlee, extracting validated, ad-free transcripts and content as JSON output.