DEV Community

Russell Yapp
Russell Yapp

Posted on

Australian Government contract notices from AusTender as fixed rows, with supplier names left out

Australian Government agencies publish the contracts they award on AusTender, the government's procurement site, which the Department of Finance runs. Every contract at or above the reporting threshold appears there as a contract notice, and notices can later be amended. The data is open, and AusTender has an API that returns it in the Open Contracting (OCDS) format.

I built an Apify Actor that reads those contract notices and returns one fixed row per notice: AusTender Contract Notices. You can look up notices by id, search by date and filters, or run a daily alert that returns only notices it has not sent before.

It is independent: not affiliated with or endorsed by the Department of Finance or AusTender.

What the data is

AusTender materials are released by the Department of Finance under the Creative Commons Attribution 3.0 Australia licence (CC BY 3.0 AU). Only contracts at or above the reporting threshold are published on AusTender: A$10,000 for most agencies, higher for corporate Commonwealth entities (Commonwealth Procurement Rules, paragraph 7.18). These are contract awards and their amendments. They are not open tenders.

What a row holds

One row per notice or amendment, in a fixed field order. This is the README's sample, shortened to the main fields:

cnId agency value currency contractStart contractEnd publishedAt procurementMethod
CN4280221 National Indigenous Australians Agency 44490.6 AUD 2026-09-22T14:00:00Z 2027-06-29T14:00:00Z 2026-10-01T23:51:13Z Limited tender

The full row also has these fields:

  • parentCnId (the parent notice for an amendment, otherwise null), ocid and releaseId;
  • title, the agency's contract reference as published, and unspscCodes;
  • limitedTenderExempt, the notice's exemption flag as published;
  • dateSigned, lastModifiedAt and amendments (the number of amendments);
  • noticeUrl, which opens the notice on the AusTender API;
  • alertFingerprint (alert mode only), plus attribution and licence, which carry the credit line on every row.

What is left out

Version 1 outputs no supplier's name, legal name, ABN or party id, and has no supplier filter. The notice link (noticeUrl) opens the notice on the AusTender API, which does name the supplier.

A notice's description (its subject line) can name a person, so it is never output and there is no keyword search. The title field is the agency's contract reference, not a subject. It is output only when it is reference-shaped: it contains a digit, contains no whitespace and is at most 40 characters. Otherwise it is null. Contact details and addresses are never read.

If a notice names you, or your business as a sole trader, the README says you can ask for it to be left out by emailing info@yappman.com with the CN id; the Actor acts on a request within one month.

Three modes

  • Lookup (cnIds): up to 20 CN ids, such as CN4280221, or an amendment id such as CN4271813-A1. Each returns the latest version of its notice, with its amendment count. An id AusTender does not know is reported as not found and costs nothing.
  • Search: a date range of up to 92 days (default 31) on one of four dates (dateType: contractPublished, contractLastModified, contractStart or contractEnd). Filters are agencies, unspscCodes, valueMin and valueMax (in AUD), procurementMethods (Open tender, Limited tender, Prequalified tender), and contract start and end dates.
  • Alert (alertId): run it daily. Each run reads the last 14 days of contract last-modified dates, so amendments are caught, and returns only the notices this alert has never sent before. An alert keeps what it has sent in your own key-value store, named after the alert. Do not put a person's name in alertId.

An alert sends at most maxItems new notices a run, newest first, so narrow it with filters and set maxItems for its expected volume. The README says unfiltered daily volume is in the high hundreds.

Example input

A search for one agency's larger contracts published in October 2026:

{
  "mode": "search",
  "dateType": "contractPublished",
  "dateFrom": "2026-10-01",
  "dateTo": "2026-10-31",
  "agencies": ["National Indigenous Australians Agency"],
  "valueMin": 100000,
  "procurementMethods": ["Limited tender"],
  "maxItems": 50
}
Enter fullscreen mode Exit fullscreen mode

And from Python, with apify-client and an Apify token:

import os
from decimal import Decimal

from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yappman/au-contract-notices").call(
    run_input={
        "mode": "lookup",
        "cnIds": ["CN4280221"],
    },
    max_total_charge_usd=Decimal("0.01"),
)
for row in client.dataset(run.default_dataset_id).iterate_items():
    print(row["cnId"], row["agency"], row["value"], row["currency"], row["procurementMethod"])
Enter fullscreen mode Exit fullscreen mode

What it costs

Pay per event: one notice event for each row returned, in every mode. On the Apify Free plan that is $0.002 per notice, which is $2.00 per 1,000. It is $0.0018 on Bronze, $0.0016 on Silver and $0.0012 on Gold and above. There is no start or run fee, so a run that returns no notices costs nothing.

Worked examples on the Free plan, from the README:

  • a Console default run (the form starts maxItems at 3) costs up to $0.006;
  • one notice looked up costs $0.002;
  • through the API, maxItems defaults to 1,000, so a run with no maxItems costs up to $2.00. Set it;
  • an unfiltered alert with maxItems 1000 costs up to $2.00 a day.

When not to use it

This is not legal or procurement advice, and the Actor does not claim to be complete. Only contracts at or above the reporting threshold are on AusTender at all. AusTender materials are subject to change and should be verified on the AusTender website (www.tenders.gov.au). Because supplier names are left out and there is no keyword search, it will not tell you who won a contract; the notice link on AusTender does.

Source and credit

The output carries this credit on every row:

  • AusTender materials are released by the Department of Finance. AusTender materials are subject to change and should be verified on the AusTender website to ensure the information is up to date and correct: www.tenders.gov.au. Derived and modified by Yappman Data from AusTender contract notices: fields selected, renamed and redacted, and supplier names and identifiers left out.
  • Licensed under CC BY 3.0 AU: https://creativecommons.org/licenses/by/3.0/au/

The Store page has the full input reference: yappman/au-contract-notices.

Top comments (0)