Skip to content

Google Business usage and quota

Two read-only endpoints show what your account spends of the shared Google budget. Neither calls Google and neither costs budget. Background in rate limits.

Your account’s Google calls, aggregated. Only your account — never other customers.

Scope read or gmb
Query param Type Default Validation
from YYYY-MM-DD 29 days before today UTC day
to YYYY-MM-DD today UTC day; must not be before from

Days are UTC. A malformed date, or from after to, is 400 invalid_input.

Terminal window
curl "https://app.maukirim.com/api/v1/gmb/usage?from=2026-10-01&to=2026-10-14" \
-H "Authorization: Bearer mk_live_…"
const response = await fetch("https://app.maukirim.com/api/v1/gmb/usage?from=2026-10-01&to=2026-10-14", {
headers: { Authorization: `Bearer ${process.env.MAUKIRIM_KEY}` },
})
const usage = await response.json()
$curl = curl_init('https://app.maukirim.com/api/v1/gmb/usage?from=2026-10-01&to=2026-10-14');
curl_setopt_array($curl, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('MAUKIRIM_KEY')],
CURLOPT_RETURNTRANSFER => true,
]);
$usage = json_decode(curl_exec($curl), true);
{
"ok": true,
"from": "2026-10-01",
"to": "2026-10-14",
"callsThisMonth": 412,
"days": [
{ "day": "2026-10-13", "calls": 120, "throttled": 3, "errors": 1 },
{ "day": "2026-10-14", "calls": 88, "throttled": 0, "errors": 0 }
],
"byLocation": [
{ "locationId": "gml_8f3kq2x1ab", "calls": 61, "throttled": 2, "errors": 0 }
],
"byOperation": [
{ "operation": "reviews.list", "calls": 140, "errors": 0, "avgMs": 210 },
{ "operation": "reviews.reply", "calls": 31, "errors": 1, "avgMs": 340 }
]
}
Field Meaning
callsThisMonth Metered Google calls this calendar month (UTC), regardless of from/to
days[] Per UTC day in range: calls made, throttled (refused for lack of budget, not made) and errors (calls that failed)
byLocation[] The same, per business. Calls not tied to one business (for instance listing a connection’s businesses) are left out of this list
byOperation[] Per operation, with the average time in milliseconds. Operations: accounts.list, locations.list, locations.get, locations.patch, reviews.list, reviews.reply, reviews.deleteReply, posts.list, posts.create, posts.update, posts.delete, media.list, media.create, media.delete, performance.daily, performance.keywords, attributes.get, attributes.update, attributes.available, categories.search, verifications.list, verifications.options, verifications.start, verifications.complete, admins.list and google.<api> for a call through the Google door (for example google.placeactions)

The counters are flushed when you ask, so a call made a moment ago is included. A call served from MauKirim’s own table or the review cache is not a Google call and is not counted. These numbers are activity, not billing: the connector is part of the package and is never charged from credits.

HTTP Code Condition
400 invalid_input A malformed date, or from after to
402 gmb_plan_required The package does not include the connector
403 api_key_scope_denied Neither read nor gmb
500 server_error Unexpected

Your account’s own per-minute share, and how loaded the platform is.

Scope read or gmb
Query params none
Terminal window
curl https://app.maukirim.com/api/v1/gmb/quota \
-H "Authorization: Bearer mk_live_…"
const response = await fetch("https://app.maukirim.com/api/v1/gmb/quota", {
headers: { Authorization: `Bearer ${process.env.MAUKIRIM_KEY}` },
})
const { accountQpm, level } = await response.json()
$curl = curl_init('https://app.maukirim.com/api/v1/gmb/quota');
curl_setopt_array($curl, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('MAUKIRIM_KEY')],
CURLOPT_RETURNTRANSFER => true,
]);
$quota = json_decode(curl_exec($curl), true);
{ "ok": true, "accountQpm": 60, "level": "ok" }
Field Meaning
accountQpm The calls per minute your account may spend. The default is 60; an operator can set another value for your account
level The whole platform’s pressure, coarse on purpose: ok, busy or throttled

It never shows how much of the pool other customers use, and it does not tell you your own remaining tokens: 429 gmb_rate_limited with Retry-After is how a refusal is announced.

HTTP Code Condition
402 gmb_plan_required The package does not include the connector
403 api_key_scope_denied Neither read nor gmb
500 server_error Unexpected