API Documentation
Broadband Map's standard API endpoints return available internet providers or cell signal strength at any US location specified by latitude and longitude coordinates.
Data is represented at the level of cells in the H3 hexagonal grid system. Accordingly, results at different coordinates within the same cell will be identical.1
An API key is required. Plans (including a free demo tier) are on the API 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.
Standard Endpoints
Internet Providers at a Location
GET /api/v1/location/internet?lat={lat}&lng={lng}
Returns internet providers available within the resolution-8 H3 cell containing the requested 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": 13,
"providers": [
{
"name": "Verizon",
"technology": "Fiber",
"max_download_mbps": 2300,
"max_upload_mbps": 2300
},
{
"name": "Skywire Networks",
"technology": "Fixed Wireless",
"max_download_mbps": 2000,
"max_upload_mbps": 2000
},
{
"name": "Astound Broadband",
"technology": "Fiber",
"max_download_mbps": 1500,
"max_upload_mbps": 1500
},
{
"name": "Astound Broadband",
"technology": "Cable",
"max_download_mbps": 1500,
"max_upload_mbps": 50
},
{
"name": "Spectrum",
"technology": "Fiber",
"max_download_mbps": 1000,
"max_upload_mbps": 1000
},
{
"name": "Spectrum",
"technology": "Cable",
"max_download_mbps": 1000,
"max_upload_mbps": 1000
},
{
"name": "Verizon",
"technology": "Fixed Wireless",
"max_download_mbps": 1000,
"max_upload_mbps": 75
},
{
"name": "Starry Inc",
"technology": "Fixed Wireless",
"max_download_mbps": 800,
"max_upload_mbps": 100
},
{
"name": "Starlink",
"technology": "LEO Satellite",
"max_download_mbps": 280,
"max_upload_mbps": 30
},
{
"name": "HughesNet",
"technology": "GSO Satellite",
"max_download_mbps": 100,
"max_upload_mbps": 5
},
{
"name": "MINTernet",
"technology": "Fixed Wireless",
"max_download_mbps": 100,
"max_upload_mbps": 20
},
{
"name": "T-Mobile",
"technology": "Fixed Wireless",
"max_download_mbps": 100,
"max_upload_mbps": 20
},
{
"name": "Viasat Inc",
"technology": "GSO Satellite",
"max_download_mbps": 50,
"max_upload_mbps": 3
}
]
}
Technology Values
The technology field takes 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.
Cell Signal Strength at a Location
GET /api/v1/location/cell?lat={lat}&lng={lng}
Returns predicted signal strength by network for the resolution-9 H3 cell containing the requested coordinates. Includes dBm values and labels such as Fair or Strong. The technology field takes 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"
}
]
}
Premium Endpoints
Internet Provider Plans Beta
This is a premium endpoint that does not draw from standard usage quotas. The endpoint is in beta. The structure or response fields may change.
Absent a written agreement with more permissive terms, data from this endpoint is for personal or evaluation purposes only.
GET /api/v1/provider/plans?provider={provider-slug}
Returns Broadband Map's plans and pricing information for a given internet provider. Data comes from Broadband Map's AI-driven marketplace monitoring system. Details are provider-level and do not capture address-level plan availability.
The AI system can make mistakes. Consumers of the data should verify important details before any purchase decisions.
Paid plans permit up to 15 requests per month (Demo plans permit 4). Contact [email protected] for a higher request limit.
Parameters
provider (required): the provider slug, e.g., starlink. Use the provider portion of one of Broadband Map's ISP listing URLs (excluding other parts of the path, like the technology). A single request returns all published pricing rows for the requested provider.
Response Fields
provider: the provider slug.provider_name: the provider's display name, ornullif unavailable.last_reviewed: timestamp indicating when the provider's plan information was last assessed (ISO 8601 format).plans_content_html: a sanitized HTML writeup covering plans, prices, and terms.pricing: an array of structured pricing records, with one entry per technology covered. Covered technologies may differ between providers.promos: an array of researched promotions, withposition,promo_text,terms_text(text ornull),ends_on(a date ornull), andlast_verified(an ISO 8601 timestamp). Can be empty._meta: endpoint and evaluation information. Includesendpoint_tier: "premium",beta: true, field stability groups, andevaluation_quotawithlimit,used, andperiod: "month". The allowance and usage are specific to the API key used. The count is inclusive of the current successful request.
Pricing Fields
Each record in pricing includes the fields below. Prices are monthly USD amounts formatted as decimal strings (or null). These are best interpreted alongside the caveats or the full writeup.
tech: one offiber,cable,dsl,fixed-wireless,leo-satellite,gso-satellite, orother.best_superficial_starting_price: the lowest advertised recurring price intended to last at least a year.price_caveats: conditions or limitations on that price, ornull.best_actual_starting_price: the starting price including required recurring charges, ornullwhen evidence is incomplete. Experimental.best_promo_price: a recurring monthly promotional rate that lasts less than a year. Excludes gift cards, bill credits, rebates, and free months. Experimental.promo_price_caveats: promotion conditions and limits, ornull. Experimental.updated_at: timestamp of the pricing record's last update (ISO 8601).
_meta.field_stability identifies the stable core and experimental fields. Experimental fields are especially likely to change or be removed.
Usage
Check _meta.evaluation_quota for plans usage. The /usage endpoint reports standard usage only.
X-RateLimit-Limit and X-RateLimit-Remaining reflect the plans allowance on successful responses and quota errors.
Usage
GET /api/v1/usage
Returns the subscription plan associated with a key and that key's current standard request usage. Premium evaluation usage is reported separately by the relevant endpoint. Calls to this endpoint don't count towards usage quotas. Limited to 100 requests per hour per IP address.
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
Only successful (2xx) responses count towards usage quotas. 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 usage allowances reset. Free demo keys also have a daily cap on standard requests, with the same 429 behavior. The plans endpoint uses its separate evaluation allowance.
For standard requests, there are no overage charges. Rather than getting a surprise bill, users that exhaust quotas hit a hard stop unless they upgrade plans. Usage alert emails go out at 80% and 100% of standard monthly quotas.
Standard endpoints have a burst limit of 10 requests per second per key by default. This limit may be relaxed on request. Requests beyond the burst limit don't count towards quotas and return 429 with a burst_limit_exceeded code. If you encounter this code, the Retry-After header tells you how long to wait.
Rate Limit Headers
Successful keyed location lookup responses include these headers when the key has a monthly quota:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 868
GET /api/v1/usage returns monthly_limit and monthly_remaining in its JSON body and does not include these headers. Calls to /usage don't count towards usage quotas.
Error Codes
Errors include an error message and a stable code. Message wording may change.
{
"error": "Monthly API request limit exceeded. Upgrade your plan for a higher limit: https://broadbandmap.com/api/",
"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 |
unknown_provider | 404 | No published plans content for the provider slug |
plans_quota_exceeded | 429 | Plans premium endpoint quota used up |
monthly_quota_exceeded | 429 | Monthly standard request quota used up |
daily_quota_exceeded | 429 | Daily cap reached (demo keys) |
burst_limit_exceeded | 429 | Over 10 requests/second — slow down and retry |
rate_limited | 429 | Per-IP or shared traffic limit. Applies to anonymous requests, /usage (100 requests per hour per IP), and the global hourly cap on all location lookups, including keyed requests. Follow Retry-After before retrying. |
method_not_allowed | 405 | Only GET is supported |
server_error | 500 | Something broke on Broadband Map's end |
OpenAPI Spec
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. Data coming from sources other than the FCC may be incorporated on a more ad hoc basis.
- 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
September 2026
- Added
GET /api/v1/provider/plans(premium endpoint in beta)
June 2026
- Introduced API key requirement. Both free demo keys and paid keys are available from the API page.
- Added
GET /api/v1/usagefor checking quota state. - Added
X-RateLimit-Limit/X-RateLimit-Remainingheaders and stable errorcodevalues. - Added a burst limit of 10 requests per second per key (
burst_limit_exceeded). - Removed
technology_codeandprovider_idfrom responses. With the post-Alpha API, thetechnologystring is the supported tech identifier.
February 2026
- Alpha release with internet and cell lookup endpoints.
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 coverage uses 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. ↩