🇸🇬 Singapore GeBIZ Tender & Award Change Watch avatar

🇸🇬 Singapore GeBIZ Tender & Award Change Watch

Pricing

from $33.50 / 1,000 tender/award deltas

Go to Apify Store
🇸🇬 Singapore GeBIZ Tender & Award Change Watch

🇸🇬 Singapore GeBIZ Tender & Award Change Watch

Monitor public Singapore GeBIZ listings and get structured, seed-zero deltas when tenders open, change, close, are cancelled, or publish an award state. Before/after snapshots, changed-field lists, grace-windowed closures, and a source receipt on every run.

Pricing

from $33.50 / 1,000 tender/award deltas

Rating

0.0

(0)

Developer

NexGen Watch

NexGen Watch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

GeBIZ shows you today's listing, not what changed. This is a seed-zero change feed: when a Singapore government tender opens, changes, closes, is cancelled, or reaches an award state, you get a structured delta with before/after — not another full scrape to diff yourself.

What you get

  • tender_deltaNEW, CHANGED, CLOSED, PENDING_AWARD, AWARDED, CANCELLED, NO_AWARD, REAPPEARED, each with before/after and changed_fields
  • tender_record — a normalized listing snapshot: document and reference number, type, status, title, agency, category, published/closes dates, source_hash
  • A closure grace window (closureGraceRuns) so a listing that briefly drops out is not reported as closed
  • missing_complete_runs on each delta, so you can see the evidence behind a closure call
  • source_receipt every run — terminal state, canary result, page/request counters, never billed

Use cases by team

  • Suppliers & bid teams: Route matching opportunities to bid owners the run they appear, and get told when one changes under you.
  • Procurement & compliance teams: Retain dated public status records with before/after evidence of each change.
  • Award & incumbency analysts: Catch the PENDING_AWARDAWARDED transition rather than polling for it.
  • Researchers: Study public agency and category behaviour over time from a deterministic, bounded feed.

Example inputs

Seed a watch on two agencies

{
"watchMode": true,
"baselineKey": "sg-infocomm",
"agencies": [
"Government Technology Agency"
],
"publishedWithinDays": 30
}

Award-state changes only

{
"watchMode": true,
"baselineKey": "sg-awards",
"emitDeltaTypes": [
"PENDING_AWARD",
"AWARDED",
"NO_AWARD"
]
}

Keyword + type targeting

{
"watchMode": true,
"baselineKey": "sg-cloud",
"keywords": [
"cloud"
],
"opportunityTypes": [
"Tender",
"Quotation"
],
"maxItems": 200
}

📊 Sample Output

{
"record_type": "tender_delta",
"delta_type": "AWARDED",
"document_number": "GT2026000123W",
"reference_number": "GTA/2026/CLOUD/07",
"opportunity_type": "Tender",
"status": "AWARDED",
"title": "Provision of cloud hosting services",
"agency": "Government Technology Agency",
"procurement_category": "Infocomm Technology",
"changed_fields": [
"status"
],
"before": {
"status": "PENDING_AWARD"
},
"after": {
"status": "AWARDED"
},
"missing_complete_runs": 0,
"published_at": "2026-06-18",
"closes_at": "2026-07-16",
"source_url": "https://www.gebiz.gov.sg/ptn/opportunity/BOListing.xhtml",
"observed_at": "2026-07-25T00:00:00Z"
}

How it works

Configure agencies, categories, opportunity types, states and keywords. It reads only the public, logged-out GeBIZ business-opportunity listing, normalizes each listing into a tender_record with a source_hash, and diffs against a private baseline. The first watch run stores the baseline and emits no alerts; later runs emit only qualified tender_delta events with before/after snapshots and changed_fields. Closure is grace-windowed over closureGraceRuns, so a transient disappearance does not fire a false CLOSED. Snapshot mode exists, but the product is the recurring change feed.

Pricing

EventPrice (FREE tier)
Actor start (apify-actor-start)$0.02 flat, once per run
Tender/award delta (tender_delta) — primary$0.05
Tender record snapshot (tender_record)$0.10
Source check (source_check)$0.10, once per run

