FCC Radio & Wireless License Holders Scraper (USA)
Pricing
from $17.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
radioService | enum | no | commercial | Which 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. |
licenseeNames | string[] | no | ["verizon"] | Licensee names (company or person) to search for. Substring match, case-insensitive. Leave empty to return all licenses in the selected service. |
states | string[] | no | (empty) | Two-letter US state codes, for example CA, NY, TX. |
cities | string[] | no | (empty) | City names (substring match). |
callSigns | string[] | no | (empty) | Exact call signs, for example KAA209. |
frns | string[] | no | (empty) | Exact FCC Registration Numbers (10 digits). |
licenseStatuses | string[] | no | (any) | License status codes to keep. One or more of A (Active), E (Expired), C (Cancelled), T (Terminated). |
grantedAfter | string | no | (empty) | Only licenses granted on or after this date (YYYY-MM-DD). |
expiresAfter | string | no | (empty) | Only licenses that expire on or after this date (YYYY-MM-DD). |
expiresBefore | string | no | (empty) | Only licenses that expire on or before this date (YYYY-MM-DD). |
requireEmail | boolean | no | false | Only return license holders that have an email address on file. |
requirePhone | boolean | no | false | Only return license holders that have a phone number on file. |
maxLicenses | integer | no | 50 | Maximum 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.
| Field | Type | Description |
|---|---|---|
uniqueSystemIdentifier | string | FCC ULS unique system identifier for the license. |
callSign | string | License call sign. |
licenseeName | string | Name of the license holder (company or individual). |
entityType | string | Whether the holder is an Organization or Individual. |
firstName | string | First name (individual licensees), or null. |
lastName | string | Last name (individual licensees), or null. |
frn | string | FCC Registration Number of the holder. |
licenseStatus | string | Raw status code (A / E / C / T). |
licenseStatusLabel | string | Human-readable status: Active, Expired, Cancelled, Terminated. |
radioService | string | Radio service category searched. |
radioServiceCode | string | FCC radio service code. |
radioServiceCodeLabel | string | Human-readable radio service code label, or null. |
grantDate | string | License grant date (YYYY-MM-DD). |
expiredDate | string | License expiration date (YYYY-MM-DD). |
effectiveDate | string | License effective date (YYYY-MM-DD). |
lastActionDate | string | Date of last action (YYYY-MM-DD). |
cancellationDate | string | Cancellation date if applicable (YYYY-MM-DD), or null. |
operatorClass | string | Amateur operator class (amateur service only), or null. |
previousCallSign | string | Previous call sign (amateur service only), or null. |
phone | string | License holder phone number. |
fax | string | License holder fax number. |
email | string | License holder email address. |
contactName | string | Named contact / attention line at the license holder. |
streetAddress | string | Street address. |
city | string | City. |
state | string | Two-letter state code. |
zipCode | string | ZIP code. |
poBox | string | PO Box, or null. |
representativeName | string | Name of the license contact representative (for example counsel). |
representativePhone | string | Representative phone number. |
representativeEmail | string | Representative email address. |
ulsFileNumber | string | ULS application file number. |
source | string | Data source. |
observedAt | string | ISO 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). 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
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon 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.
Related scrapers
- US Business Licenses Scraper: US business licenses with names, addresses and license types.
- USA Contractor License Scraper: US state contractor licenses with contacts and insurance.
- USA Medical License Scraper: US medical professional licenses and disciplinary status.
- USA Liquor License Scraper: US liquor and alcohol licenses.
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.
