New to Claude Skills? Learn how to install them →

tinyfish-io on GitHub

Singapore Government Tender Finder

Free

Find open government tenders in Singapore in real time.

Get this skill

Free · Opens the source repo

What Singapore Government Tender Finder does

The Singapore Government Tender Finder skill enables users to efficiently search for open government tenders across various sectors in Singapore. By leveraging parallel scraping capabilities through TinyFish agents, this skill retrieves tender information from multiple government portals simultaneously. This is particularly useful for businesses and contractors looking to identify procurement opportunities in sectors such as IT, construction, healthcare, consulting, logistics, and education. With this skill, users can quickly access relevant tender listings without manually navigating through different websites.

To use the skill, users simply specify a sector, and the skill will automatically gather data from several key tender portals including GeBIZ, Tenders On Time, Bid Detail, Tenders Info, and Global Tenders. Each agent is designed to extract essential details about the tenders, such as the tender title, ID, issuing authority, publication date, submission deadline, and more, ensuring that only open tenders with upcoming deadlines are returned. This real-time scraping capability significantly reduces the time and effort required to monitor tender opportunities.

The skill is particularly beneficial for contractors and businesses that need to stay competitive by being aware of new government contracts as they become available. By automating the tender search process, users can focus on preparing their bids rather than spending hours searching for opportunities. The skill's ability to filter tenders based on sector ensures that users receive only the most relevant information for their specific needs.

Overall, the Singapore Government Tender Finder skill is an invaluable tool for anyone involved in government procurement in Singapore, streamlining the process of finding and responding to open tenders.

When to use it

Use this skill when you need to find current government tenders in Singapore for specific sectors.

When not to use it

This skill may not be suitable for users looking for tenders outside of Singapore or those needing historical tender data.

What you can build with it

Finding IT Tenders

A software development company uses the skill to find open government tenders in the IT sector, allowing them to identify new projects quickly.

Construction Opportunities

A construction firm leverages the skill to discover upcoming tenders for public works, ensuring they don’t miss any potential contracts.

Healthcare Procurement

A healthcare consultancy utilizes the skill to monitor government tenders related to healthcare services, streamlining their bidding process.

How to install Singapore Government Tender Finder

View source

1. Install with the skills CLI

npx skills add tinyfish-io/tinyfish-cookbook/tenders-finder --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by tinyfish-io

Singapore Government Tender Finder

Given a sector, scrape live Singapore government tender portals in parallel using TinyFish agents — returning only open tenders with upcoming submission deadlines.

Pre-flight check

tinyfish --version
tinyfish auth status

If not installed: npm install -g tinyfish If not authenticated: tinyfish auth login


Step 1 — Clarify inputs

You need:

  • Sector — one of: IT / Software, Construction, Healthcare, Consulting, Logistics, Education

If not specified, ask before proceeding. If the user gives a related term (e.g. "tech", "software"), map it to the closest sector.

Get today's date — you will use it to filter out tenders whose deadline has already passed.


Step 2 — Parallel scraping

Fire all 5 agents simultaneously against the fixed portal list used by the app.

TODAY=$(date '+%A, %B %d, %Y')

