# FCC Covered List & Section 889 Bulk Screener (`ultimatemc/fcc-covered-list-screener`) Actor

Screen FCC IDs and brand names in bulk against the public FCC Covered List. Returns the FCC grantee behind each FCC ID, matching entries with dates, Section 889 name matches, category entries to review, source links and a timestamp. Screening aid only, not legal advice.

- **URL**: https://apify.com/ultimatemc/fcc-covered-list-screener.md
- **Developed by:** [Ultimate Foresight Inc](https://apify.com/ultimatemc) (community)
- **Categories:** Business, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**FCC Covered List & Section 889 Bulk Screener** checks a list of **FCC IDs**, **brand names** or product titles against the **public FCC Covered List** and returns the facts it finds, with **source links and timestamps** on every row. Click **Start** with the prefilled example to see four products screened in a few seconds.

> **Screening aid only. Not legal advice and not a compliance determination.** Results report what was or was not found in the public FCC sources listed, as of the dates shown. The Covered List and Section 889 rules change often and also reach subsidiaries, affiliates, rebranded (OEM) products and product categories this tool cannot determine. Verify with [FAR 52.204-24](https://www.acquisition.gov/far/52.204-24), [52.204-25](https://www.acquisition.gov/far/52.204-25) and [52.204-26](https://www.acquisition.gov/far/52.204-26), the [FCC](https://www.fcc.gov/supplychain/coveredlist), and qualified counsel before any purchase, use or representation.

### What does the FCC Covered List screener do?

- ✅ Reads the **grantee code** in each FCC ID (the first 3 characters, or 5 when it starts with "2") and returns the **company that registered it** with the FCC: name, country and registration date.
- ✅ Checks that grantee name, or your brand name, against the producers and providers named in **FCC Covered List** entries, and returns the **verbatim FCC entry text** and its **date of inclusion**.
- ✅ Flags names that match a company named in **Section 889 / FAR 52.204-25**, with the FAR link.
- ✅ Points out **category entries** to review when your product text mentions drones (UAS), routers, power inverters or advanced robotic devices, and ignores common false friends like router bits, inverter microwaves and inverter generators.
- ✅ Shows **FCC Conditional Approvals** table entries that mention your brand, with the dates the FCC shows.
- ✅ Every row has `screeningResult`, `needsReview`, `reviewReasons`, `verifyAt` links, the Covered List date used, `checkedAt` timestamp and the disclaimer.

**Possible `screeningResult` values:** `match_found_on_fcc_covered_list`, `possible_match_needs_review`, `category_entry_or_conditional_approval_needs_review`, `no_match_found_in_sources_checked`, `grantee_code_not_in_fcc_open_data_file`, `invalid_fcc_id_format`. The tool never labels a product as acceptable to buy or use. "No match found" only means no match in the sources checked.

### Who is it for?

- **Procurement and supply-chain teams** screening a parts list or vendor quote for Covered List producers before deeper review.
- **IT and security teams** auditing cameras, radios, routers and other network gear by the FCC ID on the label.
- **Resellers and marketplace sellers** triaging a catalog for listed producers and Covered List product categories.
- **Consultants and auditors** who need a repeatable first pass with sources and timestamps in the file.

### How to screen FCC IDs against the Covered List

1. Click **Start** with the prefilled example (four products) to see the output.
2. Replace the example with your own products in **Products to screen**, or paste plain lists into **FCC IDs** or **Brand or company names**.
3. Or pick an Apify **dataset** (for example a product scraper's output); FCC ID, brand and title fields are detected automatically.
4. Download the results as JSON, CSV or Excel, and send every row marked `needsReview` (all rows are) to whoever makes the decision.

### Input example

Prefilled input (the product codes after the grantee code are illustrative; only the grantee code part of an FCC ID is looked up):

```json
{
  "items": [
    {"ref": "camera-01", "fccId": "2ADTD-DS2CD1023G0"},
    {"ref": "phone-07", "fccId": "BCG-E3091A"},
    {"ref": "router-03", "brand": "Netgear", "description": "Nighthawk Wi-Fi 6 router"},
    {"ref": "shop-12", "brand": "Acme Tools", "description": "router bit set for wood"}
  ]
}
```

Plain lists and a dataset:

```json
{
  "fccIds": ["QISH60-L04", "FCC ID: 2ATEY-ABC123"],
  "brands": ["Example Brand"],
  "datasetId": "YOUR_DATASET_ID",
  "brandField": "brand",
  "descriptionField": "title"
}
```

### Output example

Real output from the prefilled run on 2026-10-22 (row 3, long FCC texts and the disclaimer trimmed with "..."). The other rows returned: camera-01 `match_found_on_fcc_covered_list` (its grantee code is registered to a producer named in a Covered List entry), phone-07 `no_match_found_in_sources_checked`, shop-12 `no_match_found_in_sources_checked` (router bit, not a network router).

```json
{
  "row": 3,
  "input": {
    "brand": "Netgear",
    "description": "Nighthawk Wi-Fi 6 router",
    "ref": "router-03"
  },
  "grantee": null,
  "granteeCodesWithBrandInName": [
    {
      "granteeCode": "PY3",
      "granteeName": "Netgear Incorporated",
      "granteeCountry": "United States"
    }
  ],
  "granteeCodesWithBrandInNameCount": 1,
  "coveredListMatches": [],
  "section889NamedCompanyMatches": [],
  "conditionalApprovalMentions": [
    {
      "category": "routers",
      "fccEntryTextVerbatim": "Netgear, Inc.’s Nighthawk consumer mesh, mobile and standalone routers (R, RAX, RAXE, RS, MK, MR, M and MH series), Orbi consumer mesh, mobile and standalone routers (RBK, RBE, RBR, RBRE, LBR, LBK and CBK series), cable gateways (CAX series) and cable modems (CM series)",
      "datesShownByFcc": "April 14, 2026 - October 1, 2027",
      "sourceUrl": "https://www.fcc.gov/supplychain/coveredlist",
      "note": "Brand text appears in an FCC Conditional Approvals table entry. Check that your exact model is named in the entry."
    }
  ],
  "categoryEntriesToReview": [
    {
      "category": "routers",
      "triggerWord": "router",
      "coveredListCategory": "Routers produced in a foreign country",
      "fccEntryTextVerbatim": "Routers ^ produced in a foreign country, except routers which have been granted a Conditional Approval by DoW or DHS.",
      "dateOfInclusion": "March 23, 2026",
      "entryUpdatedDates": [],
      "sourceUrl": "https://www.fcc.gov/supplychain/coveredlist",
      "note": "This tool does not determine where a product is produced or whether an exception applies."
    }
  ],
  "screeningResult": "category_entry_or_conditional_approval_needs_review",
  "needsReview": true,
  "reviewReasons": [
    "Text mentions a product type covered by a category entry (production country decides). Check where it is produced and any exceptions.",
    "Brand appears in an FCC Conditional Approvals entry. Confirm the exact model and the dates shown.",
    "Brand-only screening cannot reveal rebranded (OEM) products. Screen the FCC ID from the product label when available."
  ],
  "verifyAt": [
    "https://www.fcc.gov/supplychain/coveredlist",
    "https://www.fcc.gov/oet/ea/fccid",
    "https://www.acquisition.gov/far/52.204-25"
  ],
  "coveredListDateShown": "October 21, 2026",
  "coveredListRetrievedAt": "2026-10-22T18:11:13+00:00",
  "coveredListCopyUsed": "bundled",
  "granteeFileRowsUpdatedAt": "2021-03-22",
  "checkedAt": "2026-10-22T18:14:35+00:00",
  "disclaimer": "SCREENING AID ONLY. NOT LEGAL ADVICE AND NOT A COMPLIANCE DE..."
}
```

The key-value store record `SOURCES` lists every source with its retrieval date.

### How much does it cost to screen products?

Pay per result: **$0.005 per product screened**, plus a $0.00005 start fee per run and small Apify platform usage paid by you (the 4-product prefill run used about $0.0001 of platform usage). 100 products cost about $0.50 and 1,000 products about $5.00, plus platform usage. You can cap spend with the maximum cost per run setting.

### Use it through the API, integrations or AI agents

- Run and get results in one call: `https://api.apify.com/v2/acts/ultimatemc~fcc-covered-list-screener/run-sync-get-dataset-items`
- MCP for AI agents: `https://mcp.apify.com?tools=ultimatemc/fcc-covered-list-screener`
- Schedule it, add a webhook, or chain it after a product scraper and pass that run's dataset ID.

### Data sources

- **FCC Covered List** (47 CFR 1.50002): https://www.fcc.gov/supplychain/coveredlist . Each run makes one plain request for the live page; if the FCC site does not answer, it uses the copy bundled with the latest build. Every row shows `coveredListCopyUsed`, the list date shown by the FCC and when that copy was retrieved. The bundled copy is refreshed regularly.
- **FCC Open Data, EAS Equipment Authorization Grantee Registrations** (public domain): https://opendata.fcc.gov/d/3b3k-34jp . 50,153 grantee codes. This FCC file covers registrations received through 2021-03-22, so newer grantee codes are reported as not found, with a link to the FCC ID search. Contact names and addresses are not used.
- **FAR 52.204-25**: https://www.acquisition.gov/far/52.204-25 . Rules: https://www.ecfr.gov/current/title-47/chapter-I/subchapter-A/part-1/subpart-CC

### How the matching works

- `match_found_on_fcc_covered_list`: the grantee name contains the full producer name as the FCC writes it, or the brand you entered is exactly the producer's distinctive name.
- `possible_match_needs_review`: a name contains the producer's distinctive word but not the full name. It may be a subsidiary, an affiliate or an unrelated company; the tool does not decide.
- Category entries are flagged from keywords in your text, because they depend on where a product is produced and on exceptions the tool cannot check.
- Exact text rules, no AI.

### FAQ

#### Does a "no match found" result mean I can buy or use the product?

No. It means no match was found in the public FCC sources checked. Subsidiaries, affiliates, rebranded products and category entries can still apply. This is a screening aid, not a compliance determination.

#### Can it find rebranded (OEM) cameras or radios?

Partly. When a rebranded product carries an FCC ID whose grantee code belongs to a listed producer, the grantee record shows it. Brand-name screening alone cannot reveal OEM relationships.

#### How current is the data?

Each row shows the Covered List date and retrieval time used. The grantee file is the FCC's open-data copy (through 2021-03-22).

#### Is it AI?

No. Deterministic rules on public FCC data.

### Limitations

- Only the grantee code of an FCC ID is checked; the product code is not verified against FCC grants.
- Grantee codes registered after 2021-03-22 are not in the FCC open-data file and come back as not found.
- Products without an FCC ID (many wired cameras) can only be screened by brand.
- Category entries (foreign-produced drones, routers, inverters, robots) depend on production country and exceptions this tool cannot check.
- English text rules; brand matching is name-based.

### Other tools by Ultimate Foresight

- [Ad Copy Policy Checker for Meta, Google & TikTok](https://apify.com/ultimatemc/ad-copy-policy-checker): checks ad text against Facebook, Instagram, Google Ads and TikTok ad policies before you submit.
- [H-1B Visa Sponsor Checker & Score for Job Listings](https://apify.com/ultimatemc/h1b-visa-sponsor-score): adds Department of Labor H-1B sponsorship history and a 0-100 score to company names or job listings.
- [Chain vs Independent Labeler for Google Maps Leads](https://apify.com/ultimatemc/chain-vs-independent-labeler): labels local businesses as chain, franchise or independent.
- [YouTube Monetization Checker for Scripts & Titles](https://apify.com/ultimatemc/youtube-script-monetization-checker): pre-checks titles, descriptions and scripts for wording that leads to limited or no ads.
- [Etsy & eBay Listing Policy & Banned Item Checker](https://apify.com/ultimatemc/etsy-ebay-listing-policy-checker): pre-checks marketplace listings for prohibited items, counterfeit wording and off-platform contact.
- [Job Scam Detector & Trust Score for Job Postings](https://apify.com/ultimatemc/job-posting-trust-score): scores job postings 0-100 for scam and ghost-job signals.
- [SAM.gov Amendment & Opportunity Change Tracker](https://apify.com/ultimatemc/sam-gov-opportunity-change-detector): shows what changed between versions of a SAM.gov notice: deadlines, set-asides, NAICS and attachments.
- [Product Recall Checker for Brands, UPCs & Products](https://apify.com/ultimatemc/product-recall-matcher): matches your brands, products, UPCs or model numbers against CPSC, FDA and NHTSA recalls.
- [App Store & Google Play Listing Policy Checker](https://apify.com/ultimatemc/app-store-listing-policy-checker): pre-checks app names, subtitles and descriptions against Apple and Google Play metadata rules.
- [Company Name Normalizer & Deduplicator for CRM](https://apify.com/ultimatemc/company-name-canonicalizer): cleans company names (Inc, LLC, d/b/a, aliases) and groups duplicates in CRM, lead or vendor lists.
- [Green Claims Checker: EU Greenwashing Ban & FTC](https://apify.com/ultimatemc/green-claims-checker): flags risky eco-friendly, carbon neutral and recyclable wording under EU, FTC and UK CMA rules.
- [Influencer #ad Disclosure Checker: FTC & ASA](https://apify.com/ultimatemc/influencer-ad-disclosure-checker): flags influencer posts with missing or unclear #ad labels under FTC, ASA/CAP and CMA rules.
- [Job Title to SOC Code Mapper with O\*NET Data](https://apify.com/ultimatemc/job-title-soc-code-mapper): maps job titles to SOC and O\*NET-SOC codes in bulk, with seniority and tech skills found in the posting.

Wrong match or missing entry? Open an issue on the **Issues** tab with the FCC ID or brand, and we'll review the rule.

# Actor input Schema

## `items` (type: `array`):

One object per product with any of: "fccId" (from the label, e.g. "2ADTD-DS2CD1023G0"), "brand", "model", "description" and your own "ref". The prefill has four examples (the product codes are illustrative; only the grantee code part of an FCC ID is looked up). Replace them with your own list.

## `fccIds` (type: `array`):

Plain list of FCC IDs, one per line, e.g. "QISH60-L04" or "FCC ID: 2ATEY-ABC123". Spaces, hyphens and the "FCC ID:" prefix are handled.

## `brands` (type: `array`):

Plain list of brand or manufacturer names, one per line. Brand-only screening cannot reveal rebranded (OEM) products, so use FCC IDs when you have them.

## `datasetId` (type: `string`):

Apify dataset to screen, for example a product or marketplace scraper's output. FCC ID, brand and description fields are detected automatically; override them below.

## `fccIdField` (type: `string`):

Field holding the FCC ID in dataset items, e.g. "fccId". Leave empty to detect it.

## `brandField` (type: `string`):

Field holding the brand or manufacturer, e.g. "brand". Leave empty to detect it.

## `descriptionField` (type: `string`):

Field holding the product title or description, e.g. "title". Leave empty to detect it.

## `categoryHints` (type: `boolean`):

Point out Covered List category entries (foreign-produced UAS, routers, power inverters, advanced robotic devices) when the text mentions those product types. Common false friends such as router bits, inverter microwaves and inverter generators are ignored.

## `tryLiveCoveredList` (type: `boolean`):

Make one plain request for the current FCC Covered List page. If the FCC site does not answer, the copy bundled with the latest build is used. Every result shows which copy and which dates were used.

## `maxItems` (type: `integer`):

Stop after this many products.

## Actor input object example

```json
{
  "items": [
    {
      "ref": "camera-01",
      "fccId": "2ADTD-DS2CD1023G0"
    },
    {
      "ref": "phone-07",
      "fccId": "BCG-E3091A"
    },
    {
      "ref": "router-03",
      "brand": "Netgear",
      "description": "Nighthawk Wi-Fi 6 router"
    },
    {
      "ref": "shop-12",
      "brand": "Acme Tools",
      "description": "router bit set for wood"
    }
  ],
  "categoryHints": true,
  "tryLiveCoveredList": true,
  "maxItems": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "items": [
        {
            "ref": "camera-01",
            "fccId": "2ADTD-DS2CD1023G0"
        },
        {
            "ref": "phone-07",
            "fccId": "BCG-E3091A"
        },
        {
            "ref": "router-03",
            "brand": "Netgear",
            "description": "Nighthawk Wi-Fi 6 router"
        },
        {
            "ref": "shop-12",
            "brand": "Acme Tools",
            "description": "router bit set for wood"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ultimatemc/fcc-covered-list-screener").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "items": [
        {
            "ref": "camera-01",
            "fccId": "2ADTD-DS2CD1023G0",
        },
        {
            "ref": "phone-07",
            "fccId": "BCG-E3091A",
        },
        {
            "ref": "router-03",
            "brand": "Netgear",
            "description": "Nighthawk Wi-Fi 6 router",
        },
        {
            "ref": "shop-12",
            "brand": "Acme Tools",
            "description": "router bit set for wood",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ultimatemc/fcc-covered-list-screener").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "items": [
    {
      "ref": "camera-01",
      "fccId": "2ADTD-DS2CD1023G0"
    },
    {
      "ref": "phone-07",
      "fccId": "BCG-E3091A"
    },
    {
      "ref": "router-03",
      "brand": "Netgear",
      "description": "Nighthawk Wi-Fi 6 router"
    },
    {
      "ref": "shop-12",
      "brand": "Acme Tools",
      "description": "router bit set for wood"
    }
  ]
}' |
apify call ultimatemc/fcc-covered-list-screener --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ultimatemc/fcc-covered-list-screener"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZPhTfUSJZZwErFQLu/builds/KcTmL5zPsXVvULFV0/openapi.json