Pay-per-event on a four-tier ladder (FREE → GOLD, with Platinum/Diamond floored at the Gold rate). Primary event tender_delta: $0.05 / $0.045 / $0.04 / $0.0335. tender_record and source_check: $0.10 / $0.09 / $0.08 / $0.067. Worked example — a watch run on FREE with 8 qualified deltas: $0.02 start + $0.10 source check + 8 × $0.05 = $0.52. The seeding run and genuine-zero runs charge the start + source check only; receipts are never billed. New to Apify? Start free.

Run it — API, CLI, MCP

API:

curl -X POST "https://api.apify.com/v2/acts/nexgenwatch~gebiz-tender-watch/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" -d @input.json

CLI:

$apify call nexgenwatch/gebiz-tender-watch -i @input.json

MCP: expose nexgenwatch/gebiz-tender-watch through Apify's MCP server, select it as a tool, and pass the same input object.

ActorWhat it does
EU TED Tender & Award WatchWatch EU-wide public procurement: tenders, awards, incumbent changes.
UK Find a Tender WatchWatch UK tenders, award results and incumbent changes.
CanadaBuys Tender WatchWatch Government of Canada tender opportunities and awards.
AusTender Award WatchWatch Australian federal contract awards and incumbents.
MAS Directory Change WatchWatch Singapore MAS financial-institution licence changes.

Compliance & honest limits

  • Public, logged-out GeBIZ listing only — no login, CAPTCHA, paywall, or access-control defeating.
  • The first watch run seeds a baseline and emits zero deltas by design.
  • Detail-page enrichment is off by default (includePublicDetail, maxDetailRequests: 0) to keep runs bounded and polite.
  • A closure is reported only after closureGraceRuns consecutive complete runs without the listing — deliberately conservative.
  • A source-confirmed empty listing is GENUINE_EMPTY; truncated runs are PARTIAL; exhausted retries are BLOCKED. Receipts are never billed.

FAQ

What does seed-zero mean?

The first watch run stores a private baseline and emits no alerts at all. Deltas start on the second run. This is why you are not billed a flood of false 'new' events on day one.

Which changes can I subscribe to?

Set emitDeltaTypes to any subset of NEW, CHANGED, CLOSED, PENDING_AWARD, AWARDED, CANCELLED, NO_AWARD, REAPPEARED.

How do you avoid false closures?

A listing must be absent for closureGraceRuns consecutive complete runs before CLOSED fires, and each delta carries missing_complete_runs so you can audit the call.

Does zero mean blocked?

No. Every run emits a source_receipt with an explicit terminal state — NORMAL, GENUINE_EMPTY, PARTIAL or BLOCKED — plus a canary result and page counters.

What is REAPPEARED for?

A listing that dropped out and came back. It is emitted explicitly rather than being silently re-reported as NEW.

What am I charged on a quiet run?

The $0.02 start plus the $0.10 source check. Deltas are the primary unit, so quiet weeks are cheap.

Can I get full snapshots instead of deltas?

Yes — snapshot mode returns tender_record rows, billed at $0.10 each. Most buyers want the delta feed.

Troubleshooting

  • First run emitted nothing? That is seed-zero behaviour. Re-run with the same baselineKey and deltas begin.
  • Everything came back as NEW? You changed baselineKey, or set resetBaseline-equivalent behaviour, so the baseline was re-seeded.
  • Missing an agency's listings? Check agencies spelling against the public listing, and confirm publishedWithinDays is wide enough.
  • Run marked PARTIAL? You hit maxItems or maxPages. Raise them or narrow states/opportunityTypes.
  • Closures arriving late? By design — lower closureGraceRuns if you want faster, less certain closure calls.

About

Part of the NexGenData procurement-watch family — one honest, deterministic contract across UK, EU, Canadian, Australian and Singaporean public procurement. Built by NexGenData. Questions or need a custom feed? Open an issue on the Actor page.