Built-in tool
Search Maps, News, Images & More
Search live Google Maps/local, News, Images, AI Mode, Bing organic, or YouTube results through one consistent action.
Endpoint
Parameters
| Name | Type | Required | Note |
|---|---|---|---|
| surfacestring · required | string | required | Search engine or vertical to query. One of: |
| keywordstring · required | string | required | Search query. |
| depthnumber · optional | number | optional | Maximum rows to return (1-100). Defaults to 10, and it is a hard ceiling. Google AI Mode has no upstream depth parameter, so its results are capped on our side instead of being requested that way. YouTube is capped on our side to this number as well. Surfaces that return page blocks alongside results (related searches, carousels, answer boxes) spend the budget on results first — so at this number you get results, and the blocks only appear if there is room left over. Raise it if you want both. On a low number over a page carrying about as many blocks as results, neither clearly outnumbers the other, so you get some of each instead. Default: |
| devicestring · optional | string | optional | Device type. Defaults to desktop. One of: |
| language_namestring · optional | string | optional | Language for results. Defaults to English. One of: Default: |
| location_codenumber · optional | number | optional | Advanced: numeric location code for Google AI Mode. Defaults to 2840 (United States). Default: |
| location_namestring · optional | string | optional | Country for results. Defaults to United States. For google_maps and google_local, results are drawn around a point: a country alone anchors at the country's geographic centre (for the United States, rural Kansas), so set Location coordinate for the place you actually mean. The anchor used is reported in `location_used`. One of: Default: |
| location_coordinatestring · optional | string | optional | google_maps / google_local only: the point to search around, as "latitude,longitude" or "latitude,longitude,zoom" (e.g. 40.7128,-74.0060,12z; zoom 3z-21z, default 17z). When set it replaces Location name as the anchor. Ignored on the other surfaces. Example: |
Response schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"elements"
],
"properties": {
"elements": {
"type": "array",
"items": {
"type": "object",
"required": [
"surface"
],
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"rank": {
"type": [
"number",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"phone": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"domain": {
"type": [
"string",
"null"
]
},
"rating": {
"type": [
"number",
"null"
]
},
"region": {
"type": [
"string",
"null"
]
},
"source": {
"type": [
"string",
"null"
]
},
"address": {
"type": [
"string",
"null"
],
"description": "Street address of the listing named in `title`, with no other business name in front of it."
},
"channel": {
"type": [
"string",
"null"
]
},
"reviews": {
"type": [
"number",
"null"
]
},
"surface": {
"type": "string"
},
"category": {
"type": [
"string",
"null"
],
"description": "Primary business category on maps/local rows (e.g. \"Restaurant\"); null elsewhere."
},
"markdown": {
"type": [
"string",
"null"
]
},
"image_url": {
"type": [
"string",
"null"
]
},
"references": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"text": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"domain": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
"description": {
"type": [
"string",
"null"
]
},
"postal_code": {
"type": [
"string",
"null"
]
},
"country_code": {
"type": [
"string",
"null"
]
},
"published_at": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
"returned": {
"type": "number",
"description": "How many rows this run returned, after any Limit was applied."
},
"truncated": {
"type": "boolean"
},
"suggestion": {
"type": "string"
},
"totalCount": {
"type": "number",
"description": "How many records the provider says MATCH in total, independent of Limit — routinely in the millions (spotify.com has 2,583,327 ranking pages). It is a match count, NOT how many this endpoint will serve: Limit caps what one call returns, so do not compare it against the row count to judge completeness and do not paginate towards it. Absent when the provider sent no count."
},
"location_used": {
"type": "string",
"description": "The location the results were anchored to, exactly as sent: a country name, a numeric location code (Google AI Mode), or \"latitude,longitude,zoom\"."
},
"totalElements": {
"type": "number",
"description": "DEPRECATED — despite the name this is the count RETURNED by this run, not a grand total, so it equals your Limit on a limited run. Kept at that value deliberately: ENG-17058 asked for depth 5 to report 5, and it is a live number in existing flows. Use `returned` for this number or `totalCount` for how many records match."
}
},
"additionalProperties": true
}