FCC License Scraper - ULS Call Sign, FRN, Towers & ECFS
Pricing
from $1.60 / 1,000 fcc licence or tower records
FCC License Scraper - ULS Call Sign, FRN, Towers & ECFS
Search FCC ULS licences by call sign, FRN, licensee, service, state, status and dates: amateur, GMRS, land mobile, microwave, cellular, PCS/AWS, paging, marine. Licensee phone, email, address, contact. Tower registrations, new-grant monitor from FCC daily files, ECFS docket filings.
Pricing
from $1.60 / 1,000 fcc licence or tower records
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
What does FCC License Scraper do?
FCC License Scraper reads the Federal Communications Commission's Universal Licensing System (ULS) and returns one clean row per licence: call sign, licensee, FRN, radio service, status, grant / effective / expiration dates, mailing address, and - for business licences - the licensee's phone and email plus the licence contact person. It covers every ULS service file (amateur, GMRS, land mobile, microwave, cellular, PCS/AWS/700 MHz, paging, marine, aviation, commercial operators, BRS/EBS), FCC antenna structure registrations (towers), a new-licence feed from the FCC's daily files, and ECFS docket filings.
- ๐ก Every ULS service in one actor - 14 FCC licence files, 129 radio service codes, 5.2 million licences, plus 197,769 tower registrations.
- โ๏ธ Contacts, not just names - licensee phone, email, fax and attention line, plus the licence contact (company, person, phone, email) the FCC keeps on file.
- ๐ Look up or search - by call sign, FRN or licensee name, or filter by service, service code, status, state, city, ZIP, applicant type, operator class, grant / expiry / last-action dates, frequency range.
- ๐ New-licence feed - grants, renewals, modifications and cancellations from the FCC's daily transaction files; schedule it daily with "only new rows".
- ๐ผ Towers - owner, contact, coordinates, heights, structure type and FAA study number for every registered antenna structure.
- ๐๏ธ ECFS filings - comments, replies, ex partes and orders in any docket, with document links.
- ๐ No login, no API key - the actor reads the FCC's public bulk files and the keyless ECFS API.
What data can you get from the FCC ULS?
๐ป Call sign callSign | ๐ข Licensee licenseeName | ๐ FRN frn |
๐ถ Radio service + code radioService | โ
Status licenseStatusLabel | ๐ Grant, effective, expiration dates |
โณ Days to expiry daysToExpiry | โ๏ธ Phone phone | ๐ง Email email |
๐ Fax fax | ๐ Address fullAddress | ๐ค Attention line attentionLine |
๐งโ๐ผ Licence contact contactName | ๐๏ธ Contact company contactOrganization | ๐ Contact phone / email |
๐ท๏ธ Applicant type applicantType | ๐ผ Business flag isBusiness | โ๏ธ Certifier name + title |
๐ Amateur class operatorClass | ๐ Previous call sign, trustee | ๐บ๏ธ Market name, channel block |
| ๐๏ธ Frequencies (MHz) | ๐ Licensed locations + coordinates | ๐ FCC action history |
| ๐ผ Tower owner, contact, heights | ๐งญ Tower latitude / longitude | โ๏ธ FAA study number |
| ๐๏ธ ECFS docket, filer, author, law firm | ๐ ECFS document links | ๐ FCC licence / registration URL |
How to scrape FCC licences with FCC License Scraper
- Sign up for a free Apify account - the free plan's credit covers thousands of rows.
- Open FCC License Scraper and pick What to scrape: licences and towers, recent licence activity, or ECFS filings.
- Choose the Radio services to read and add call signs, FRNs or names - or leave them empty and use the filters.
- Click Start. A cellular search returns in seconds; the amateur file (1.7 million licences) takes 15-40 seconds.
- Download the results as JSON, CSV, Excel or HTML, or read them through the Apify API.
โฌ๏ธ Input
Input parameters
| Parameter | Type | Description |
|---|---|---|
mode | select | licenses (default), recentActivity, ecfsFilings. |
radioServices | multi-select | FCC files to read. Default cellular. Also amateur, gmrs, landMobilePrivate, landMobileCommercial, broadcastAuxiliary, microwave, marketBased, paging, coastGround, ship, aircraft, commercialOperators, brsEbs, antennaStructures. |
callSigns | list | Exact call signs, e.g. W1AW, KNKA671. |
frns | list | FCC Registration Numbers - every licence held under each. |
licenseeNames | list | Licensee (or tower owner) name contains, e.g. verizon, county of. |
statuses | multi-select | A, E, C, T, L, P, X. Empty = Active only for a search, any status for recent activity. |
radioServiceCodes | multi-select | Any of the 129 FCC codes (HA, ZA, IG, PW, CW, AW...). Alone, it picks the right file for you. |
states, cities, zipCodes | lists | Licensee address (towers: where the structure stands). ZIP codes match as prefixes (770). |
applicantTypes | multi-select | Individual, Corporation, LLC, Governmental Entity, Amateur Club... |
operatorClasses | multi-select | Amateur class (Extra, General, Technician...) or commercial operator licence (GROL, MROP...). |
grantedFrom / grantedTo, expiresFrom / expiresTo, lastActionFrom / lastActionTo | dates | Date windows. |
expiringWithinDays | integer | Active licences expiring in the next N days. |
frequencyFromMhz / frequencyToMhz | numbers | Licences with an assigned frequency or band in the range. |
towerStatuses, structureTypes, minHeightMeters, maxHeightMeters | Tower filters. Empty status = Constructed + Granted. | |
businessOnly, requireEmail, requirePhone | booleans | Keep business licensees / licences with an email / with a phone. |
recentDays | integer | Recent activity: how many of the FCC's latest non-empty daily files to read (1-7, default 3). |
eventTypes | multi-select | Recent activity: newGrant (default), renewal, modification, cancellation, expiration, termination, assignment, transferOfControl, adminUpdate, lease, construction, dismantlement, otherUpdate. |
ecfsProceedings, ecfsFiler, ecfsQuery | ECFS: docket numbers, filer name, full-text words (at least one). | |
ecfsReceivedFrom / ecfsReceivedTo, ecfsSubmissionTypes, ecfsExcludeExpressComments, ecfsSort | ECFS date window, filing types, skip one-line express comments, order. | |
includeFrequencies, includeLocations, includeHistory | booleans | Add frequencies, licensed locations, FCC action history. |
monitorMode, monitorName, resetMonitor | Only rows earlier runs did not deliver. | |
maxResults | integer | Default 100; 0 = no limit. |
sortBy | select | File order (fastest), newest grant, latest action, soonest expiry, tallest structure. |
includeRawRecord | boolean | Attach the FCC's own columns. |
proxyConfiguration | proxy | Not needed (see FAQ). |
Input JSON
{"radioServices": ["landMobileCommercial", "landMobilePrivate"],"states": ["CA"],"businessOnly": true,"requireEmail": true,"maxResults": 500}
Pick the radio service before anything else
Each FCC service family is a separate weekly file, and the actor reads only the files you pick. Business two-way radio users are in land mobile private (Industrial/Business pool, public safety); SMR and 220/900 MHz operators in land mobile commercial; carriers' PCS/AWS/700 MHz/CBRS licences in market-based; point-to-point links in microwave; hams in amateur. If you only know the service code (e.g. IG, CW), put it in radioServiceCodes and leave radioServices empty.
Use recent activity for new licensees, not a date window on the weekly file
mode: recentActivity reads the FCC's daily transaction files (a few KB to 3 MB each) - every licence granted, renewed or cancelled on each of the last days, with the FCC's own action codes. It is far faster and cheaper than searching a weekly file by grant date, and with monitorMode on a daily schedule it is a new-licensee feed.
โฌ๏ธ Output
A licence (land mobile commercial, real row from the 2026-10-11 file; trimmed):
{"recordType": "license","callSign": "KMJ431","licenseeName": "GILCOMM LLC","frn": "0005836275","radioService": "800 MHz Trunked SMR (SMR, Site-specific)","licenseStatusLabel": "Active","grantDate": "2025-06-04","expirationDate": "2035-05-16","applicantType": "Limited Liability Company","isBusiness": true,"phone": "6613228650","email": "lbarnes@atginternet.com","fullAddress": "4440 EASTON DRIVE, BAKERSFIELD, CA 93309","contactName": "Lori Barnes","contactOrganization": "Applied Technology Group, Inc.","contactEmail": "lbarnes@atginternet.com","certifierTitle": "owner","uniqueSystemIdentifier": "1112431","licenseUrl": "https://wireless2.fcc.gov/UlsApp/UlsSearch/license.jsp?licKey=1112431","dataAsOf": "2026-10-11"}
A new grant from the daily file (recent activity):
{"callSign": "WSON839","licenseeName": "WESTERN NEW MEXICO TELEPHONE COMPANY, INC.","radioService": "Common Carrier Fixed Point to Point Microwave","grantDate": "2026-10-13","phone": "5753882546","email": "wbaxter@wnmt.com","contactOrganization": "Intelpath","eventType": "newGrant","eventDate": "2026-10-13","eventCodes": [{ "code": "LIISS", "description": "License Issued" }]}
A tower:
{"recordType": "antennaStructure","registrationNumber": "1000178","ownerName": "Crown Castle GT Company, LLC","structureTypeLabel": "Any type of Pole","statusLabel": "Constructed","structureCity": "HOUSTON","structureState": "TX","latitude": 29.782194,"longitude": -95.617194,"overallHeightAboveGroundM": 49.4,"faaStudyNumber": "2008-ASW-4448-OE","ownerPhone": "7244162400","ownerEmail": "Regulatory.Department@crowncastle.com","contactName": "Tom Anderson","contactEmail": "Tom.Anderson@crowncastle.com"}
An ECFS filing:
{"recordType": "ecfsFiling","filingId": "26110080152","submissionType": "NOTICE OF EXPARTE","proceedings": ["25-180", "26-54", "14-177", "25-133"],"filers": ["GeoLinks", "JLC Infrastructure"],"authors": ["Andrew Magloughlin"],"lawFirms": ["Steptoe LLP"],"presentedTo": ["Office of Chairman Brendan Carr"],"dateReceived": "2026-10-08T21:59:08.320Z","documentUrls": ["https://www.fcc.gov/ecfs/document/26110080152/1"],"filingUrl": "https://www.fcc.gov/ecfs/search/search-filings/filing/26110080152"}
How complete is each field? (measured on real runs, 2026-10-14)
| Field | Land mobile private, TX (1,000) | Land mobile commercial, all active (8,097) | Cellular, all active (3,861) | Amateur, TX (1,000) | Towers, TX (1,000) |
|---|---|---|---|---|---|
| Licensee / owner name, FRN, address | 100% | 100% | 100% | 100% | 100% |
| Phone | 100% | 100% | 100% | 0% | 99.9% |
| 99.6% | 92.8% | 99.7% | 0% | 95.1% | |
| Licence contact (person or company) | 99.8% | 95.9% | 100% | 0% | 68.9% |
| Contact email | 98.5% | 93.9% | 99.9% | 0% | 93.5% |
| Fax | 75.2% | 44.8% | 21.2% | 0% | - |
| Certifier title | 4.5% | 61.7% | 94.2% | 1% | 99.9% (signer) |
| Operator class | - | - | - | 99% | - |
The FCC publishes no phone or email for individual amateur, GMRS, ship, aircraft and commercial-operator licensees - those rows carry name, FRN and mailing address. ECFS (1,000 filings in docket 25-133): filer and type 100%, document links 87.9%, authors 32.5%, law firms 13.7%.
Use cases
- ๐ป Two-way radio and equipment dealers - land mobile licensees by state with phone, email and the frequency coordinator who files for them.
- ๐ผ Tower and site services - every registered structure with owner contact, coordinates and height.
- ๐ Renewal and compliance services -
expiringWithinDays: 90finds active licences up for renewal. - ๐ New-licensee prospecting - a daily recent-activity run with
monitorModedelivers each day's new grants. - ๐ถ Spectrum and carrier research - market-based licences by carrier FRN, market and channel block.
- ๐๏ธ Ham radio clubs and apps - call-sign verification, operator class, trustee.
- โ๏ธ Regulatory and policy teams - every filing in a docket, with law firm, author and document links.
How much does it cost to scrape the FCC ULS?
Pay per row, no start fee: $0.0016 per licence or tower ($1.60 per 1,000) and $0.0032 per ECFS filing ($3.20 per 1,000). Rows your filters drop, call signs that are not found and rows a monitor already delivered are not charged.
| Rows | Licences / towers | ECFS filings |
|---|---|---|
| 10 | $0.016 | $0.032 |
| 100 | $0.16 | $0.32 |
| 1,000 | $1.60 | $3.20 |
| 10,000 | $16.00 | $32.00 |
Apify's free plan includes monthly credit that covers several thousand licences.
Integrations, API, scheduling & MCP
- Schedules - run recent activity daily (the FCC posts daily files each morning, Eastern time) or a search weekly (weekly files are posted on Sundays).
- Webhooks, Make, Zapier, n8n, Google Sheets, Slack - send each run's rows to your CRM or sheet.
- API - start runs and read datasets with apify-client for Python or JavaScript.
- MCP - call the actor from Claude, ChatGPT or any agent through the Apify MCP server.
More government data scrapers
- โ๏ธ FAA Aircraft Registry Scraper - aircraft owners by N-number, make, model and state.
- ๐ FMCSA Carrier Scraper - trucking companies with USDOT, MC, phone and email.
- โ๏ธ Phone Number Validator - check line type and carrier of the licensee phones you export.
- ๐๏ธ GSA Auctions Scraper - federal surplus lots and bids.
- More on our Apify profile.
Limits & empty runs
- Freshness - weekly licence files are the FCC's Sunday snapshot (
dataAsOfon every row); recent activity covers the last 7 daily files the FCC keeps. - Speed - small files answer in seconds; a search of the amateur file reads up to ~150 MB of the FCC's zip and takes 15-40 s. "File order" stops as soon as
maxResultsis filled; any other sort reads the whole file. - ECFS - the API returns at most 10,000 filings per query; newest-received order reads further by date windows, other orders stop at 10,000. The public API no longer returns filer addresses, titles or text snippets.
- Empty runs - a run with no match ends successfully with 0 rows and costs nothing; the run summary (
RUN_SUMMARY) lists call signs that were not found and why. - Integrity - every FCC file member read to the end is checked against its CRC-32; a corrupted download fails the run instead of returning partial data.
โ FAQ
How much does FCC License Scraper cost?
$0.0016 per licence or tower row and $0.0032 per ECFS filing, no start fee. 100 licences cost $0.16.
How many FCC licences can FCC License Scraper return?
All of them: 5.2 million licences across the 14 ULS files (1.7 million amateur, 860,739 land mobile private, 793,162 commercial operators, 615,496 GMRS...) and 197,769 tower registrations. Set maxResults: 0 for no limit.
Can FCC License Scraper find new FCC licences every day?
Yes - mode: recentActivity with eventTypes: ["newGrant"] and monitorMode: true on a daily schedule returns each new grant once. Over three daily files the FCC issued 828 new licences across all services (measured 2026-10-14).
Do I need an FCC API key or login to use FCC License Scraper?
No. The licence and tower data come from the FCC's public bulk files and ECFS from the FCC's keyless public API host.
Why does FCC License Scraper return no phone or email for some licences?
The FCC does not publish phone or email for individual licensees (amateur, GMRS, ship, aircraft, commercial operators). Business licences in land mobile, microwave, cellular, market-based and paging carry them on 92-100% of rows.
Can I use FCC License Scraper with the Apify API or an MCP server?
Yes - every input above works through the API, and the actor is available to AI agents through the Apify MCP server.
Can FCC License Scraper search by frequency?
Yes - set frequencyFromMhz and frequencyToMhz (equal values for one exact frequency). The actor then also reads the FCC's frequency file for the services you picked.
Does FCC License Scraper need a proxy?
No. It downloads the FCC's files directly. If the FCC ever refuses the direct download, the actor switches to a residential proxy and then the Apify Unblocker by itself, within a small per-run budget.
Why did my FCC License Scraper run return nothing?
Check the radio service: a call sign is only found in the file of its service (a ham call sign in amateur, a business radio call sign in landMobilePrivate). The default status filter is Active - add E, C and T to find expired or canceled licences.
Your feedback
Missing a field or found a bug? Open an issue on the actor's Issues tab and we will look at it.
FCC License Scraper is an independent tool and is not affiliated with or endorsed by the Federal Communications Commission.