E-rate Form 470 Bid Radar: School & Library RFP Alerts
Pricing
from $900.00 / 1,000 matched 470 alert, included tiers
E-rate Form 470 Bid Radar: School & Library RFP Alerts
Watch the states, service categories and keywords you name and get new FCC Form 470 filings (school and library RFPs) as deduped alert rows with the bid clock attached, pulled from USAC's official open-data feed on your schedule. Optional bid brief joins the applicant's Form 471 funding history.
Pricing
from $900.00 / 1,000 matched 470 alert, included tiers
Rating
0.0
(0)
Developer
Paul Mikulskis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
E-rate Form 470 Bid Radar watches the states, service categories, and keyword terms you name, then delivers the new FCC Form 470 filings that match. A Form 470 is the RFP a school, library, or consortium posts when it seeks services funded by E-rate. The actor reads USAC's official open-data feed, keeps a per-filter memory so you never see the same 470 twice, computes each filing's competitive-bidding clock, and returns flat rows you can download or pipe through the Apify API on the schedule you set.
This is a standing filter-watch, not a bulk export: every run returns only the matching 470s your filter has not delivered before, each with the date the applicant can first award a contract, so you know what to bid on and how many days you have before they can award it.
What does E-rate Form 470 Bid Radar do?
Every run pulls a recent date window from USAC's public FCC Form 470 dataset (opendata.usac.org, dataset jt8s-3q52, license public domain), keeps only the 470s whose state, service category, and optional keyword terms match your filter, removes any 470 this filter has already delivered, and returns the rest as dataset rows. Each row carries the applicant, the service request, the certified date, and allowableContractDate (the date, 28 days after certification, when the applicant may first award a contract). An optional webhook receives the same new alerts as soon as the run delivers them.
Optionally, for any applicant you name by billed entity number (BEN), the actor builds a bid brief: a join of three public Form 471 datasets that shows the applicant's incumbent service providers, their committed funding history, and the applicant's Category 1 and Category 2 discount rates. The brief tells you who already serves this applicant and at what discount, so you can price and position a competitive response.
It reads a public JSON feed, so there is no login, no proxy, and no browser.
Why use E-rate Form 470 Bid Radar?
- Watch the RFPs that matter to you. Filter by state, by Category 1 (internet and WAN transport) or Category 2 (internal connections), and by keyword or manufacturer terms such as
firewall,Cisco, orcabling. - Know the clock. Every alert carries
allowableContractDateandbidDaysRemaining, computed from USAC's 28-day competitive-bidding rule, so you see how many days remain before the applicant can award. - No duplicates. Each filter remembers what it has already delivered, so you can overlap your lookback window without paying for the same 470 twice.
- Understand the incumbent. A bid brief shows who currently serves an applicant and the discount they receive, drawn entirely from public Form 471 records.
How to use E-rate Form 470 Bid Radar
- In the Input tab, list the two-letter States you want to watch (for example
TX). - Leave Service categories on both
CAT1andCAT2, or narrow to one. - Optionally add Keyword / manufacturer terms to keep only 470s whose service request mentions them.
- Run it once to see what matches. Setting Dry run to true makes that first run a no-charge preview of up to five rows.
- Create a daily Schedule for the actor. Each scheduled run delivers only 470s you have not seen before, so a daily cadence with the default 7-day lookback covers the portal's measured 2 to 4.5 day publishing lag plus weekends.
- Optionally set a Webhook URL to receive each run's new alerts as a POST, and list Bid brief BENs to add a bid brief for named applicants.
Give each distinct filter its own Filter name so its deduplication memory stays separate.
Input
| Field | Required | Default | Description |
|---|---|---|---|
states | Yes | none | 1 to 15 two-letter state codes to watch. |
serviceCategories | No | ["CAT1","CAT2"] | CAT1 (Category 1) and/or CAT2 (Category 2). |
keywords | No | none | Up to 25 terms, each 3 to 80 characters. Case and punctuation insensitive substring match on the service request line. |
lookbackDays | No | 7 | Days back from today (America/New_York) to query on the certified date, 1 to 30. Overlap is free because delivered 470s are deduplicated. |
briefBENs | No | none | Up to 10 billed entity numbers to build a bid brief for on this run. |
webhookUrl | No | none | Optional https URL that receives new alerts as a POST. |
filterName | No | default | Names this filter so its dedupe memory persists across runs. |
dryRun | No | false | Preview up to 5 rows, charge nothing, write no filter memory. |
A ready-to-run example (also the prefilled input):
{"states": ["TX"],"serviceCategories": ["CAT1", "CAT2"],"lookbackDays": 14,"filterName": "default"}
Output
Each new 470 is one flat dataset row. You can download the dataset in JSON, HTML, CSV, or Excel.
{"rowType": "alert","applicationNumber": "260026228","applicantName": "FESSENDEN-BOWDON SCHOOL DISTRICT 25","billedEntityNumber": "134483","contactName": "Darren Sheggerud","contactEmail": "darren.sheggerud@k12.nd.us","contactPhone": "701-547-3096","complianceNote": null,"state": "ND","city": "FESSENDEN","serviceCategory": "Category 1","serviceType": "Data Transmission and/or Internet Access","serviceFunction": "Category One Network Equipment","quantities": "1 Each","manufacturer": null,"fundingYear": "2026","certifiedDate": "2026-06-24","allowableContractDate": "2026-07-22","bidDaysRemaining": 16,"rfpDocumentUrls": ["https://publicdata.usac.org/EPC/Prd/Form470/260026228/134483/21409768-RFP%20Narrative.docx"],"matchedTerms": [],"filterName": "default","billing": "included-tier","source": "https://opendata.usac.org/resource/jt8s-3q52.json"}
A bid brief row (delivered only for BENs you request) looks like:
{"rowType": "bid-brief","billedEntityNumber": "140475","applicantName": "Prosper Indep School District","incumbentSpins": [{ "spinName": "Zayo Group, LLC", "fundingYear": "2026", "commitmentUsd": 6931.2 }],"discountC1": "0.4","discountC2": "0.4","fundingYearsCovered": ["2026", "2025", "2024"],"sources": ["https://opendata.usac.org/resource/qdmp-ygft.json"],"billing": "bid-brief","status": "ok"}
If a BEN has no Form 471 record on file, the brief is still returned with its sections empty and a note saying so, free of charge.
On a filter's first run of each ISO week, one weekly digest row (rowType: "weekly-digest") is added to the dataset, free of charge: the filter's states, alerts delivered so far this month, the most common service types among the week's matches, and the feed's newest certified date. It is a season-to-date pulse you can point a dashboard at without parsing every alert.
A summary record is also written to the run's key-value store under OUTPUT with counts for the run: new matches, alerts delivered by tier, bid briefs delivered, any rows withheld at your charge limit, how many 470s the filter now remembers, the feed's newest certified date, and the feed lag in days.
Alert data fields
| Field | Meaning |
|---|---|
applicationNumber | The Form 470 application number. This is the deduplication key. |
applicantName, billedEntityNumber | The applicant (school, library, or consortium) and its BEN. |
contactName, contactEmail, contactPhone | The 470's public contact. Present for filings through funding year 2027; withheld for funding year 2028 and later (see Compliance below). |
complianceNote | Present only when contact fields are withheld, explaining why. |
state, city | The applicant's location. |
serviceCategory | Category 1 or Category 2. |
serviceType, serviceFunction, quantities, manufacturer | The service request line, as filed. |
fundingYear | The funding year, as filed. |
certifiedDate | The date USAC certified the 470 (YYYY-MM-DD). |
allowableContractDate | The first date the applicant may award a contract (28 days after certification). |
bidDaysRemaining | allowableContractDate minus today. How long until the applicant can award. |
rfpDocumentUrls | Links to the RFP documents and the certified form PDF, when the applicant attached them. |
matchedTerms | Which of your keyword terms matched this 470. |
filterName, billing, source | The filter this row belongs to, its billing tier, and the source dataset URL. |
Demo dataset
A public FY2027 season demo lives at a stable URL:
It is a dated snapshot generated by the actor's own code in dry-run mode: real Form 470 alert rows from the five states with the most FY2027 filings in the two weeks before generation, one populated bid brief, and a weekly digest row. The first record states when the snapshot was generated, the season's filing count to date, and the exact input that reproduces it. Refreshes during the filing season replace the snapshot behind this same URL, so the link points at the current one rather than a frozen copy. To see today's filings instead, run the actor with the prefilled example input: a dry run charges nothing and writes no filter memory.
Pricing
The actor is billed per event.
- Monthly filter watch fee: 5.00 USD per filter. Charged once per filter per calendar month on the first run that completes a fresh feed query.
- Alert: 0.90 USD per delivered 470 for the first 150 alerts a filter delivers in a month.
- Volume alert: 0.45 USD per delivered 470 beyond the first 150 in a month. This tier exists for the peak filing season, when a broad, big-state filter matches hundreds of 470s: in February 2026, Ohio had 496 Form 470 applications and New York 413, measured from the same USAC feed.
- Bid brief: 9.90 USD per brief for each BEN you request, charged only when the brief returns real Form 471 history: an incumbent provider, a discount rate, or a funding year. A well-formed BEN with no Form 471 record on file is still returned with a note, free of charge.
- First calendar month free of the watch fee. The 5.00 USD watch fee is waived during your account's first calendar month; alerts still bill per alert. The free month applies once per account.
Neither a dry run nor a run that cannot complete its query charges anything. When the feed has not refreshed in more than 7 days, the watch fee is deferred until it does, so you never pay to watch a paused portal. Alerts withheld because you reached your run's max-charge limit are not billed and are redelivered on the next run.
A quiet-season filter on one state bills the watch fee plus a handful of alerts. A broad filter at the February peak bills far more: one that matched all 496 of Ohio's February 2026 filings would bill about 296 USD for the month, watch fee included.
Seasonality
E-rate Form 470 filing runs on the program calendar. The heavy season is roughly July through March and peaks in late winter: of the roughly 23,700 applications certified for funding year 2026, about 6,100 landed in February alone, measured from the same USAC feed. April through June is a trickle. A filter you schedule in the quiet months bills little more than its watch fee and is already running when volume returns.
Tips and advanced options
- Keep the same
filterNameacross a filter's scheduled runs, or its dedupe memory starts over and you receive 470s you have already seen. - Set a per-run max-charge limit if you want a hard ceiling. If a run reaches it mid-delivery, the withheld 470s are not billed and return on the next run, with one marker row noting how many were held back.
- Add
briefBENsfor the applicants you are seriously considering, rather than every match, since each brief is billed.
Compliance and responsible use
Form 470 and Form 471 records are public E-rate filings published by USAC. This actor delivers bid intelligence: what to bid on, the applicant's funding history, and the competitive-bidding clock.
A posted Form 470 is USAC's invitation to bid, not a marketing list. Through funding year 2027, a service provider may use a 470's public contact fields for responsive, bid-specific communication during the competitive-bidding window: questions about the procurement, requests for the RFP documents, and submission of a responsive bid. Generic business solicitation is outside that scope.
From funding year 2028 (the portal opens around July 2027 under FCC 26-30, WC Docket 21-455), all bid-related communication between a provider and an applicant must run inside USAC's competitive bidding portal. To match that rule, this actor withholds the contactName, contactEmail, and contactPhone fields for any filing in funding year 2028 or later and stamps a complianceNote in their place. The 470 still delivers as bid intelligence; only the direct contact fields are held back.
FAQ, limitations, and support
- Is this data legal to use? Form 470 and Form 471 filings are public records published by USAC. This actor reads USAC's own open-data feed.
- How fresh is the data? USAC refreshes the feed on business days, so nothing new lands on weekends or federal holidays: a 4-day gap was measured across the July 4 weekend.
- What is the delay between a 470 posting and my alert? USAC's own publishing lag ran about 2 to 4.5 days during testing, so the default 7-day lookback catches new 470s on a daily schedule.
- Which states are covered? Any of the 50 states, DC, and the E-rate territories, up to 15 per filter.
- Are the RFP documents themselves included? The links are, when the applicant attached them. The actor returns the URLs USAC publishes, not the document contents.
- How reliable is the webhook? It is best-effort alerting with retries. The dataset is the durable record. If you need to verify the caller, put a secret token in your webhook URL.
- What happens if the feed changes shape? The actor checks the feed's structure on every run and stops without charging if a field it depends on is missing, rather than delivering broken rows.
For issues or a custom variant, use the Issues tab on the actor page.