Broadband Serviceability API

Which internet providers actually reach a specific U.S. street address, and at what advertised speeds. Free, no API key, no registration, CORS open. Answers come from FCC Broadband Data Collection filings, resolved to the census block containing the address.

Call it right now

Every link below is a complete, working request. Open one to see a real response.

Endpoint

GET https://findbetterinternet.com/wp-json/fbi/v1/serviceability

This is the only endpoint that returns per-address results, and it is the one described in the OpenAPI document.

A shorter path at https://findbetterinternet.com/api/serviceability is answered, but it returns a pointer to this endpoint rather than data. The CDN in front of this site caches that path without its query string, so any address-specific response served there would be frozen to whichever address was requested first. The pointer is constant, so caching it is harmless.

Parameters

NameRequiredFormatExample
address1yesStreet address, up to 120 characters.350 Fifth Avenue
cityyesCity name, up to 80 characters.New York
stateyesTwo-letter state code, either case.NY
zipyesFive digits.10118

Response

This is a shape, not a result. The values below are type placeholders. Do not quote them, or any number derived from them, as the answer for a real address — call the endpoint and read the response you get back.
{
  "query": {
    "address1": "<string, echoed back>",
    "city":     "<string>",
    "state":    "<2-letter, lowercased>",
    "zip":      "<5-digit string>"
  },
  "matched_address": "<string, USPS-normalised, or null>",
  "census_block": {
    "block_geoid": "<15-digit census block GEOID>",
    "coordinates": { "x": <longitude>, "y": <latitude> }
  },
  "providers": [
    {
      "provider_id":                   <integer, FCC provider id>,
      "brand_name":                    "<string>",
      "technology":                    "<Fiber | Cable | Copper | Licensed Fixed Wireless | NGSO Satellite | GSO Satellite>",
      "technology_id":                 <integer, FCC technology code>,
      "max_advertised_download_speed": <integer, Mbps>,
      "max_advertised_upload_speed":   <integer, Mbps>,
      "low_latency":                   "<'1' when the carrier reports low latency, else '0'>",
      "percentile_score":              <float, our own ranking of this offer>
    }
  ],
  "provider_count": <integer>,
  "cached":         <boolean>,
  "source": {
    "dataset":     "<string, provenance>",
    "note":        "<string, the advertised-speed caveat>",
    "attribution": "FindBetterInternet.com",
    "docs":        "<url>"
  }
}

providers is sorted by advertised download speed, fastest first. An address can legitimately return provider_count: 0 with HTTP 200 — the block matched, but no carrier filed service for it. Treat that as data, not as an error.

Errors

Errors are JSON with code, message and data.status.

StatusMeaning
400Missing or malformed parameters. All four are required; state must be 2 letters, zip 5 digits.
404The address could not be matched to a census block -- a typo, a new build, or a PO box. This is an ordinary result, not a fault.
429Rate limit exceeded (60 requests per hour per IP).
503The lookup is unavailable or the upstream did not answer. Retry later.

Rate limits and caching

60 requests per hour per IP. Responses are cached for 30 days, because the underlying FCC data is republished roughly twice a year — repeat lookups for the same address are fast and cheap. If you need bulk or commercial access, get in touch rather than working around the limit.

What the numbers mean

Speeds are provider-advertised maxima at census-block level. They are what carriers filed with the FCC, not measured throughput, and not a guarantee for any individual unit or apartment. Please represent them that way to end users — the gap between filed and delivered speed is the single most common way this dataset gets misreported.

Addresses are geocoded with the U.S. Census Bureau geocoder, then serviceability is read at the resulting block. Full detail on sources, aggregation and known limitations: our methodology.

Other machine interfaces

InterfaceURL
OpenAPI 3.1 descriptionhttps://findbetterinternet.com/openapi.json
MCP server (streamable-http, no auth, tool check_serviceability)https://findbetterinternet.com/wp-json/fbi/v1/mcp
Agent guide with national statisticshttps://findbetterinternet.com/llms.txt
Machine-readable index of all of the abovehttps://findbetterinternet.com/ai-catalog.json