RFP & Tender Fit Monitor — Bid/No-Bid Scoring & Alerts
Monitor new TED, UK Find a Tender, and SAM.gov notices and get a ranked bid/no-bid fit score per tender, with deadlines, eligibility flags, and required docs.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
sources,keywords,cpvCodes(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.03 per fit scored basic = $30 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Fit scored basic | Fit scored basic | $0.03 |
| Digest generated | Digest is generated | $0.25 |
| Fit scored AI | Fit scored AI | $0.08 |
| Source checked | The source was checked | $0.01 |
| Tender found | A tender was found | $0.003 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.01 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-09, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
sources | Which official procurement feeds to check. Valid values: TED (EU), UK_FTS (UK Find a Tender), SAM_GOV (US). TED and UK_FTS are keyless; SAM_GOV needs a free SAM.gov API key in 'samApiKey' — if omitted, that source is skipped with a clear message. Unknown values are ignored. | array |
keywords | Free-text terms describing the work you do (matched against notice title/description). Used to filter TED/UK and to inform fit scoring. | array |
cpvCodes | Common Procurement Vocabulary codes to match (e.g. 72000000 = IT services). Filters TED server-side and UK client-side. Leave empty to rely on keywords. | array |
naicsCodes | North American Industry Classification codes for SAM.gov (e.g. 541512 = Computer Systems Design). One query per code (max 3 used) to respect SAM.gov rate limits. | array |
vendorProfile | Your firm's profile — this is what each tender is scored AGAINST. capabilities/certifications are arrays of strings; eligibleRegions is country codes (e.g. GB, US, PL) or empty for no region restriction; min/maxContractValue are numbers or null; smallBusiness is true/false. | object |
generateFitScore | Run the bid/no-bid fit engine on each new tender. This is the product — leave on. | boolean |
useLlm | If on AND an Anthropic API key is configured (ANTHROPIC_API_KEY env var), enrich fit scoring with an LLM for messier notice text. Off = fast, free, deterministic rules engine. Only NEW/CHANGED tenders are ever scored. | boolean |
llmModel | Cheapest capable model is the default. Only NEW tenders are scored, so cost stays well under the per-score charge. | string |
onlyNewSinceLastRun | Emit only tenders that are new or changed versus the previous scheduled run (deltas, not dumps). Turn off to re-emit the full current window every run. | boolean |
lookbackDays | How far back to fetch each run. The state store dedupes, so a generous window safely catches late-indexed notices. | integer |
maxResultsPerSource | Cap on notices fetched per source per run. Set this comfortably above the number of notices your keyword/CPV filter typically yields in the look-back window, so the full window is captured each run. A cap far below the window's volume can surface a different subset run-to-run (TED has no stable tiebreaker among same-day notices) — fine for niche filters, but raise it for very broad ones. | integer |
weeklyDigest | Write a fit-ranked HTML + Markdown digest to the Key-Value Store (keys DIGEST.html / DIGEST.md) — the artifact a bid team reads. | boolean |
webhookUrl | If set, POST a compact JSON run summary here when the run finishes (e.g. a webhook.site URL, Slack/Make/Zapier inbound hook). | string |
samApiKey | Free public API key from a personal SAM.gov account (Account Details -> Public API Key). Required only if SAM_GOV is in 'sources'. Stored as a secret. | string |
fetchSamDescriptions | SAM.gov descriptions require a second API call each and a personal key allows only ~10 calls/day. Leave OFF unless you have a higher-quota key. | boolean |
stateStoreName | Named Key-Value Store that holds the monitor's per-source snapshot across scheduled runs (this is what makes onlyNewSinceLastRun work). Leave as default unless you run several independent monitors and want isolated state. | string |
What you get
A structured dataset — each result includes fields like:
buyerclassificationcountrydeadlinefitidis_changedis_newpublishedrequirements_textsourcesummarytitleurlfit.fit_scorefit.bid_recommendation.decisionvalue.amountExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
4 ready-to-run use cases
TED EU IT Tender Alerts with Bid Fit Scoring
New EU IT and cybersecurity tenders on TED, filtered by CPV 72000000 and scored against your firm so you see which are worth bidding.
SAM.gov Federal Bid Monitor by NAICS Code
Government contractors get new US federal solicitations from SAM.gov matched on NAICS 541512, each with a go/no-go fit score. Free SAM key needed.
UK Consultancy Tender Scoring, Read by LLM
Vague scope on a UK consultancy notice? An LLM reads each tender and returns a bid/no-bid call, so unclear requirements still get a clear verdict.
EU & UK Marketing Agency Tender Monitor
Public-sector marketing, advertising and digital comms tenders from TED and Find a Tender, ranked by fit so your agency chases the right RFPs.
Related tools in Monitors & Alerts
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Structured Product Price & Stock Monitor — JSON-LD / Shopify
Track product price and stock from a store's own JSON-LD/Shopify data. Get price-drop and restock events plus Slack/Discord alerts. No API key.
Google Reviews Monitor — Multi-Location Alerts & Reports
Track Google Maps reviews across all your locations. Get only-new deltas, negative-review and rating-drop alerts to Slack, plus AI summaries and reply drafts.
YouTube Channel Monitor — New Upload Tracker
Watch any YouTube channels and get only their new uploads as structured data — title, URL, views, duration, Shorts flag. Works as an upload trigger.
App Review Triage Monitor — App Store & Google Play Alerts
Auto-triage new App Store and Google Play reviews into bugs, billing, and feature requests. Cluster themes, catch rating drops, alert Slack. No code.
SaaS Competitor Monitor: Pricing, Changelog & Positioning
Track competitor SaaS pricing, changelogs, and positioning changes on a schedule. Get structured deltas and Slack alerts for only what changed.
Where this tool sits
- Categories
- Monitors & Alerts
RFP & Tender Fit Monitor — Bid/No-Bid Scoring & Alerts
**Watch official government procurement feeds and get a bid/no-bid fit score for every new tender — scored against *your* firm. The monitor checks TED (EU), UK Find a Tender and SAM.gov (US), finds notices that match your keywords / CPV / NAICS codes, then runs a fit engine that returns a go/no-go call, the fit score, eligibility flags, deadline risk and the required docs per notice. Out comes a fit-ranked shortlist your bid team can actually act on — plus an HTML/Markdown digest and optional webhook alert. TED and UK are fully keyless.**
> Paste your keywords and your capability profile, schedule it, and let new tenders come to you already triaged.
Why this monitor wins
- 🔓 Keyless where it counts — TED and UK Find a Tender run with no credentials at all. SAM.gov needs only a free personal API key (skipped cleanly if you leave it out).
- 🎯 Scored against your firm, not generic — every tender is graded versus *your* capabilities, certifications, eligible regions, contract-value band and small-business status. The output is a decision, not a dump.
- 🧮 Deterministic by default, LLM when you want it — a fast, free rules engine scores fit out of the box; flip on optional Anthropic LLM enrichment for messier notice text.
- 🔁 Deltas, not re-dumps — a state store dedupes across scheduled runs, so you see only new/changed notices and only pay to score each tender once.
- 📊 A ranked artifact, not a spreadsheet chore — a fit-ranked HTML + Markdown digest is written to the Key-Value Store (
DIGEST.html/DIGEST.md) for the bid team to read. - 📬 Push alerts — optional webhook fires a compact JSON run summary to Slack/Make/Zapier/webhook.site when a run finishes.
What it monitors
| Source | Code | Auth | Coverage |
|---|---|---|---|
| TED (EU Tenders Electronic Daily) | TED | ✅ Keyless | EU-wide notices, CPV + keyword filtered server-side |
| UK Find a Tender | UK_FTS | ✅ Keyless | UK notices, keyword + CPV filtered |
| SAM.gov | SAM_GOV | 🔑 Free SAM.gov key | US federal opportunities, NAICS filtered |
Input
sources— feeds to check:TED,UK_FTS,SAM_GOV(default["TED","UK_FTS"]).keywords— terms describing the work you do; filters TED/UK and informs scoring.cpvCodes— Common Procurement Vocabulary codes for EU/UK (e.g.72000000= IT services).naicsCodes— NAICS codes for SAM.gov (e.g.541512); one query per code, max 3.vendorProfile— your firm:capabilities,certifications,eligibleRegions,minContractValue/maxContractValue,smallBusiness. This is the baseline every tender is scored against.generateFitScore— run the bid/no-bid fit engine (default on — this is the product).useLlm/llmModel— optional Anthropic LLM enrichment (claude-haiku-4-5default) whenANTHROPIC_API_KEYis set.onlyNewSinceLastRun— emit only deltas vs the previous run (default on).lookbackDays— fetch window per run, 1–365 (default 7).maxResultsPerSource— cap notices fetched per source per run (default 100).weeklyDigest— write the fit-ranked HTML/Markdown digest (default on).webhookUrl— optional URL to POST a run summary to.samApiKey— free SAM.gov public API key (secret); required only forSAM_GOV.fetchSamDescriptions— pull SAM.gov descriptions (extra API call; off by default).stateStoreName— named Key-Value Store for the cross-run snapshot.
Output (one record per new/changed tender)
{
"id": "ted:2026-OJS-123456",
"source": "TED",
"title": "Managed IT services and cloud migration",
"buyer": "Ministry of Digital Affairs",
"country": "PL",
"url": "https://ted.europa.eu/udl?uri=TED:NOTICE:123456-2026",
"deadline": "2026-08-15T17:00:00Z",
"value": { "amount": 2400000, "currency": "EUR" },
"cpvCodes": ["72000000"],
"is_new": true,
"is_changed": false,
"fit": {
"fit_score": 82,
"bid_recommendation": { "decision": "BID", "confidence": "high" },
"eligibility_flags": ["region_eligible", "value_in_range"],
"matched_capabilities": ["managed IT", "cloud migration"],
"deadline_risk": "comfortable",
"required_docs": ["ISO 27001 certificate", "financial statements", "references"]
}
}
Pricing
Pay-per-event. $0.03 per tender fit-scored is the main charge — everything else is small and tied to work actually done:
| Event | Price | When it fires |
|---|---|---|
| Actor start | $0.01 | Once per run. |
| Source checked | $0.01 | Once per procurement feed successfully queried (TED, UK Find a Tender, SAM.gov). |
| New tender found | $0.003 | Per newly discovered notice added to the dataset. |
| Tender fit-scored | $0.03 | Per new or changed notice run through the deterministic bid/no-bid engine. |
| Tender fit-scored with AI | $0.08 | Only on the optional LLM-enrichment path (useLlm). |
| Ranked digest generated | $0.25 | Once per run, only when weeklyDigest is on. |
Tenders are scored once. The cross-run state store means an existing notice is never re-scored or re-charged, so a daily schedule costs you only for what is genuinely new.
Worked example: a daily run over the two keyless sources that turns up 12 new tenders, scored deterministically, with the digest on — $0.01 start + $0.02 sources + $0.036 tenders + $0.36 fit scoring + $0.25 digest = $0.676. Turn weeklyDigest off on daily runs and the same run is $0.426. A quiet day with no new notices costs $0.03.
FAQ
Do I need any API keys? No for TED and UK Find a Tender. SAM.gov needs a free personal public API key, set in samApiKey; omit it and SAM is skipped with a clear message.
How is the fit score calculated? A deterministic rules engine compares each notice to your vendorProfile — capabilities, certifications, eligible regions, contract-value band and small-business status — producing a 0–100 fit score and a BID / NO-BID / REVIEW call. Optional LLM enrichment helps on messier text.
Will it re-send the same tenders every run? No. A named state store dedupes across scheduled runs, so with onlyNewSinceLastRun on you receive only new or changed notices.
Where's the digest? In the run's Key-Value Store as DIGEST.html and DIGEST.md, fit-ranked for the bid team.
Best way to run it? Schedule it (e.g. daily) with a generous lookbackDays; the dedupe store keeps results clean and costs tied to genuinely new tenders.