goplaces

package module
v0.4.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2026 License: MIT Imports: 2 Imported by: 0

README

goplaces 📍 — Find the place. Skip the payload archaeology.

goplaces banner

CI GitHub release Go License Homebrew Docs

goplaces is a Go client and CLI for Google Places API (New) and selected Routes API workflows. It is for terminal use, shell automation, agents, and Go programs that need typed requests and JSON output without hand-building field masks or request payloads.

Install

Homebrew installs the published binary on macOS or Linux:

brew install --cask openclaw/tap/goplaces

With Go 1.26.8 or newer:

go install github.com/steipete/goplaces/cmd/goplaces@latest

Prebuilt archives and checksums are available from GitHub Releases.

Quick start

Enable Places API (New) in a Google Cloud project, create an API key, then run:

export GOOGLE_PLACES_API_KEY="..."
goplaces search "coffee near Central Park" --limit 5
goplaces search "coffee near Central Park" --limit 5 --json

The default output is compact text for people; --json emits the response shape for scripts and agents. See API key setup for API enablement, key restrictions, billing, and quota guidance.

Commands

Command What it does
search Finds places by text, filters, and optional location bias.
nearby Finds places inside a latitude, longitude, and radius.
autocomplete Returns place and query suggestions for partial input.
details Fetches place details, with optional reviews and photos.
photo Resolves a Places photo resource to a media URL.
resolve Resolves free-form location text to place candidates.
route Samples a route and searches for places near its waypoints.
directions Returns distance, duration, warnings, and optional steps.

Run goplaces <command> --help for the current flags. Long flags accept both --flag value and --flag=value.

The route and directions commands also require Routes API. Directions default to walking with metric units and support driving comparisons, route modifiers, and departure or transit arrival times.

Configuration

GOOGLE_PLACES_API_KEY supplies the API key to the CLI and Go client. The same key can access both APIs when they are enabled in one Google Cloud project.

These endpoint overrides are intended for tests, proxies, and mock servers:

Environment variable Default
GOOGLE_PLACES_BASE_URL https://places.googleapis.com/v1
GOOGLE_ROUTES_BASE_URL https://routes.googleapis.com
GOOGLE_DIRECTIONS_BASE_URL https://routes.googleapis.com

Global flags include --api-key, --timeout, --json, and --no-color. Command-specific examples and response details live at goplaces.sh.

Go client

The root module exposes the same search, nearby, autocomplete, details, photo, resolve, route, and directions workflows as typed Go methods.

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/steipete/goplaces"
)

func main() {
	client := goplaces.NewClient(goplaces.Options{APIKey: os.Getenv("GOOGLE_PLACES_API_KEY")})
	result, err := client.Search(context.Background(), goplaces.SearchRequest{Query: "coffee", Limit: 5})
	if err != nil {
		panic(err)
	}
	fmt.Println(len(result.Results))
}

See the Go package reference for exported request and response types and the client reference notes for request-specific behavior. The project's intended scope and compatibility boundaries are in VISION.md.

Development

Go 1.26.8 is required.

go mod download
go build ./...
make lint test coverage

Authenticated end-to-end tests are optional; see development notes.

License

MIT. See LICENSE.

Documentation

Overview

Package goplaces provides a Go client for the Google Places API (New).

Index

Constants

View Source
const DefaultBaseURL = places.DefaultBaseURL

DefaultBaseURL is the default endpoint for the Places API (New).

Variables

View Source
var ErrMissingAPIKey = places.ErrMissingAPIKey

ErrMissingAPIKey indicates a missing API key.

Functions

This section is empty.

Types

type APIError

type APIError = places.APIError

APIError represents an HTTP error from the Places API.

type AuthorAttribution

type AuthorAttribution = places.AuthorAttribution

AuthorAttribution describes a review author.

type AutocompleteRequest added in v0.2.0

type AutocompleteRequest = places.AutocompleteRequest

AutocompleteRequest defines input for autocomplete suggestions.

type AutocompleteResponse added in v0.2.0

type AutocompleteResponse = places.AutocompleteResponse

AutocompleteResponse contains suggestions from autocomplete.

type AutocompleteSuggestion added in v0.2.0

type AutocompleteSuggestion = places.AutocompleteSuggestion

AutocompleteSuggestion is a place or query prediction.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client wraps access to the Google Places API.

func NewClient

func NewClient(opts Options) *Client

NewClient builds a client with sane defaults.

func (*Client) Autocomplete added in v0.2.0

func (c *Client) Autocomplete(ctx context.Context, req AutocompleteRequest) (AutocompleteResponse, error)

Autocomplete returns place and query suggestions for partial input.

func (*Client) Details

func (c *Client) Details(ctx context.Context, placeID string) (PlaceDetails, error)

Details fetches place details by place ID.

func (*Client) DetailsWithOptions

