FCC Radio & Wireless License Holders Scraper (USA) avatar

FCC Radio & Wireless License Holders Scraper (USA)

Pricing

from $17.00 / 1,000 results

Go to Apify Store
FCC Radio & Wireless License Holders Scraper (USA)

FCC Radio & Wireless License Holders Scraper (USA)

Extract U.S. FCC radio and wireless license holders from the ULS: call sign, licensee, FRN, status, radio service, grant/expiration dates, address, phone, fax, email and contact. Filter by name, FRN, call sign, state, status and service. Export to JSON, CSV or Excel.

Pricing

from $17.00 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

FCC Radio & Wireless License Holders Scraper (USA)

FCC Radio & Wireless License Holders Scraper (USA)

Here is one real result, with every field the actor returns:

{
"uniqueSystemIdentifier": "1136154",
"callSign": "WPJJ411",
"licenseeName": "Verizon Wireless Messaging Services, LLC",
"entityType": "Organization",
"firstName": null,
"lastName": null,
"frn": "0003295904",
"licenseStatus": "C",
"licenseStatusLabel": "Cancelled",
"radioService": "Commercial Land Mobile (business two-way radio)",
"radioServiceCode": "GS",
"radioServiceCodeLabel": null,
"grantDate": "2001-06-01",
"expiredDate": "2011-06-28",
"effectiveDate": "2004-01-24",
"lastActionDate": "2005-02-04",
"cancellationDate": "2005-02-04",
"operatorClass": null,
"previousCallSign": null,
"phone": "6828313671",
"fax": "6788313673",
"email": "debbie.johnson@verizonwireless.com",
"contactName": "Regulatory",
"streetAddress": "500 West Dove Road",
"city": "Southlake",
"state": "TX",
"zipCode": "76092",
"poBox": null,
"representativeName": "Debbie E Johnson",
"representativePhone": "6828313671",
"representativeEmail": "debbie.johnson@verizonwireless.com",
"ulsFileNumber": "0000443779",
"source": "FCC Universal Licensing System (ULS)",
"observedAt": "2026-08-10T14:34:56.204Z"
}

The most complete FCC radio and wireless license scraper available. It returns every field the FCC Universal Licensing System exposes for each license holder, including the licensee identity, call sign, FRN, status, radio service, key dates and the on-file contact block (phone, fax, email, address and representative), and gives you eleven filters to target exactly the license holders you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the FCC Universal Licensing System (ULS), applies the filters you pass as input, paginates through the matching licenses, and writes one normalized record per license to the run's dataset. Each run searches a single radio service database (for example commercial land mobile, private land mobile, GMRS, amateur, cellular). Dates are normalized to YYYY-MM-DD, raw status codes are paired with human-readable labels, and missing source values are returned as null.

The contact block (phone, fax, email, street address, and representative name / phone / email) is pulled from the license record so you can use results directly for outreach or verification. Use requireEmail or requirePhone to keep only records that carry those fields.

Quickstart

Open the actor, paste this into the input, and press Run. It returns commercial land mobile licenses held by Verizon.

{
"radioService": "commercial",
"licenseeNames": ["verizon"],
"maxLicenses": 50
}

Leave licenseeNames empty to return all licenses in the selected service. Every input field except radioService is optional (it defaults to commercial); default maxLicenses is 50.

Input reference

FieldTypeRequiredDefaultDescription
radioServiceenumnocommercialWhich FCC ULS radio service database to search (one per run). One of commercial, private, gmrs, amateur, cellular, market, microwave, paging, broadcast_aux, ship, coast, aircraft, mds_itfs.
licenseeNamesstring[]no["verizon"]Licensee names (company or person) to search for. Substring match, case-insensitive. Leave empty to return all licenses in the selected service.
statesstring[]no(empty)Two-letter US state codes, for example CA, NY, TX.
citiesstring[]no(empty)City names (substring match).
callSignsstring[]no(empty)Exact call signs, for example KAA209.
frnsstring[]no(empty)Exact FCC Registration Numbers (10 digits).
licenseStatusesstring[]no(any)License status codes to keep. One or more of A (Active), E (Expired), C (Cancelled), T (Terminated).
grantedAfterstringno(empty)Only licenses granted on or after this date (YYYY-MM-DD).
expiresAfterstringno(empty)Only licenses that expire on or after this date (YYYY-MM-DD).
expiresBeforestringno(empty)Only licenses that expire on or before this date (YYYY-MM-DD).
requireEmailbooleannofalseOnly return license holders that have an email address on file.
requirePhonebooleannofalseOnly return license holders that have a phone number on file.
maxLicensesintegerno50Maximum number of license records to return. Minimum 1.

Filters combine with logical AND.

Output reference

One dataset item per license. Types: string or null when the source value is absent.

