How to run a Google Maps business search
GET request to /v1/google/business-search with your input. You get clean JSON back in seconds for 2 credits per call — no OAuth, scraping or platform SDKs. Local businesses from a Maps search — name, address, phone, website, rating, hours, place id. Flat 2 credits. No emails.How to run a Google Maps business search (step by step)
- 1
Get a free API key
Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.
- 2
Call the Google Maps Business Search API
Send an authenticated GET request to /v1/google/business-search with your input. No OAuth, no scraping setup.
- 3
Read the JSON response
Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.
Code example
curl "https://api.captapi.com/v1/google/business-search?q=The%20Backspace" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."What the response looks like
{
"success": true,
"data": {
"query": "The Backspace",
"location": "Austin,Texas,United States",
"locationCode": null,
"language": "en",
"limit": 1,
"totalReturned": 1,
"omittedCount": 0,
"businesses": [
{
"rank": 1,
"title": "The Backspace",
"category": "Pizza",
"additionalCategories": [
"Italian restaurant",
"Restaurant"
],
"snippet": "507 San Jacinto Blvd, Austin, TX 78701",
"address": "507 San Jacinto Blvd, Austin, TX 78701",
"city": "Austin",
"region": "Texas",
"zip": "78701",
"countryCode": "US",
"phone": "+1512-474-9899",
"website": "https://www.backspacepizza.com/?utm_source=GMBlisting&utm_medium=organic",
"contactUrl": "https://party-request.tripleseat.com/venues/O476HqLy/?rwg_token=AE37R_i_o_MnaL1e65JJJvaOltQTL9_QXm5sl_BttOhPUA7uJzO396kceRBPO9SmXs8ST8w4slgTPqEDJNYOTalzcn2EkPCQ-w%3D%3D",
"bookOnlineUrl": "https://www.google.com/maps/reserve/v/dine/c/ooA7fdRRGqw?source=pa&opi=79508299&hl=en-US&gei=HD7KarawF_38wbkP5Mq6wQE&ahbb=1&sourceurl=https://www.google.com/search?tbm%3Dmap%26authuser%3D0%26hl%3Den%26gl%3Dus%26pb%3D!4m9!1m3!1d546887.6385058826!2d-97.7430608!3d30.267153!2m0!3m2!1i1920!2i945!4f13.1!7i1!8i0!10b1!12m28!1m1!18b1!2m3!5m1!6e2!20e3!6m12!4b1!49b1!63m0!73m0!74i150000!75b1!85b1!89b1!91b1!110m0!114b1!149b1!10b1!14b1!16b1!17m1!3e1!20m3!5e2!6b1!14b1!19m4!2m3!1i360!2i120!4i8!20m57!2m2!1i203!2i100!3m2!2i4!5b1!6m6!1m2!1i86!2i86!1m2!1i408!2i240!7m42!1m3!1e1!2b0!3e3!1m3!1e2!2b1!3e2!1m3!1e2!2b0!3e3!1m3!1e8!2b0!3e3!1m3!1e10!2b0!3e3!1m3!1e10!2b1!3e2!1m3!1e9!2b1!3e2!1m3!1e10!2b0!3e3!1m3!1e10!2b1!3e2!1m3!1e10!2b0!3e4!2b1!4b1!9b0!22m6!1s!2s!4m1!2i20588!7e81!12e3!24m78!1m25!13m9!2b1!3b1!4b1!6i1!8b1!9b1!14b1!20b1!25b1!18m14!3b1!4b1!5b1!6b1!13b1!14b1!15b1!17b1!21b1!22b0!25b0!27m1!1b0!28b0!2b1!5m6!2b1!3b1!5b1!6b1!7b1!10b1!10m1!8e3!11m1!3e1!14m1!3b1!17b1!20m2!1e3!1e6!24b1!25b1!26b1!29b1!30m1!2b1!36b1!39m3!2m2!2i1!3i1!43b1!52b1!54m1!1b1!55b1!56m2!1b1!3b1!65m5!3m4!1m3!1m2!1i224!2i298!71b1!72m4!1m2!3b1!5b1!4b1!89b1!103b1!113b1!26m4!2m3!1i80!2i92!4i8!30m28!1m6!1m2!1i0!2i0!2m2!1i530!2i945!1m6!1m2!1i1870!2i0!2m2!1i1920!2i945!1m6!1m2!1i0!2i0!2m2!1i1920!2i20!1m6!1m2!1i0!2i925!2m2!1i1920!2i945!31b1!34m19!2b1!3b1!4b1!6b1!7b1!8m6!1b1!3b1!4b1!5b1!6b1!7b1!9b1!12b1!14b1!20b1!23b1!25b1!26b1!37m1!1e81!42b1!46m1!1e2!47m0!49m6!3b1!6m2!1b1!2b1!7m1!1e3!50m32!1m28!2m7!1u3!4s!5e1!9s!10m2!3m1!1e1!2m7!1u2!4s!5e1!9s!10m2!2m1!1e1!3m6!1u17!2m4!1m2!17m1!1e2!2s!3m1!1u2!3m1!1u3!4BIAE!2e2!3m1!3b1!61b1!67m5!7b1!10b1!14b1!15m1!1b0!69i780!77b1%26q%3DThe%2BBackspace%26ech%3D1",
"rating": 4.5,
"reviewCount": 842,
"ratingDistribution": {
"1": 22,
"2": 21,
"3": 41,
"4": 149,
"5": 609
},
"priceLevel": "moderate",
"latitude": 30.2670094,
"longitude": -97.7404066,
"placeId": "ChIJVaujmae1RIYRpGyZcs9VBao",
"cid": "12251292710800551076",
"mapsUrl": "https://www.google.com/maps/search/?api=1&query=The%20Backspace&query_place_id=ChIJVaujmae1RIYRpGyZcs9VBao",
"image": "https://lh3.googleusercontent.com/grass-cs/AABkmLcIWRZviuv3jSiEDY36-7lOH1ag7TpPvLt3kIn-Dig0aM8HLNWGc9Lekz7Ia46FSyBDdDPZuc30kK8DEb4ebQejzCJke055K3jXy0SQcTLTe_KgHToXulcT4YIpyLhWGBnqzPLS=w408-h306-k-no",
"photoCount": 629,
"isClaimed": true,
"hoursStatus": "close",
"hours": {
"sunday": [
{
"open": {
"hour": 17,
"minute": 0
},
"close": {
"hour": 21,
"minute": 0
}
}
],
"monday": [
{
"open": {
"hour": 17,
"minute": 0
},
"close": {
"hour": 21,
"minute": 0
}
}
],
"tuesday": [
{
"open": {
"hour": 11,
"minute": 30
},
"close": {
"hour": 21,
"minute": 0
}
}
],
"wednesday": [
{
"open": {
"hour": 11,
"minute": 30
},
"close": {
"hour": 21,
"minute": 0
}
}
],
"thursday": [
{
"open": {
"hour": 11,
"minute": 30
},
"close": {
"hour": 21,
"minute": 0
}
}
],
"friday": [
{
"open": {
"hour": 11,
"minute": 30
},
"close": {
"hour": 22,
"minute": 0
}
}
],
"saturday": [
{
"open": {
"hour": 11,
"minute": 30
},
"close": {
"hour": 22,
"minute": 0
}
}
]
},
"isDirectoryItem": false
}
]
}
}Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| q | string | Yes | Keyword, for example plumber or coffee. Min 2 characters. |
| location | string | No | Place name as City,Region,Country, for example Austin,Texas,United States. When set, locationCode is ignored. A free-text city alone (austin) is not a place name. |
| locationCode | integer | No | Numeric place code, used only when location is omitted. Default 2840 (United States). |
| language | string | No | Language code, for example en. Default en. |
| limit | integer | No | Max businesses to return (default 20, max 100). Not a page cursor — there is no next page. Flat 2 credits on every successful call, including zero businesses. |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. |
Frequently asked questions
What does the Google Maps Business Search API do?
The Google Maps Business Search API lets you search and return matching results from a public Google Maps query using one GET request to /v1/google/business-search. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Google Maps Business Search API cost?
Each successful call costs 2 credits, including a search that returns zero businesses — the lookup still ran. Failures are 0 credits. cache=true hits are free; the default is cache=false (24h TTL when cache is on). limit does not change the price. There is no per-business charge.
Do I need a Google Maps API key or OAuth?
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Does this return the owner's email?
No. You get the public Maps listing: name, address, phone, website, rating, hours, and place id. Phone and website are null when Maps does not show them. Emails are a separate job and are not on this endpoint.
Can I page past 100 businesses?
No. limit is 1–100 and there is no nextCursor. 100 is one results page, not a walkable index.
Why did an empty search still cost 2 credits?
A completed search is a successful call, including businesses: []. Failures (4xx and 5xx) cost 0. cache=true hits are free.
What do I pass for a city?
location is City,Region,Country — Austin,Texas,United States, not austin. If you omit location, locationCode is used and defaults to 2840 (United States). A keyword can still include the city (plumber austin) when you are searching the United States.
Is the Google Maps Business Search API suitable for production use?
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
Ready to run a Google Maps business search?
Start free with 100 credits — no credit card required.
Get your free API key