Australian Government Tenders Scraper — AusTender & States avatar

Australian Government Tenders Scraper — AusTender & States

Pricing

from $0.00005 / actor start

Go to Apify Store
Australian Government Tenders Scraper — AusTender & States

Australian Government Tenders Scraper — AusTender & States

Every open Australian government tender: AusTender, QTenders and the NSW, VIC, WA, TAS, NT and ACT portals, plus councils and VendorPanel, in one de-duplicated dataset with agency, state, category, close date and link.

Pricing

from $0.00005 / actor start

Rating

0.0

(0)

Developer

HE Work

HE Work

Maintained by Community

Actor stats

0

Bookmarked

31

Total users

7

Monthly active users

20 hours ago

Last modified

Security

Limited permissions

Share

✅ Checked daily. An automated test runs this Actor on the Apify cloud every day and checks that it still returns real data, so if the website changes and something breaks, it's caught the same day and fixed.

Every open Australian government tender in one dataset. AusTender (Commonwealth) plus the NSW, VIC, QLD, WA, TAS, NT and ACT portals, Brisbane City Council, Local Buy and VendorPanel (100+ councils, universities and health services). One run, one clean schema, ready for bid alerts, CRM import or market research.

New in version 1.4: every open tender

  • QTenders added (Queensland Government's main directory) and an all-pages mode (maxPages: 0) for complete coverage.
  • No double-counting across portals: one record per tender, with also_listed_on.

Version 1.3: upgraded and improved

  • More tenders: NSW, VIC, ACT and Local Buy fixed; 12 sources return tenders on a typical run (was 7).
  • Cleaner data: a state field on every tender, keyword filtering across all sources, and open tenders only.
  • Clear reporting: each run tells you which portals answered and why any didn't.
  • Faster and lighter: about 2 minutes for all states, at 1 GB of memory.

See the Changelog tab for details.

What you get

  • Open tenders from 13 sources, normalised into one schema: ID, title, agency, state, category, procurement type, open and close dates, status, and a direct link.
  • Filter by state and keyword. Keywords match title, description, agency and category across every source.
  • Open tenders only: each record is open or closing_soon (within 7 days); anything already closed is dropped.
  • Cross-portal categories: each portal's own categories (UNSPSC, local schemes) are mapped to 18 common labels such as Construction, IT & Digital or Healthcare & Medical.
  • A per-source report on every run (key-value store OUTPUT), so you can see which portals answered, how many tenders each returned, and why any were unavailable.

Sources

Jurisdiction / sourcePortalNotes
Commonwealthtenders.gov.au (AusTender)Keyword search runs on AusTender itself
NSWbuy.nsw.gov.au
QLDQTenders (qtenders.hpw.qld.gov.au), etender.hpw.qld.gov.au, Brisbane City Council, Local BuyQTenders covers all state departments, hospitals and universities
VICtenders.vic.gov.au (Buying for Victoria)Needs AU residential proxy (default)
WAtenders.wa.gov.au
TAStenders.tas.gov.au
NTtendersonline.nt.gov.au
ACTtenders.act.gov.auNeeds AU residential proxy (default)
All statesVendorPanel (100+ councils, universities, health)Limited to the states you select
All states, opt-inTenders.Net closing-soon listincludeTendersNet: true; mostly title-only, closing within days
SAtenders.sa.gov.auCurrently unavailable: the portal now requires a supplier login to search

About the proxy: VIC and ACT (and Tenders.Net, if enabled) block datacenter IPs. Every source is first fetched directly; only pages that come back blocked are retried through an Apify AU residential proxy (on by default). That keeps proxy traffic to a few pages per run. Turn the proxy off to skip those portals.

Input

FieldDefaultDescription
statesCommonwealthComma-separated: Commonwealth, NSW, QLD, VIC, WA, TAS, NT, ACT
keywords(none)Comma-separated, e.g. construction, software, cleaning. Whole-word, case-insensitive
includeTendersNetfalseAdd Tenders.Net's closing-soon list
maxPages3 (form: 0)Listing pages per source; 0 = all pages, i.e. every open tender each portal lists
proxyConfigurationApify residential, AUUsed only for portals that block direct requests
sources(none)Advanced: run specific sources only, e.g. nsw,vendorpanel

Example: all jurisdictions, construction tenders only:

{
"states": "Commonwealth,NSW,QLD,VIC,WA,TAS,NT,ACT",
"keywords": "construction",
"maxPages": 0
}

Output

One dataset item per tender:

{
"tender_id": "26.0000138191.0674",
"title": "Provide an access solution to the Sydney Harbour Bridge underdeck between cross girders N18-N12",
"agency": "Transport Infrastructure Projects",
"state": "NSW",
"location": "NSW",
"category": "Building and property - Bridges and tunnels",
"normalized_category": "Facilities & Property",
"type": "Request for tender (RFT)",
"status": "open",
"close_date": "2026-11-12T15:00:00",
"publish_date": "",
"estimated_value": "",
"source": "nsw",
"url": "https://buy.nsw.gov.au/prcOpportunity/B5AC8405-60E1-4531-9BBAFBF6D15B87EF",
"scraped_at": "2026-11-05T01:20:00+00:00"
}

Dates are ISO 8601 in the portal's local time. Fields a portal doesn't publish are empty strings. Export as JSON, CSV, Excel or XML, or pull results through the Apify API.

The run's OUTPUT record (key-value store) holds the per-source report:

{
"total_tenders": 412,
"sources": [
{"source": "nsw", "status": "ok", "tenders": 30, "scraped": 30, "reason": ""},
{"source": "sa", "status": "unavailable", "tenders": 0, "reason": "tenders.sa.gov.au now requires a supplier login to search tenders"}
]
}

Example output

One item from a real run (long texts shortened):

{
"tender_id": "RFT-2017972",
"title": "Upgrade of Existing Turallo Levee",
"description": "Bungendore Levee Repairs",
"agency": "NSW Public Works",
"location": "NSW",
"category": "Construction - Infrastructure",
"type": "Request for tender (RFT)",
"status": "open",
"close_date": "2026-12-01T15:00:00",
"publish_date": "",
"estimated_value": "",
"source": "nsw",
"url": "https://buy.nsw.gov.au/prcOpportunity/F3C409EF-62DD-4ED0-9696A35E90F0AC8D",
"last_updated": "",
"scraped_at": "2026-11-05T02:59:00.352811+00:00",
"state": "NSW",
"normalized_category": "Construction - Infrastructure"
}

Alerts & workflows

Ready-made workflow: Daily tender digest → Slack / Telegram / email / Google Sheets. No Make or Zapier needed — set it in the input and schedule the Actor (e.g. daily).

  1. Give the run a Watch list name (e.g. my-watch). Every run with that name remembers every tender it found (by source + tender ID) with its closing date and status; each item gets change_status = new, changed or unchanged (changed items also carry previous_value).
  2. Turn on Only new / changed items to skip — and not pay for — items you've already seen.
  3. Add one or more destinations; after each run you get a digest of what's new or changed:
    • Slack: an incoming-webhook URL.
    • Telegram: bot token (from @BotFather) + chat ID.
    • Discord: a channel webhook URL.
    • Email: an address (sent with Apify's send-mail Actor).
    • Google Sheets: open your sheet → Extensions → Apps Script, paste the script below, Deploy → New deployment → Web app (execute as you, access: anyone), and paste the web app URL into the input. Each new / changed item is appended as a row.
function doPost(e) {
var rows = JSON.parse(e.postData.contents).rows || [];
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
if (!rows.length) return ContentService.createTextOutput("0");
var head = sheet.getLastRow() ? sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0] : [];
if (!head.length) { head = Object.keys(rows[0]); sheet.appendRow(head); }
rows.forEach(function (r) { sheet.appendRow(head.map(function (h) { return r[h] === undefined ? "" : r[h]; })); });
return ContentService.createTextOutput(String(rows.length));
}

Secrets (webhook URLs, bot tokens) are stored encrypted by Apify.

Pricing

Pay per result: $2.00 per 1,000 tenders, plus $0.005 per run. You pay only for tenders delivered to your dataset; run summaries and reports are free.

A daily run across all jurisdictions with default settings typically returns a few hundred tenders, so well under $1.

Scheduling and alerts

Create an Apify Schedule (for example, every weekday at 7 am AEST) and attach a webhook or integration (Slack, email, Google Sheets, Make, Zapier) to receive each day's tenders. Combine keywords and states to get only the opportunities your team bids on.

FAQ

Is this data public? Yes. These are public tender notices that the portals publish so suppliers can find opportunities. The actor reads the public listing pages only; it never logs in or downloads tender documents.

Why is SA missing? In 2026 SA Tenders moved tender search behind a supplier login, so it can't be read publicly. The run report marks it unavailable rather than failing silently.

Why did a portal return nothing? Check the run's OUTPUT record: each source shows ok, empty (no open tenders matched), blocked (the portal refused the request; usually fixed by the residential proxy), error or unavailable, with the reason.

Can I get closed or awarded contracts? Not yet; this actor covers currently open opportunities.

Who uses this? Bid and tender teams, consultants who track government spending, and suppliers who want new opportunities in their sector delivered daily.