Skip to contents

The goal of cori.data.fcc is to facilitate the discovery, analysis, and use of FCC public data releases.

The package provides access to data from the following sources:

See Democratizing analytics on FCC’s (big) data for more info about the different ways we are using this data.

Installation

You can install the development version of cori.data.fcc from GitHub with:

# install.packages("remotes")
remotes::install_github("ruralinnovation/cori.data.fcc")

Examples

National Broadband Map

Key uses:

  • Access parquet files stored in a CORI s3 bucket, by county:
guilford_cty <- get_nbm_county_raw(geoid_co = "37081")
#> [1] "Downloading raw NBM data for NC to specified dir (or temp_dir)..."
dplyr::glimpse(guilford_cty)
#> Rows: 1,427,284
#> Columns: 14
Column Type Example
frn chr “0001857952”
provider_id chr “130077”
brand_name chr “AT&T”
location_id chr “1344957580”
max_advertised_download_speed int 75
max_advertised_upload_speed int 20
low_latency lgl TRUE
business_residential_code chr “X”
geoid_bl chr “370810160062003”
geoid_co chr “37081”
file_time_stamp date 2026-04-29
release date 2025-06-01
state_usps chr “NC”
technology dbl 10
  • Access a CORI-opinionated, Census-block level version of the latest NBM release:
# get a county
nbm_bl <- get_nbm_bl(geoid_co = "47051")
#> [1] "Downloading NBM data for TN to specified dir (or temp_dir)..."
dplyr::glimpse(nbm_bl)
#> Rows: 2,146
#> Columns: 21
Column Type Example
geoid_bl chr “470519601001000”
geoid_st chr “47”
geoid_co chr “47051”
cnt_total_locations int 5
cnt_bead_locations int 0
cnt_copper_locations int 0
cnt_cable_locations int 0
cnt_fiber_locations int 0
cnt_other_locations int 0
cnt_unlicensed_fixed_wireless_locations int 4
cnt_licensed_fixed_wireless_locations int 0
cnt_LBR_fixed_wireless_locations int 0
cnt_terrestrial_locations int 0
cnt_25_3 int 0
cnt_100_20 int 0
cnt_100_100 int 0
cnt_distcint_frn int 1
array_frn list NULL
combo_frn dbl 1.xxx
release date 2025-12-01
state_abbr chr “TN”
# get census block covered by an ISP identified by their FRN
skymesh <- get_frn_nbm_bl("0027136753")
dplyr::glimpse(skymesh)
#> Rows: 12
#> Columns: 21
Column Type Example
geoid_bl chr “391093401001009”
geoid_st chr “39”
geoid_co chr “39109”
cnt_total_locations int 4
cnt_bead_locations int 4
cnt_copper_locations int 3
cnt_cable_locations int 4
cnt_fiber_locations int 2
cnt_other_locations int 0
cnt_unlicensed_fixed_wireless_locations int 4
cnt_licensed_fixed_wireless_locations int 3
cnt_LBR_fixed_wireless_locations int 0
cnt_terrestrial_locations int 4
cnt_25_3 int 4
cnt_100_20 int 4
cnt_100_100 int 3
cnt_distcint_frn int 4
array_frn list <“0018506568”, “0025646373”, …>
combo_frn dbl 8.639537e+18
release date 2025-12-01
state_abbr chr “OH”

Form 477

Access state data for multiple years:

f477_vt <- get_f477("VT")
dplyr::glimpse(f477_vt)
#> Rows: 2,753,817
#> Columns: 15
Column Type Example
Provider_Id chr “7095”
FRN chr “0017631540”
ProviderName chr “Kingdom Connection”
DBAName chr “Kingdom Connection”
HoldingCompanyName chr “Merrill Information Systems”
HocoNum chr “130808”
HocoFinal chr “Merrill Information Systems”
BlockCode chr “500059570001002”
TechCode chr “70”
Consumer lgl TRUE
MaxAdDown dbl 2
MaxAdUp dbl 2
Business lgl TRUE
Date date 2014-12-01
StateAbbr chr “VT”

Utilities

Access the dictionary for each dataset:

dplyr::glimpse(get_fcc_dictionary())
#> Rows: 50
#> Columns: 5
Column Type Example
dataset chr “f477”
var_name chr “Provider_Id”
var_type chr “TEXT”
var_description chr “filing number (assigned by FCC)”
var_example chr “8026”

The package also provides a list of Provider IDs and FRNs.

str(fcc_provider)
#> 'data.frame':    4456 obs. of  5 variables:
Column Type Example
provider_name chr “@Link Services, LLC”
affiliation chr “AtLink Services, LLC”
operation_type chr “Non-ILEC”
frn chr “0016085920”
provider_id num 290004

Development notes.