Government Tender Monitor API | SAM.gov + TED avatar

Government Tender Monitor API | SAM.gov + TED

Pricing

from $0.10 / 1,000 results

Go to Apify Store
Government Tender Monitor API | SAM.gov + TED

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

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

3 days ago

Last modified

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 to jurisdictions=eu so the first Store run does not depend on a SAM.gov API key.
  • If the output fits, switch to store-input.templates.json and pick one of:
  • Quickstart (EU Tenders) for the easiest first success
  • US Federal Focus when you want SAM.gov-heavy coverage
  • Webhook Alert when 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,eu
  • keywords: cybersecurity, cloud migration, zero trust
  • minValue: 100000
  • daysAhead: 30
  • delivery: dataset

Store first-run (success-priority, no SAM key):

  • Use store-input.example.json
  • Default is jurisdictions=eu to avoid SAM key dependency on first run

Local Run

  1. Set secrets in .env:
cd /volume1/docker/Apify/procurement-intel-actor
cp -n .env.example .env
# then edit .env and paste your real keys
  1. Run:
cd /volume1/docker/Apify/procurement-intel-actor
cp -n input.example.json input.json
./scripts/run-with-env.sh
cat 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-actor
npm run store:optimize

Generate KPI report (7-day runs + search rank probes):

cd /volume1/docker/Apify/procurement-intel-actor
npm run store:kpi

Input

Use input.json or APIFY_INPUT_PATH.

Important fields:

  • jurisdictions: ["us","eu"]
  • keywords: string list
  • cpvCodes, naicsCodes
  • minValue
  • daysAhead
  • delivery: dataset|webhook|email
  • webhookUrl when delivery=webhook
  • samFixturePath, tedFixturePath for offline verification

Detailed schema: INPUT_SCHEMA.json Output schema: OUTPUT_SCHEMA.json

Output Schema (notice)

Each record contains:

  • source (sam|ted)
  • noticeId
  • title
  • buyer
  • country
  • publishedAt
  • deadlineAt
  • estimatedValue
  • currency
  • tags
  • relevanceScore (0-100)
  • riskFlags
  • url
  • dedupeHash

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-actor
set -a && source .env && set +a
CANARY_MIN_SAM_COUNT=1 \
CANARY_ESCALATE_AFTER=2 \
npm run canary:check

Optional env for canary:

  • DISCORD_WEBHOOK_URL: post failure/recovery notifications
  • CANARY_RUN_TASK_FIRST=true: trigger one task run before checking
  • CANARY_MIN_SAM_COUNT (default 1)
  • CANARY_MIN_TOTAL_COUNT (default 1)
  • CANARY_MAX_ERRORS (default 0)
  • CANARY_MAX_ERRORS_WHEN_SAM_THROTTLED (default 1)
  • CANARY_MAX_WARNINGS (default disabled)
  • CANARY_MIN_TED_COUNT_WHEN_SAM_THROTTLED (default 1)
  • CANARY_ALLOW_SAM_THROTTLE (default true) -> degrade to TED-only while SAM is 429
  • CANARY_ESCALATE_AFTER (default 2)
  • CANARY_STATE_STORE_NAME (default procurement-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-actor
set -a && source .env && set +a
npm run contract:test:live

Optional env for contract test:

  • DISCORD_WEBHOOK_URL: notify on test failure
  • CONTRACT_NOTIFY_ON_PASS=true: send pass notification too
  • CONTRACT_NOTIFY_ON_DEGRADED=true: notify when degraded pass is used
  • CONTRACT_DAYS_BACK (default 14)
  • CONTRACT_SAM_LIMIT (default 5)
  • CONTRACT_TED_LIMIT (default 5)
  • CONTRACT_ALLOW_SAM_THROTTLE (default true) -> 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_TOKEN
  • APIFY_ACTOR_ID
  • APIFY_TASK_ID
  • APIFY_SCHEDULE_ID

One-time setup / idempotent update:

cd /volume1/docker/Apify/procurement-intel-actor
set -a && source .env && set +a
npm 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-actor
set -a && source .env && set +a
NEXT_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-actor
set -a && source .env && set +a
SEED_RUNS=2 npm run apify:seed-usage

Notes

  • SAM often requires an API key; set samApiKey or SAM_API_KEY.
  • If SAM key is missing, the actor skips US source and reports a warning instead of hard-failing.
  • delivery=dataset pushes notices to Apify default dataset when APIFY_DEFAULT_DATASET_ID and APIFY_TOKEN are 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 rerun npm 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.