FieldTypeDescription
uniqueSystemIdentifierstringFCC ULS unique system identifier for the license.
callSignstringLicense call sign.
licenseeNamestringName of the license holder (company or individual).
entityTypestringWhether the holder is an Organization or Individual.
firstNamestringFirst name (individual licensees), or null.
lastNamestringLast name (individual licensees), or null.
frnstringFCC Registration Number of the holder.
licenseStatusstringRaw status code (A / E / C / T).
licenseStatusLabelstringHuman-readable status: Active, Expired, Cancelled, Terminated.
radioServicestringRadio service category searched.
radioServiceCodestringFCC radio service code.
radioServiceCodeLabelstringHuman-readable radio service code label, or null.
grantDatestringLicense grant date (YYYY-MM-DD).
expiredDatestringLicense expiration date (YYYY-MM-DD).
effectiveDatestringLicense effective date (YYYY-MM-DD).
lastActionDatestringDate of last action (YYYY-MM-DD).
cancellationDatestringCancellation date if applicable (YYYY-MM-DD), or null.
operatorClassstringAmateur operator class (amateur service only), or null.
previousCallSignstringPrevious call sign (amateur service only), or null.
phonestringLicense holder phone number.
faxstringLicense holder fax number.
emailstringLicense holder email address.
contactNamestringNamed contact / attention line at the license holder.
streetAddressstringStreet address.
citystringCity.
statestringTwo-letter state code.
zipCodestringZIP code.
poBoxstringPO Box, or null.
representativeNamestringName of the license contact representative (for example counsel).
representativePhonestringRepresentative phone number.
representativeEmailstringRepresentative email address.
ulsFileNumberstringULS application file number.
sourcestringData source.
observedAtstringISO 8601 timestamp of when the record was collected.

On a failed run, the actor writes a single item with a populated error field instead of license records, and does not charge for it.

Example output record

Real record from a live run (input {"radioService": "commercial", "licenseeNames": ["verizon"], "maxLicenses": 50}):

{
"uniqueSystemIdentifier": "1136154",
"callSign": "WPJJ411",
"licenseeName": "Verizon Wireless Messaging Services, LLC",
"entityType": "Organization",
"firstName": null,
"lastName": null,
"frn": "0003295904",
"licenseStatus": "C",
"licenseStatusLabel": "Cancelled",
"radioService": "Commercial Land Mobile (business two-way radio)",
"radioServiceCode": "GS",
"radioServiceCodeLabel": null,
"grantDate": "2001-06-01",
"expiredDate": "2011-06-28",
"effectiveDate": "2004-01-24",
"lastActionDate": "2005-02-04",
"cancellationDate": "2005-02-04",
"operatorClass": null,
"previousCallSign": null,
"phone": "6828313671",
"fax": "6788313673",
"email": "debbie.johnson@verizonwireless.com",
"contactName": "Regulatory",
"streetAddress": "500 West Dove Road",
"city": "Southlake",
"state": "TX",
"zipCode": "76092",
"poBox": null,
"representativeName": "Debbie E Johnson",
"representativePhone": "6828313671",
"representativeEmail": "debbie.johnson@verizonwireless.com",
"ulsFileNumber": "0000443779",
"source": "FCC Universal Licensing System (ULS)",
"observedAt": "2026-08-10T14:34:56.204Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~usa-fcc-license-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"radioService":"commercial","licenseeNames":["verizon"],"maxLicenses":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~usa-fcc-license-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"radioService":"private","states":["CA"],"requireEmail":true,"maxLicenses":100}'

Apify CLI:

apify call scrapers_lat/usa-fcc-license-scraper \
--input '{"radioService":"amateur","callSigns":["KAA209"]}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per record returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxLicenses.

FAQ and troubleshooting

A run returned 0 records. Why? The filter combination matched nothing in the selected radio service. Loosen filters (for example remove states or a date bound), confirm the licensee name spelling, or try a different radioService. Zero-result runs are not charged.

Can I search more than one radio service in one run? No. Each run searches a single service database. Run the actor once per service you need.

Why are some contact fields empty? Not every FCC license carries a phone, fax, or email. Missing source values are returned as null, never invented. Set requireEmail or requirePhone to keep only records that have them.

What do the status codes mean? A = Active, E = Expired, C = Cancelled, T = Terminated. The human-readable label is also returned in licenseStatusLabel.

Where do amateur operator class and previous call sign come from? Those two fields are populated only for the amateur radio service and are null for other services.

Is this an official FCC tool? No. This actor is independent and has no affiliation with the FCC. It reads only data that is publicly available through the FCC Universal Licensing System. Use it in accordance with the FCC's terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the FCC. Accesses only publicly available FCC Universal Licensing System data. Use in accordance with the FCC's terms of service.