API Documentation
Broadband Map's API lets you look up internet providers and cell signal strength at any US location specified by latitude and longitude coordinates.
Data is available at the level of cells in the H3 hexagonal grid system. Accordingly, results at nearby coordinates within the same cell will be identical.1
An API key is required. Plans (including a free demo tier) are on the API plans page.
Authentication
Pass your API key in the Authorization header:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://broadbandmap.com/api/v1/location/internet?lat=40.758&lng=-73.985"
An X-Api-Key: YOUR_API_KEY header works too. Keys are accepted in headers only.
Requests without a valid key return 401.
Internet Providers at a Location
GET /api/v1/location/internet?lat={lat}&lng={lng}
Returns internet providers available at the given coordinates.
Parameters
| Name | Required | Description |
|---|---|---|
lat | Yes | Latitude, -90 to 90 |
lng | Yes | Longitude, -180 to 180 |
service_type | No | residential (default) or business |
Example Request
curl "https://broadbandmap.com/api/v1/location/internet?lat=40.758&lng=-73.985"
Example Response
{
"lat": 40.758,
"lng": -73.985,
"h3_hex": "882a100d67fffff",
"h3_resolution": 8,
"service_type": "residential",
"count": 3,
"providers": [
{
"name": "Verizon",
"technology": "Fiber",
"max_download_mbps": 2300,
"max_upload_mbps": 2300
},
{
"name": "Spectrum",
"technology": "Cable",
"max_download_mbps": 1000,
"max_upload_mbps": 1000
},
{
"name": "T-Mobile",
"technology": "Fixed Wireless",
"max_download_mbps": 100,
"max_upload_mbps": 20
}
]
}
Technology Values
The technology field is one of: Fiber, Cable, DSL, Fixed Wireless, GSO Satellite, LEO Satellite, Other. New technology values and response fields may be added over time.
Speed Values
Speed values are usually the maximum advertised speeds ISPs report to the FCC. However, there's a quirk in the FCC reporting rules. Services below 25/3 Mbps aren't reported with their real speeds. They're bucketed into two tiers, so these speed combinations resemble codes rather than actual speeds:
| Reported speeds | Meaning |
|---|---|
0 down / 0 up | Service exists, but it's slower than 10 Mbps down or 1 Mbps up |
10 down / 1 up | At least 10/1 Mbps but short of 25/3 Mbps Speed may be higher in one direction (e.g. a 50/2 Mbps service reports as 10/1) |
A provider with "max_download_mbps": 0 offers real, slow service. Due to the FCC's reporting rules, it's left ambiguous how slow these services are.
Cellular Signal Strength at a Location
GET /api/v1/location/cell?lat={lat}&lng={lng}
Returns cell coverage data for networks at the given coordinates, including signal strength in dBm and a human-readable signal level. The technology field is one of 4G LTE, 5G NR, or 3G.
Parameters
| Name | Required | Description |
|---|---|---|
lat | Yes | Latitude, -90 to 90 |
lng | Yes | Longitude, -180 to 180 |
network | No | Filter to one network. Options: att, verizon, t-mobile, gci, cellcom, c-spire |
tech | No | Filter by generation: 4g, 5g |
Example Request
curl "https://broadbandmap.com/api/v1/location/cell?lat=40.758&lng=-73.985"
Example Response
{
"lat": 40.758,
"lng": -73.985,
"h3_hex": "892a100d67bffff",
"h3_resolution": 9,
"count": 6,
"coverage": [
{
"network": "AT&T",
"network_slug": "att",
"technology": "4G LTE",
"rsrp_dbm": -102.5,
"signal_level": "Fair"
},
{
"network": "AT&T",
"network_slug": "att",
"technology": "5G NR",
"rsrp_dbm": -102.5,
"signal_level": "Fair"
},
{
"network": "T-Mobile",
"network_slug": "t-mobile",
"technology": "4G LTE",
"rsrp_dbm": -91.8,
"signal_level": "Good"
},
{
"network": "T-Mobile",
"network_slug": "t-mobile",
"technology": "5G NR",
"rsrp_dbm": -88.8,
"signal_level": "Strong"
},
{
"network": "Verizon",
"network_slug": "verizon",
"technology": "4G LTE",
"rsrp_dbm": -106.1,
"signal_level": "Fair"
},
{
"network": "Verizon",
"network_slug": "verizon",
"technology": "5G NR",
"rsrp_dbm": -106.1,
"signal_level": "Fair"
}
]
}
Usage at a Glance
GET /api/v1/usage
Returns your key's plan and current usage. Calls to this endpoint are free and don't count toward your quota.
Example Response
{
"plan": "starter",
"key_status": "active",
"customer_status": "active",
"month_start": "2026-06-01",
"monthly_limit": 1000,
"monthly_used": 132,
"monthly_remaining": 868
}
Quotas & Errors
Each plan includes a monthly request quota (see plans). Only successful (2xx) responses count toward the quota. Errors and rate-limited responses are free. Quotas reset on the first of each calendar month (UTC). When a quota is exhausted, requests return 429 until the reset.
Free demo keys also have a daily cap, with the same 429 behavior. There are no overage charges, just a hard stop and an upgrade path instead of a surprise bill. Usage alert emails go out at 80% and 100% of your monthly quota.
Keys also have a burst limit of 10 requests per second, which may be relaxed on request (get in touch via the API plans page). Requests over the burst limit return 429 with a burst_limit_exceeded code, don't count toward your quota, and clear within seconds. If you see them, slow down and retry after the Retry-After.
Rate Limit Headers
Responses to keyed requests include your monthly quota state, and 429 responses include a Retry-After (seconds until the relevant quota resets):
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 868
Error Codes
Every error response includes a human-readable error message and a stable machine-readable code. Write programs against the code; the message wording may change.
{
"error": "Monthly API request limit exceeded.",
"code": "monthly_quota_exceeded"
}
| Code | HTTP status | Meaning |
|---|---|---|
missing_key | 401 | No API key in the request headers |
invalid_key | 401 | Key isn't recognized |
key_inactive | 403 | Key was revoked or the subscription isn't active |
invalid_params | 400 | Bad or missing query parameters |
monthly_quota_exceeded | 429 | Monthly plan quota used up |
daily_quota_exceeded | 429 | Daily cap reached (demo keys) |
daily_ip_quota_exceeded | 429 | Per-IP daily cap reached (shared keys) |
burst_limit_exceeded | 429 | Over 10 requests/second — slow down and retry |
rate_limited | 429 | Anonymous rate limit (shouldn't appear on keyed requests) |
method_not_allowed | 405 | Only GET is supported |
server_error | 500 | Something broke on this end |
OpenAPI Spec
A machine-readable OpenAPI 3.0 specification is available for download:
Data
The FCC's Broadband Data Collection (BDC) program provides the foundation for Broadband Map's cell coverage and internet availability data. However, Broadband Map's API doesn't serve the raw BDC data. The approach to processing and transformation varies by dataset.
- Internet availability data is cleaned, corrected, restructured, and lightly supplemented. ISPs report their service areas to the FCC roughly every six months.
- Cell coverage is more heavily transformed. The FCC publishes network-reported signal strength predictions based on radio-frequency modeling, and these tend to be overly optimistic. Broadband Map uses crowdsourced real-world measurements to get a general sense of how well each network's modeled coverage corresponds to on-the-ground coverage.
Detailed logs of known limitations are available for internet availability and cell coverage.
While BroadbandMap.com uses FCC data, it is not endorsed by the FCC or a product of the FCC.
Changelog
June 2026
- API keys are now required. Free demo keys and paid plans are on the API plans page.
- Added
GET /api/v1/usagefor checking quota state. - Added
X-RateLimit-Limit/X-RateLimit-Remainingheaders and stable errorcodevalues. - Removed
technology_codeandprovider_idfrom responses. Thetechnologystring is the supported way to identify technologies. - Only successful (2xx) responses count toward quotas.
- Added a burst limit of 10 requests per second per key (
burst_limit_exceeded).
February 2026
- Alpha release: internet and cell lookup endpoints, no keys, tight IP rate limits.
1. H3 cells vary somewhat in size by latitude. Internet availability uses resolution-8 cells, which average about 0.74 km² (0.29 mi²); cell signals use resolution-9 cells, which average about 0.11 km² (0.04 mi²).
For internet availability, a provider is listed if it's expected to serve at least one address within the cell, and speed values are the highest reported within it. Accordingly, a provider listed in a given cell may not serve every address in the cell, and speeds at some addresses may fall short of the reported max speed for that cell. ↩