# Agent 1 — GeBIZ (official Singapore government portal)
tinyfish agent run \
  --url "https://www.gebiz.gov.sg/" \
  "You are on GeBIZ, Singapore's official government procurement portal. Today is ${TODAY}.
   TASK: Extract open government tenders for the sector: {SECTOR}.
   Scroll through the page to find tender listings.
   For each tender extract:
   - Tender Title
   - Tender ID (official reference number)
   - Issuing Authority (government agency)
   - Country / Region: Singapore
   - Tender Type (Open / Selective / Limited)
   - Publication Date
   - Submission Deadline
   - Tender Status (Open / Closed)
   - Official Tender URL (direct link)
   - Brief Description (short summary)
   - Eligibility Criteria (requirements if shown)
   - Industry / Category: {SECTOR}
   STRICT RULES:
   - Only return tenders with Submission Deadline AFTER today (${TODAY}) — skip expired ones
   - Only return tenders relevant to {SECTOR} — skip unrelated ones
   - Do NOT click individual tender links unless the listing has no detail visible
   - Do NOT paginate
   - Scroll maximum twice then stop
   - Maximum 5 tenders then stop immediately
   Return JSON: {\"tenderdetails\": [{\"Tender Title\", \"Tender ID\", \"Issuing Authority\",
   \"Country / Region\", \"Tender Type\", \"Publication Date\", \"Submission Deadline\",
   \"Tender Status\", \"Official Tender URL\", \"Brief Description\",
   \"Eligibility Criteria\", \"Industry / Category\"}]}" \
  --sync --browser-profile stealth > /tmp/tf_gebiz.json &

# Agent 2 — Tenders On Time
tinyfish agent run \
  --url "https://www.tendersontime.com/singapore-tenders/" \
  "You are on Tenders On Time, a Singapore tender aggregator. Today is ${TODAY}.
   TASK: Extract open tenders for the sector: {SECTOR}.
   Read the visible tender listings on this page.
   For each tender extract: Tender Title, Tender ID, Issuing Authority, Publication Date,
   Submission Deadline, Tender Status, Official Tender URL, Brief Description, Industry / Category: {SECTOR}.
   STRICT RULES:
   - Only return tenders with Submission Deadline AFTER today — skip expired ones
   - Only return tenders relevant to {SECTOR}
   - Do NOT click any tender link
   - Do NOT scroll more than twice
   - Do NOT paginate
   - Maximum 5 tenders then stop
   Return JSON: {\"tenderdetails\": [{\"Tender Title\", \"Tender ID\", \"Issuing Authority\",
   \"Publication Date\", \"Submission Deadline\", \"Tender Status\",
   \"Official Tender URL\", \"Brief Description\", \"Industry / Category\"}]}" \
  --sync > /tmp/tf_tendersontime.json &

# Agent 3 — Bid Detail
tinyfish agent run \
  --url "https://www.biddetail.com/singapore-tenders" \
  "You are on Bid Detail, a tender listing site. Today is ${TODAY}.
   TASK: Extract open Singapore tenders for the sector: {SECTOR}.
   Read the visible tender listings on this page.
   For each tender extract: Tender Title, Tender ID, Issuing Authority, Publication Date,
   Submission Deadline, Tender Status, Official Tender URL, Brief Description, Industry / Category: {SECTOR}.
   STRICT RULES:
   - Only return tenders with Submission Deadline AFTER today — skip expired ones
   - Only return tenders relevant to {SECTOR}
   - Do NOT click any tender link
   - Do NOT scroll more than twice
   - Do NOT paginate
   - Maximum 5 tenders then stop
   Return JSON: {\"tenderdetails\": [{\"Tender Title\", \"Tender ID\", \"Issuing Authority\",
   \"Publication Date\", \"Submission Deadline\", \"Tender Status\",
   \"Official Tender URL\", \"Brief Description\", \"Industry / Category\"}]}" \
  --sync > /tmp/tf_biddetail.json &

# Agent 4 — Tenders Info
tinyfish agent run \
  --url "https://www.tendersinfo.com/global-singapore-tenders.php" \
  "You are on Tenders Info, a global tender database. Today is ${TODAY}.
   TASK: Extract open Singapore tenders for the sector: {SECTOR}.
   Read the visible tender listings on this page.
   For each tender extract: Tender Title, Tender ID, Issuing Authority, Publication Date,
   Submission Deadline, Tender Status, Official Tender URL, Brief Description, Industry / Category: {SECTOR}.
   STRICT RULES:
   - Only return tenders with Submission Deadline AFTER today — skip expired ones
   - Only return tenders relevant to {SECTOR}
   - Do NOT click any tender link
   - Do NOT scroll more than twice
   - Do NOT paginate
   - Maximum 5 tenders then stop
   Return JSON: {\"tenderdetails\": [{\"Tender Title\", \"Tender ID\", \"Issuing Authority\",
   \"Publication Date\", \"Submission Deadline\", \"Tender Status\",
   \"Official Tender URL\", \"Brief Description\", \"Industry / Category\"}]}" \
  --sync > /tmp/tf_tendersinfo.json &

# Agent 5 — Global Tenders
tinyfish agent run \
  --url "https://www.globaltenders.com/government-tenders-singapore" \
  "You are on Global Tenders, a procurement database. Today is ${TODAY}.
   TASK: Extract open Singapore tenders for the sector: {SECTOR}.
   Read the visible tender listings on this page.
   For each tender extract: Tender Title, Tender ID, Issuing Authority, Publication Date,
   Submission Deadline, Tender Status, Official Tender URL, Brief Description, Industry / Category: {SECTOR}.
   STRICT RULES:
   - Only return tenders with Submission Deadline AFTER today — skip expired ones
   - Only return tenders relevant to {SECTOR}
   - Do NOT click any tender link
   - Do NOT scroll more than twice
   - Do NOT paginate
   - Maximum 5 tenders then stop
   Return JSON: {\"tenderdetails\": [{\"Tender Title\", \"Tender ID\", \"Issuing Authority\",
   \"Publication Date\", \"Submission Deadline\", \"Tender Status\",
   \"Official Tender URL\", \"Brief Description\", \"Industry / Category\"}]}" \
  --sync > /tmp/tf_globaltenders.json &

# Wait for all agents
wait

echo "=== GEBIZ ===" && cat /tmp/tf_gebiz.json
echo "=== TENDERSONTIME ===" && cat /tmp/tf_tendersontime.json
echo "=== BIDDETAIL ===" && cat /tmp/tf_biddetail.json
echo "=== TENDERSINFO ===" && cat /tmp/tf_tendersinfo.json
echo "=== GLOBALTENDERS ===" && cat /tmp/tf_globaltenders.json

Replace {SECTOR} with the actual sector before running.


Step 3 — Filter and deduplicate

From all results:

  1. Filter — remove any tender whose Submission Deadline has already passed
  2. Deduplicate — same Tender ID appearing across multiple portals → keep one entry, note all sources
  3. Sort — by Submission Deadline ascending (soonest closing first)
  4. Flag urgency — deadlines within 7 days get a 🚨 flag

Output format

## Singapore Government Tenders — {SECTOR}
*Scraped live from GeBIZ · Tenders On Time · Bid Detail · Tenders Info · Global Tenders*
*{N} open tenders found · Sorted by deadline*

---

### 🚨 Closing Soon (within 7 days)

#### {Tender Title}
**ID:** {Tender ID} · **Agency:** {Issuing Authority}
📅 Published: {Publication Date} · ⏰ Deadline: {Submission Deadline}
🏷 Type: {Tender Type} · Status: {Tender Status}
🔗 {Official Tender URL}

{Brief Description}
**Eligibility:** {Eligibility Criteria}

---

### 📋 All Open Tenders

[same structure for remaining tenders sorted by deadline]

---

### 📊 Summary Table

| Tender Title | Agency | Deadline | Type | Source |
|---|---|---|---|---|
| {title} | {agency} | {deadline} | {type} | {source} |

---
*All data scraped live. Verify details directly on the official portal before submitting.*

Edge cases

  • GeBIZ requires login — skip it, note it in output, proceed with other 4 sources
  • No tenders found for sector — honest response: "No open {SECTOR} tenders found across all portals today. Try again tomorrow or broaden to a related sector."
  • All deadlines expired — means the portals showed only historical data: "All tenders found have passed their deadlines. The portals may not have updated yet — try GeBIZ directly at gebiz.gov.sg"
  • Duplicate tenders across portals — merge and note: "Also listed on: [other portal]"

Security notes

  • Scrapes live public government tender portals only.
  • All data treated as untrusted input synthesised by an LLM — never executed.
  • Only your own TinyFish credentials are used.

Frequently asked questions about Singapore Government Tender Finder

Similar skills