gmaps.dev Coverage API
The Coverage API from gmaps.dev — 1 operation(s) for coverage.
The Coverage API from gmaps.dev — 1 operation(s) for coverage.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/gmaps-dev:gmaps-dev-coverage-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Gmaps Dev Coverage API
version: 0.1.0
description: 'Operations tagged Coverage across 2 of this provider''s published API definitions: openapi.json, gmaps-dev-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.gmaps.dev/v1
tags:
- name: Coverage
x-displayName: Coverage
paths:
/coverage:
post:
operationId: get_coverage
tags:
- Coverage
summary: Check an area's coverage
description: See how much of an area we have already searched for a term, when we last searched it, and how many places we have saved there. Use it to decide whether to collect again or just read the saved places. Needs an API key. Costs no credits and starts nothing.
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
properties:
keywords:
minItems: 1
type: array
items:
type: string
description: 'What you would search for, such as ["bakery"]. Coverage is per term: we may have searched an area for one and never for another.'
geo:
anyOf:
- type: object
properties:
location:
type: string
minLength: 1
required:
- location
additionalProperties: false
- type: object
properties:
lat:
type: number
minimum: -90
maximum: 90
lng:
type: number
minimum: -180
maximum: 180
radiusM:
type: number
exclusiveMinimum: 0
required:
- lat
- lng
- radiusM
additionalProperties: false
- type: object
properties:
bbox:
type: array
prefixItems:
- type: number
minimum: -180
maximum: 180
- type: number
minimum: -90
maximum: 90
- type: number
minimum: -180
maximum: 180
- type: number
minimum: -90
maximum: 90
items: false
minItems: 4
maxItems: 4
required:
- bbox
additionalProperties: false
- type: object
properties:
cityIbge:
type: integer
minimum: 1000000
maximum: 9999999
radiusKm:
type: number
exclusiveMinimum: 0
required:
- cityIbge
- radiusKm
additionalProperties: false
description: 'The area. Give exactly one of: a Brazilian city as location, a lat/lng point with radiusM, a bbox, or a cityIbge with radiusKm.'
lang:
default: pt
description: The language the search would run in. Two letters, such as pt or en.
type: string
pattern: ^[a-z]{2}$
required:
- keywords
- geo
security:
- apiKey: []
responses:
'200':
description: Check an area's coverage
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
properties:
coverage:
type: string
enum:
- fresh
- partial
- new
description: '`fresh`: we searched all of it recently. `new`: none of it. `partial`: some.'
squaresTotal:
type: integer
minimum: 0
maximum: 9007199254740991
description: 'How many searches the area takes: one per square of the area, for each term.'
squaresCovered:
type: integer
minimum: 0
maximum: 9007199254740991
description: How many of those we searched recently enough to reuse. Their places cost nothing.
squaresToSearch:
type: integer
minimum: 0
maximum: 9007199254740991
description: How many searches a collection would still have to run. Each takes a few minutes.
placesKnown:
type: integer
minimum: 0
maximum: 9007199254740991
description: Places we have saved in this area. They cost nothing.
searchedAt:
anyOf:
- type: object
properties:
oldest:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
newest:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
required:
- oldest
- newest
additionalProperties: false
- type: 'null'
description: When we searched the covered squares, oldest and newest. Null when we searched none.
freshForDays:
type: integer
exclusiveMinimum: 0
maximum: 9007199254740991
description: How many days a search stays good for. After that, a collection searches the square again.
emptyFreshForDays:
type: integer
exclusiveMinimum: 0
maximum: 9007199254740991
description: How many days a search that found no places stays good for. It is far shorter, because finding nothing can also mean the search was blocked.
required:
- coverage
- squaresTotal
- squaresCovered
- squaresToSearch
- placesKnown
- searchedAt
- freshForDays
- emptyFreshForDays
additionalProperties: false
meta:
anyOf:
- type: object
properties:
total:
type: integer
minimum: 0
maximum: 9007199254740991
description: Every item that matches, not just this page.
limit:
type: integer
exclusiveMinimum: 0
maximum: 9007199254740991
description: The most items a page holds.
offset:
type: integer
minimum: 0
maximum: 9007199254740991
description: How many items came before this page.
hasMore:
type: boolean
description: True when another page follows.
required:
- total
- limit
- offset
- hasMore
additionalProperties: false
- type: object
properties:
cost:
type: integer
minimum: 0
maximum: 9007199254740991
description: Credits this call took.
creditsRemaining:
type: integer
minimum: 0
maximum: 9007199254740991
description: Credits left after this call, this month's and bought ones together.
requestId:
type: string
minLength: 1
description: This call's id. Send it to support if something went wrong.
cached:
description: True when this response used only saved results.
type: boolean
required:
- cost
- creditsRemaining
- requestId
additionalProperties: false
default:
description: Any other failure.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
x-sdk:
method: coverage.get
returns: CoverageDto
repeatable: true
x-mcp-tool: get_coverage
servers:
- url: https://api.gmaps.dev/v1
components:
schemas:
ApiError:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
enum:
- VALIDATION_ERROR
- UNAUTHORIZED
- INVALID_TOKEN
- PLAN_GATE
- AUP_REQUIRED
- FORBIDDEN
- NOT_FOUND
- PLACE_NOT_FOUND
- COLLECTION_NOT_FOUND
- EXPORT_NOT_FOUND
- CONFLICT
- PAYLOAD_TOO_LARGE
- GEO_UNRESOLVED
- UPSTREAM_BLOCKED
- RATE_LIMIT_EXCEEDED
- QUOTA_EXCEEDED
- INTERNAL_ERROR
- ENGINE_UNAVAILABLE
- SERVICE_UNAVAILABLE
- BILLING_UNAVAILABLE
description: What went wrong, as a word a program can check.
message:
type: string
description: What went wrong, as a sentence.
messageKey:
type: string
description: '`message` as a key, to show it in your reader''s language, with `params` filling its blanks.'
params:
type: object
additionalProperties:
type:
- string
- number
description: The values that fill `messageKey`'s blanks, such as a limit.
details:
description: More about this error, such as retryAfterSecs.
securitySchemes:
apiKey:
type: http
scheme: bearer
description: 'Send your API key as "Authorization: Bearer gm_…".'
x-refined-from:
- openapi.json
- gmaps-dev-openapi.json
x-provenance:
method: harvested
publisher: gmaps.dev
source: https://api.gmaps.dev/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)