Government Tender Monitor API | SAM.gov + TED
Pricing
from $0.10 / 1,000 results
Government Tender Monitor API | SAM.gov + TED
Track and score public tenders from SAM.gov and TED with normalized output, dedupe, and daily alert-ready dataset delivery.
Pricing
from $0.10 / 1,000 results
Rating
0.0
(0)
Developer

太郎 山田
Actor stats
0
Bookmarked
5
Total users
3
Monthly active users
3 days ago
Last modified
Categories
Share
Government Tender Monitor API (SAM.gov + TED)
Track, score, and deduplicate public tenders from US SAM.gov and EU TED. Built for agencies, B2B sales teams, bid managers, and procurement intelligence workflows.
Store Quickstart
- Start with
store-input.example.json. It is intentionally tuned tojurisdictions=euso the first Store run does not depend on a SAM.gov API key. - If the output fits, switch to
store-input.templates.jsonand pick one of: Quickstart (EU Tenders)for the easiest first successUS Federal Focuswhen you want SAM.gov-heavy coverageWebhook Alertwhen the dataset should feed a CRM or notifier
The fastest path to value is: first successful EU run, then add us and tighter NAICS filters once you know the normalized output is useful.
What this Actor does:
- Source connectors:
SAM.gov+TED - SAM fallback: if strict SAM filters return zero, actor retries once with relaxed SAM query
- Normalized output schema
- Deduplication via
hash(source + noticeId + deadlineAt) - Relevance scoring and risk flags
- Delivery modes:
dataset(default),webhook(implemented),email(placeholder) - Retry with exponential backoff for transient HTTP failures
Use cases:
- Daily government RFP watchlist
- Cybersecurity / cloud tender pipeline generation
- Public sector lead monitoring
- Regional tender scouting across US + EU
Recommended first run:
jurisdictions:us,eukeywords:cybersecurity, cloud migration, zero trustminValue:100000daysAhead:30delivery:dataset
Store first-run (success-priority, no SAM key):
- Use
store-input.example.json - Default is
jurisdictions=euto avoid SAM key dependency on first run
Local Run
- Set secrets in
.env:
cd /volume1/docker/Apify/procurement-intel-actorcp -n .env.example .env# then edit .env and paste your real keys
- Run:
cd /volume1/docker/Apify/procurement-intel-actorcp -n input.example.json input.json./scripts/run-with-env.shcat output/results.json
The provided input.example.json is configured for a live cloud run by default.
store-input.example.json is tuned for Apify Store first-run conversion.
Store Listing Ops
Update Store metadata (title/description/categories/example input):
cd /volume1/docker/Apify/procurement-intel-actornpm run store:optimize
Generate KPI report (7-day runs + search rank probes):
cd /volume1/docker/Apify/procurement-intel-actornpm run store:kpi
Input
Use input.json or APIFY_INPUT_PATH.
Important fields:
jurisdictions:["us","eu"]keywords: string listcpvCodes,naicsCodesminValuedaysAheaddelivery:dataset|webhook|emailwebhookUrlwhendelivery=webhooksamFixturePath,tedFixturePathfor offline verification
Detailed schema: INPUT_SCHEMA.json
Output schema: OUTPUT_SCHEMA.json
Output Schema (notice)
Each record contains:
source(sam|ted)noticeIdtitlebuyercountrypublishedAtdeadlineAtestimatedValuecurrencytagsrelevanceScore(0-100)riskFlagsurldedupeHash
Keywords
SAM.gov API, TED tenders API, government tenders, public procurement, RFP monitor, bid intelligence, tender alerts, procurement pipeline.
Tests
$npm test
Live TED smoke test:
$npm run smoke:live
Reliability Guardrails
Daily canary check (SAM >= 1 required, with consecutive-failure escalation state):
cd /volume1/docker/Apify/procurement-intel-actorset -a && source .env && set +aCANARY_MIN_SAM_COUNT=1 \CANARY_ESCALATE_AFTER=2 \npm run canary:check
Optional env for canary:
DISCORD_WEBHOOK_URL: post failure/recovery notificationsCANARY_RUN_TASK_FIRST=true: trigger one task run before checkingCANARY_MIN_SAM_COUNT(default1)CANARY_MIN_TOTAL_COUNT(default1)CANARY_MAX_ERRORS(default0)CANARY_MAX_ERRORS_WHEN_SAM_THROTTLED(default1)CANARY_MAX_WARNINGS(default disabled)CANARY_MIN_TED_COUNT_WHEN_SAM_THROTTLED(default1)CANARY_ALLOW_SAM_THROTTLE(defaulttrue) -> degrade to TED-only while SAM is 429CANARY_ESCALATE_AFTER(default2)CANARY_STATE_STORE_NAME(defaultprocurement-intel-canary-state)
When SAM throttle text is missing from actor logs, canary performs a lightweight SAM probe to confirm 429 before switching to degraded mode.
Weekly live contract test (SAM/TED response shape verification):
cd /volume1/docker/Apify/procurement-intel-actorset -a && source .env && set +anpm run contract:test:live
Optional env for contract test:
DISCORD_WEBHOOK_URL: notify on test failureCONTRACT_NOTIFY_ON_PASS=true: send pass notification tooCONTRACT_NOTIFY_ON_DEGRADED=true: notify when degraded pass is usedCONTRACT_DAYS_BACK(default14)CONTRACT_SAM_LIMIT(default5)CONTRACT_TED_LIMIT(default5)CONTRACT_ALLOW_SAM_THROTTLE(defaulttrue) -> treat SAM 429 as degraded pass if TED is healthy
Recovery strict check (use after throttle window):
cd /volume1/docker/Apify/procurement-intel-actor./scripts/run-recovery-strict-with-env.sh
OpenClaw Cron Example
Once the actor is deployed, you can schedule from OpenClaw by invoking the Apify run API.
/volume1/docker/Apify/procurement-intel-actor/openclaw-cron-example.sh
This script auto-loads .env in the same directory.
Apify Cloud Scheduler
If you run fully on Apify cloud (recommended for home PC outages), use Apify Task + Schedule.
Required env keys in .env:
APIFY_TOKENAPIFY_ACTOR_IDAPIFY_TASK_IDAPIFY_SCHEDULE_ID
One-time setup / idempotent update:
cd /volume1/docker/Apify/procurement-intel-actorset -a && source .env && set +anpm run apify:cloud:setup
Manual run from task:
$curl -sS -X POST "https://api.apify.com/v2/actor-tasks/${APIFY_TASK_ID}/runs?token=${APIFY_TOKEN}"
Check schedule:
$curl -sS "https://api.apify.com/v2/schedules/${APIFY_SCHEDULE_ID}?token=${APIFY_TOKEN}"
Disable / enable schedule:
curl -sS -X PUT "https://api.apify.com/v2/schedules/${APIFY_SCHEDULE_ID}?token=${APIFY_TOKEN}" \-H "content-type: application/json" \-d '{"isEnabled":false}'curl -sS -X PUT "https://api.apify.com/v2/schedules/${APIFY_SCHEDULE_ID}?token=${APIFY_TOKEN}" \-H "content-type: application/json" \-d '{"isEnabled":true}'
Pricing Playbook (PPE)
Recommended staged pricing for apify-default-dataset-item:
- Stage 1 (now):
$0.0001 - Stage 2 (after 7 days without churn):
$0.0002 - Stage 3 (after another 7 days):
$0.0003
apify-actor-start can stay at $0.00005 initially.
Apify enforces a pricing change cooldown (typically 1 month). To schedule the next change:
cd /volume1/docker/Apify/procurement-intel-actorset -a && source .env && set +aNEXT_RESULT_PRICE=0.0002 npm run apify:schedule-price
Seed Early Usage
Create a few successful runs to build initial run history:
cd /volume1/docker/Apify/procurement-intel-actorset -a && source .env && set +aSEED_RUNS=2 npm run apify:seed-usage
Notes
- SAM often requires an API key; set
samApiKeyorSAM_API_KEY. - If SAM key is missing, the actor skips US source and reports a warning instead of hard-failing.
delivery=datasetpushes notices to Apify default dataset whenAPIFY_DEFAULT_DATASET_IDandAPIFY_TOKENare present (Apify cloud run). Without them, it keeps local JSON output only.- If publish is blocked with
public profile, enable your Apify public profile once and rerunnpm run apify:cloud:setup. - TED expert query requires explicit fields and query syntax. This actor sends safe defaults.
- For production monetization, add strong schema validation and source-specific contract tests.
- If this Actor saved time for you, please leave a Store review. Early reviews significantly improve discovery in Apify search.