Scopes API¶
The Scopes API lists the Mesh Scopes a region's repeaters carry, with a repeater count per scope. Use it to show which scopes are active in a region without scraping the map. No key is needed.
GET https://yow.meshmapper.net/get_scopes.php
- On a region site: that region's own repeaters.
- On a group site (e.g.
pnw.meshmapper.net): every enabled member region's repeaters, combined.
There are no parameters.
Fair use
Public, cached for 5 minutes, and rate limited to 60 requests per minute per IP address. Cache the results, respect ETag, and don't poll more than once every few minutes. Accessing anything that isn't a published API, or scraping pages for data, is not allowed; see the warning on the Coverage API page.
Response¶
{
"generated_at": "2026-09-27T16:58:49Z",
"region": "YOW",
"zones": ["YOW"],
"repeaters": 5,
"scoped": 3,
"scopes": [
{ "name": "yow", "repeaters": 2, "default": 1, "monitored": true, "wardriving": true },
{ "name": "pnw", "repeaters": 1, "default": 0, "monitored": false, "wardriving": false },
{ "name": "mon", "repeaters": 0, "default": 0, "monitored": true, "wardriving": false }
]
}
Top-level fields¶
| Field | Description |
|---|---|
generated_at |
When this answer was built. |
region |
The region code this page serves, uppercase. On a group site this is the group's own code. |
zones |
The region codes counted in this answer: one code on a region site, every enabled member on a group site. |
repeaters |
How many of this page's repeaters are enabled and public. This is the same population the map's Scope Finder tool checks, not the population MeshMapper's Scope Onboarding leaderboard uses: that board only counts repeaters inside the region's own drawn boundary, so a region with repeaters placed outside its boundary can show a different total there. |
scoped |
How many of those repeaters carry at least one Mesh Scope, by any evidence, or put a scope on their own adverts (even one MeshMapper can't name yet). A repeater whose only answer is ✱ Not set doesn't count. |
scopes |
One entry per scope name seen on this page, plus every name on the region's Scopes to Monitor list or set as its Wardriving Scope, even at zero repeaters. Sorted by repeaters highest first, then by name. |
Scope entry fields¶
| Field | Description |
|---|---|
name |
The scope name, as configured on the repeaters that carry it. |
repeaters |
How many of this page's repeaters carry this scope. |
default |
Of those, how many put this scope on their own adverts (as opposed to only being reported or observed carrying it). |
monitored |
true when this name is on the region's Scopes to Monitor list right now. |
wardriving |
true when this is the region's configured Wardriving Scope, the name it asks wardrivers' apps to use. |
Names and counts only. There is no per-repeater list, no repeater ID, and no key of any kind in this response.
Caching¶
Sends Cache-Control: public, max-age=300 and a strong ETag. Send the ETag back in If-None-Match to get 304 Not Modified with no body when nothing changed. generated_at isn't part of the ETag.
Errors¶
Errors are JSON: {"error": "<code>"}.
| Status | error |
Meaning |
|---|---|---|
| 404 | zone_not_found |
The region is unknown, pending or turned off. |
| 429 | rate_limited |
Over 60 requests in a minute. Wait for the Retry-After header (seconds). |
| 503 | unavailable |
Temporary server problem. Try again later. |
Example¶
import httpx
r = httpx.get("https://yow.meshmapper.net/get_scopes.php").json()
for s in r["scopes"]:
print(s["name"], s["repeaters"], "of", r["repeaters"])