func (c *Client) DetailsWithOptions(ctx context.Context, req DetailsRequest) (PlaceDetails, error)

DetailsWithOptions fetches place details with optional locale and field options.

func (*Client) Directions added in v0.3.0

func (c *Client) Directions(ctx context.Context, req DirectionsRequest) (DirectionsResponse, error)

Directions fetches directions between two locations.

func (*Client) NearbySearch added in v0.2.0

func (c *Client) NearbySearch(ctx context.Context, req NearbySearchRequest) (NearbySearchResponse, error)

NearbySearch searches places near a lat/lng radius.

func (*Client) PhotoMedia added in v0.2.0

func (c *Client) PhotoMedia(ctx context.Context, req PhotoMediaRequest) (PhotoMediaResponse, error)

PhotoMedia fetches a photo media URL.

func (*Client) Resolve

Resolve resolves a free-form location into place candidates.

func (*Client) Route added in v0.2.0

func (c *Client) Route(ctx context.Context, req RouteRequest) (RouteResponse, error)

Route searches for places along a route between two locations.

func (*Client) Search

func (c *Client) Search(ctx context.Context, req SearchRequest) (SearchResponse, error)

Search runs a Places text search.

type DetailsRequest

type DetailsRequest = places.DetailsRequest

DetailsRequest fetches place details with optional locale hints.

type DirectionsRequest added in v0.3.0

type DirectionsRequest = places.DirectionsRequest

DirectionsRequest describes a directions query between two locations.

type DirectionsResponse added in v0.3.0

type DirectionsResponse = places.DirectionsResponse

DirectionsResponse contains a single route summary and steps.

type DirectionsStep added in v0.3.0

type DirectionsStep = places.DirectionsStep

DirectionsStep is a single navigation step.

type Filters

type Filters = places.Filters

Filters are optional search refinements.

type LatLng

type LatLng = places.LatLng

LatLng holds geographic coordinates.

type LocalizedText

type LocalizedText = places.LocalizedText

LocalizedText is a text value with an optional language code.

type LocationBias

type LocationBias = places.LocationBias

LocationBias limits search results to a circular area.

type LocationResolveRequest

type LocationResolveRequest = places.LocationResolveRequest

LocationResolveRequest resolves a text location into place candidates.

type LocationResolveResponse

type LocationResolveResponse = places.LocationResolveResponse

LocationResolveResponse contains resolved locations.

type NearbySearchRequest added in v0.2.0

type NearbySearchRequest = places.NearbySearchRequest

NearbySearchRequest defines a nearby search query.

type NearbySearchResponse added in v0.2.0

type NearbySearchResponse = places.NearbySearchResponse

NearbySearchResponse contains nearby search results.

type Options

type Options = places.Options

Options configures the Places client.

type Photo added in v0.2.0

type Photo = places.Photo

Photo describes photo metadata for a place.

type PhotoMediaRequest added in v0.2.0

type PhotoMediaRequest = places.PhotoMediaRequest

PhotoMediaRequest fetches a photo URL from a photo resource name.

type PhotoMediaResponse added in v0.2.0

type PhotoMediaResponse = places.PhotoMediaResponse

PhotoMediaResponse contains the photo URL for a photo name.

type PlaceDetails

type PlaceDetails = places.PlaceDetails

PlaceDetails is a detailed view of a place.

type PlaceSummary

type PlaceSummary = places.PlaceSummary

PlaceSummary is a compact view of a place.

type ResolvedLocation

type ResolvedLocation = places.ResolvedLocation

ResolvedLocation is a place candidate for a location string.

type Review

type Review = places.Review

Review represents a user review of a place.

type ReviewVisitDate

type ReviewVisitDate = places.ReviewVisitDate

ReviewVisitDate describes the date a reviewer visited a place.

type RouteRequest added in v0.2.0

type RouteRequest = places.RouteRequest

RouteRequest describes a query to search along a route.

type RouteResponse added in v0.2.0

type RouteResponse = places.RouteResponse

RouteResponse contains sampled waypoints with search results.

type RouteWaypoint added in v0.2.0

type RouteWaypoint = places.RouteWaypoint

RouteWaypoint ties a sampled route location to search results.

type SearchRequest

type SearchRequest = places.SearchRequest

SearchRequest defines a text search with optional filters.

type SearchResponse

type SearchResponse = places.SearchResponse

SearchResponse contains a list of places and optional pagination token.

type ValidationError

type ValidationError = places.ValidationError

ValidationError describes an invalid request payload.

Directories

Path Synopsis
cmd
goplaces command
Package main implements the goplaces CLI entrypoint.
Package main implements the goplaces CLI entrypoint.
internal
cli
Package cli implements the goplaces command-line interface.
Package cli implements the goplaces command-line interface.
places
Package places implements the Places and Routes API client.
Package places implements the Places and Routes API client.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL