Places by keyword + address
Recommended flow; the gateway mounts the canonical URL automatically.
{
"keyword": "coffee",
"address": "Rua XV de Novembro, 160, Curitiba, PR",
"target": "google.com",
"type": "places"
} // docs
Extracts locations from Google Maps by keyword and reference address.
google.com:places · 1 credit per request
Standard credit cost. Your account pricing is shown in the sandbox.
Try this operation in the sandboxcurl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keyword": "coffee",
"address": "Rua XV de Novembro, 160, Curitiba, PR",
"target": "google.com",
"type": "places"
}' Keep your API key on your server. See the quickstart for authentication and response handling.
The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.
POST /v1/mcp · Bearer or X-API-Key authentication
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "google_com_places",
"arguments": {
"keyword": "coffee",
"address": "Rua XV de Novembro, 160, Curitiba, PR",
"executionId": "exec_example_123"
}
}
} Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.
| Field | Type | Requirement | Rule | Default | Example |
|---|---|---|---|---|---|
| url URL extraction target. For some PLPs it can be omitted when API assembles URL from other fields. | string (URL) | Optional | Optional; when absent, the gateway mounts the canonical search URL. | - | https://www.google.com/maps/search/?api=1&query=coffee+curitiba+pr |
| keyword Keyword for PLP searches. In Google Search it represents the query sent to Google; in Booking PLP is mandatory; in other PLPs it can replace URL. | string | Required | Mandatory to define the type of location searched. | - | coffee |
| address Reference address used by Google Places to locate the search area. | string | Required | Required to define the search area on Google Maps. | - | Rua XV de Novembro, 160, Curitiba, PR |
| target Target source for extraction. | enum | Required | Always mandatory in the payload and must be google.com. | - | google.com |
| type Extraction type: pdp, idp, plp, ilp, quote, review or places. | enum | Required | Always mandatory in the payload and must be places. | - | places |
Recommended flow; the gateway mounts the canonical URL automatically.
{
"keyword": "coffee",
"address": "Rua XV de Novembro, 160, Curitiba, PR",
"target": "google.com",
"type": "places"
} URL can be sent for traceability, keeping keyword and address mandatory.
{
"url": "https://www.google.com/maps/search/?api=1&query=coffee+curitiba+pr",
"keyword": "coffee",
"address": "Rua XV de Novembro, 160, Curitiba, PR",
"target": "google.com",
"type": "places"
} Leaf paths and expected types. Field names and enum values are part of the API contract.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"notFound": "boolean (optional; true when the upstream entity was not found and data is null)",
"data.source": "string",
"data.type": "string",
"data.url": "string",
"data.searchAreaUrl": "string",
"data.requestUrl": "string",
"data.extractedAt": "string (iso datetime)",
"data.keyword": "string",
"data.address": "string",
"data.searchRadiusMeters": "number",
"data.center.latitude": "number",
"data.center.longitude": "number",
"data.totalResults": "number",
"data.items[].id": "string",
"data.items[].placeId": "string",
"data.items[].url": "string",
"data.items[].name": "string",
"data.items[].address": "string",
"data.items[].website": "string",
"data.items[].domain": "string",
"data.items[].phone": "string",
"data.items[].city": "string",
"data.items[].country": "string",
"data.items[].plusCode": "string",
"data.items[].latitude": "number",
"data.items[].longitude": "number",
"data.items[].reviewScore": "number",
"data.items[].reviewCount": "number",
"data.items[].categories[]": "string",
"data.items[].price": "string"
} Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.
{
"requestId": "77777777-1111-4111-8111-777777777777",
"executionId": "77777777-2222-4222-8222-777777777777",
"data": {
"source": "google.com",
"type": "places",
"url": "https://www.google.com/maps/search/?api=1&query=coffee+Rua+XV+de+Novembro%2C+160%2C+Curitiba%2C+PR",
"searchAreaUrl": "https://www.google.com/search?tbm=map&hl=en&gl=us&q=Rua+XV+de+Novembro%2C+160%2C+Curitiba%2C+PR",
"requestUrl": "https://www.google.com/maps/search/?api=1&query=coffee+Rua+XV+de+Novembro%2C+160%2C+Curitiba%2C+PR",
"extractedAt": "2026-02-17T20:10:00.000Z",
"keyword": "coffee",
"address": "Rua XV de Novembro, 160, Curitiba, PR",
"searchRadiusMeters": 23420.81,
"center": {
"latitude": -25.4314,
"longitude": -49.2721
},
"totalResults": 2,
"items": [
{
"id": "0x94dce444ecd9879d:0xb967f191d1ba09ae",
"placeId": "ChIJnYfZ7ETk3JQRrgm60ZHxZ7k",
"url": "https://www.google.com/maps?cid=13363945260079319470",
"name": "Le Caffes Especiais",
"address": "Av. Sete de Setembro, 1865 - Centro, Curitiba - PR, 80060-070, Brazil",
"website": "https://www.lecaffes.com.br/",
"domain": "www.lecaffes.com.br",
"phone": "+55 41 99999-9999",
"city": "Curitiba",
"country": "Brazil",
"plusCode": "CWC8+R2",
"latitude": -25.4348,
"longitude": -49.2569,
"reviewScore": 4.9,
"reviewCount": 154,
"categories": [
"Coffee shop",
"Cafe"
],
"price": "$$"
},
{
"id": "0x94dce5a3b5597ef7:0x929e384097106510",
"placeId": "ChIJ9345taPl3JQREGUQl0A4npI",
"url": "https://www.google.com/maps?cid=10569206864830616848",
"name": "Space Cat Coffee",
"address": "R. Dr. Generoso Borges, 365 - Batel, Curitiba - PR, 80410-010, Brazil",
"website": "https://spacecatcoffee.com.br/",
"domain": "spacecatcoffee.com.br",
"phone": "+55 41 98888-8888",
"city": "Curitiba",
"country": "Brazil",
"plusCode": "CWG5+6V",
"latitude": -25.4399,
"longitude": -49.2852,
"reviewScore": 4.8,
"reviewCount": 231,
"categories": [
"Coffee shop"
],
"price": "$$"
}
]
}
} | Path | Type | Description | Example |
|---|---|---|---|
| data.address | string | Field data.address returned in the response payload. | Rua XV de Novembro, 160, Curitiba, PR |
| data.center.latitude | number | Field data.center.latitude returned in the response payload. | -25.4314 |
| data.center.longitude | number | Field data.center.longitude returned in the response payload. | -49.2721 |
| data.extractedAt | string (iso datetime) | data.extractedAt field returned in the response payload. | 2026-02-17T20:10:00.000Z |
| data.items[].address | string | Field data.items[].address returned in the response payload. | Av. Sete de Setembro, 1865 - Centro, Curitiba - PR, 80060-070, Brazil |
| data.items[].categories[] | string | data.items[].categories[] field returned in the response payload. | Coffee shop |
| data.items[].city | string | Field data.items[].city returned in the response payload. | Curitiba |
| data.items[].country | string | Field data.items[].country returned in the response payload. | Brazil |
| data.items[].domain | string | Field data.items[].domain returned in the response payload. | www.lecaffes.com.br |
| data.items[].id | string | Field data.items[].id returned in the response payload. | 0x94dce444ecd9879d:0xb967f191d1ba09ae |
| data.items[].latitude | number | Field data.items[].latitude returned in the response payload. | -25.4348 |
| data.items[].longitude | number | Field data.items[].longitude returned in the response payload. | -49.2569 |
| data.items[].name | string | data.items[].name field returned in the response payload. | Le Caffes Especiais |
| data.items[].phone | string | Field data.items[].phone returned in the response payload. | +55 41 99999-9999 |
| data.items[].placeId | string | data.items[].placeId field returned in the response payload. | ChIJnYfZ7ETk3JQRrgm60ZHxZ7k |
| data.items[].plusCode | string | data.items[].plusCode field returned in the response payload. | CWC8+R2 |
| data.items[].price | string | Field data.items[].price returned in the response payload. | $$ |
| data.items[].reviewCount | number | Field data.items[].reviewCount returned in the response payload. | 154 |
| data.items[].reviewScore | number | Field data.items[].reviewScore returned in the response payload. | 4.9 |
| data.items[].url | string | data.items[].url field returned in the response payload. | https://www.google.com/maps?cid=13363945260079319470 |
| data.items[].website | string | Field data.items[].website returned in the response payload. | https://www.lecaffes.com.br/ |
| data.keyword | string | Field data.keyword returned in the response payload. | coffee |
| data.requestUrl | string | Same value as `data.url`; never exposes the queried internal endpoint. | https://www.google.com/maps/search/?api=1&query=coffee+Rua+XV+de+Novembro%2C+160%2C+Curitiba%2C+PR |
| data.searchAreaUrl | string | data.searchAreaUrl field returned in the response payload. | https://www.google.com/search?tbm=map&hl=en&gl=us&q=Rua+XV+de+Novembro%2C+160%2C+Curitiba%2C+PR |
| data.searchRadiusMeters | number | Field data.searchRadiusMeters returned in the response payload. | 23420.81 |
| data.source | string | Field data.source returned in the response payload. | google.com |
| data.totalResults | number | Field data.totalResults returned in the response payload. | 2 |
| data.type | string | Field data.type returned in the response payload. | places |
| data.url | string | Field data.url returned in the response payload. | https://www.google.com/maps/search/?api=1&query=coffee+Rua+XV+de+Novembro%2C+160%2C+Curitiba%2C+PR |
| executionId | string (uuid) | Field executionId returned in the response payload. | 77777777-2222-4222-8222-777777777777 |
| notFound | boolean (optional; true when the upstream entity was not found and data is null) | Present and true when the upstream entity was not found. In this case data is null and the request still completes successfully. | N/A |
| requestId | string (uuid) | Field requestId returned in the response payload. | 77777777-1111-4111-8111-777777777777 |
When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.
| HTTP status | Error code | Meaning |
|---|---|---|
| 400 | INVALID_PAYLOAD | Invalid JSON or a request that violates the documented validation rules. |
| 401 | UNAUTHORIZED | Missing authorization or an invalid API key or token. |
| 402 | INSUFFICIENT_CREDITS | The account has insufficient credits for this operation. |
| 403 | FORBIDDEN | The account does not have access, or the API is temporarily disabled. |
| 409 | EXECUTION_CONFLICT | The execution identifier conflicts with an incompatible execution state. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | A rate limit or simultaneous request limit was exceeded. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERROR | An upstream, worker or gateway failure. Failed requests follow the platform refund policy. |