Broadband Map receives commissions from partners
Broadband Map Logo
Cell Coverage · Internet Availability

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

NameRequiredDescription
latYesLatitude, -90 to 90
lngYesLongitude, -180 to 180
service_typeNoresidential (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 speedsMeaning
0 down / 0 upService exists, but it's slower than 10 Mbps down or 1 Mbps up
10 down / 1 upAt 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

NameRequiredDescription
latYesLatitude, -90 to 90
lngYesLongitude, -180 to 180
networkNoFilter to one network. Options: att, verizon, t-mobile, gci, cellcom, c-spire
techNoFilter 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, or null if 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, with position, promo_text, terms_text (text or null), ends_on (a date or null), and last_verified (an ISO 8601 timestamp). Can be empty.
  • _meta: endpoint and evaluation information. Includes endpoint_tier: "premium", beta: true, field stability groups, and evaluation_quota with limit, used, and period: "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 of fiber, cable, dsl, fixed-wireless, leo-satellite, gso-satellite, or other.
  • best_superficial_starting_price: the lowest advertised recurring price intended to last at least a year.
  • price_caveats: conditions or limitations on that price, or null.
  • best_actual_starting_price: the starting price including required recurring charges, or null when 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, or null. 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"
}
CodeHTTP statusMeaning
missing_key401No API key in the request headers
invalid_key401Key isn't recognized
key_inactive403Key was revoked or the subscription isn't active
invalid_params400Bad or missing query parameters
unknown_provider404No published plans content for the provider slug
plans_quota_exceeded429Plans premium endpoint quota used up
monthly_quota_exceeded429Monthly standard request quota used up
daily_quota_exceeded429Daily cap reached (demo keys)
burst_limit_exceeded429Over 10 requests/second — slow down and retry
rate_limited429Per-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_allowed405Only GET is supported
server_error500Something broke on Broadband Map's end

OpenAPI Spec

Download OpenAPI 3.1

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.

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

June 2026

February 2026


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. ↩