# AusTender Contract Notices (`yappman/au-contract-notices`) Actor

No open tenders: Australian Government contract awards (AusTender contract notices) by CN id, date, agency or UNSPSC, with alerts. AusTender materials are released by the Department of Finance. Derived and modified data, CC BY 3.0 AU. Not affiliated with or endorsed by the Department of Finance.

- **URL**: https://apify.com/yappman/au-contract-notices.md
- **Developed by:** [Russell Yapp](https://apify.com/yappman) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 contract notices

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

No open tenders: AusTender Contract Notices looks up, searches and alerts on Australian Government contract awards (AusTender contract notices), read from the AusTender API.

| 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 |

A Console default run returns up to 3 notices: $0.006 on the Free plan. Through the API, `maxItems` defaults to 1,000 (up to $2.00 on Free), so set it.

Run it with the default input.

### Source and licence

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/

This Actor is independent: it is not affiliated with or endorsed by the Department of Finance or AusTender.

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).

### What is left out

No supplier names. Version 1 outputs no supplier's name, legal name, ABN or party id, and has no supplier filter. Each row's notice link (`noticeUrl`) opens the notice on the AusTender API, which does name the supplier. Contact details and addresses are never read.

No subject line. 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 as published (a reference code), 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. A reference can still be looked up on AusTender, which leads to the notice and its supplier.

### 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`), with filters for the agency, UNSPSC code prefixes, value in AUD, procurement method, 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. On its first run it returns the last `firstRunLookbackDays` days and records the rest as seen, without charge. An alert keeps what it has sent in your own key-value store, named after the alert.

**Set an alert's filters and `maxItems` for its volume.** An alert sends at most `maxItems` new notices a run, newest first. Narrow it with the filters first: `agencies`, `unspscCodes`, `valueMin` and `valueMax`, `procurementMethods`, and the contract start and end dates. Then set `maxItems` to cover the alert's expected filtered daily volume; otherwise its backlog grows and older notices can age out of the 14-day window unsent. The run summary counts those that will leave the window at 00:00 UTC unless a run sends them first (`agedOutLeaving`) and those that have left it unsent (`agedOutLeft`); none of them is ever charged. For scale: about 930 contract notices were modified on AusTender between 28 Oct 17:24 UTC and 29 Oct 07:12 UTC (an owner canary of 29 Oct 2026); unfiltered daily volume is in the high hundreds.

**Do not put a person's name in `alertId`.** It is kept in the alert's store name, its ledger, the run summary and the status message, in your account.

The run's `RUN_SUMMARY` record holds counts only, never what you typed (apart from the alert's name in alert mode).

### Pricing

Pay per event: you pay only for the notices a run returns.

| Event | Charged | Price on the Free plan | Bronze | Silver | Gold and above |
| --- | --- | --- | --- | --- | --- |
| `notice` | Each row returned (lookup, search and alert) | $0.002 ($2.00 per 1,000) | $0.0018 | $0.0016 | $0.0012 |

There is no start or run fee: a run that returns no notices costs nothing. Worked costs at Free-plan prices: one notice looked up, $0.002; a Console default run (the form starts `maxItems` at 3, so up to 3 notices), $0.006; an API run with no `maxItems` (default 1,000), or a 31-day search capped at 1,000 rows, up to $2.00. For alerts: a filtered alert (for example one agency with `valueMin` 100000, about 5 to 20 notices a day) with `maxItems` 50 costs about $0.01 to $0.04 a day; an unfiltered alert with `maxItems` 1000 costs up to $2.00 a day, about $60 a month on the Free plan and $36 on Gold and above.

### Removal and objection

If a notice names you, or your business as a sole trader, you can ask for it to be left out of this Actor's output: email info@yappman.com with the CN id. A notice left out by its CN id is left out whole, with all of its amendments, later ones included. To object to all of your notices, including future ones, give your ABN; the Actor holds it only as a keyed hash, matched before anything is output: when any version of a notice that a run reads names that ABN, the whole notice, with its amendments, is left out of that run. We act on a request within one month. A notice left out on request is treated as if it were not found: it is never returned or charged.

### Status

Built and checked on Apify (S5, 28 and 29 Oct 2026): lookup, search and alert, with charging and the removal lists.

### Reviews

Ratings and reviews on the Store page help other buyers judge whether this Actor fits their use, whatever your experience.

# Actor input Schema

## `mode` (type: `string`):

Search filters contract notices in a date range; lookup returns the CN ids you name (the latest version of each, with its amendment count); alert returns only notices this alert has never sent before, over the last 14 days of contract last-modified dates. Allowed: search, lookup, alert; any other value refuses the run. Default: search. Cost: each row returned is one notice event ($0.002 on the Free plan, less on higher plans), in every mode; there is no run fee.

## `cnIds` (type: `array`):

Lookup mode: up to 20 contract notice ids, such as CN4280221, or an amendment id such as CN4271813-A1 (CN, then digits, optionally -A and digits); anything else refuses the run before anything is read. Each id returns the latest version of its notice; an id AusTender does not know is reported as not found and costs nothing. Search and alert ignore it. Default: none. Cost: one notice event per row returned ($0.002 on the Free plan, less on higher plans); no run fee.

## `dateType` (type: `string`):

Which date the date range applies to (search mode). Allowed: contractPublished, contractLastModified (parents and amendments), contractStart, contractEnd; any other value refuses the run. Left empty, search uses contractPublished. Alert mode always reads contract last-modified dates and refuses this field. Cost: no charge of its own; each row returned is one notice event ($0.002 on the Free plan, less on higher plans); no run fee.

## `dateFrom` (type: `string`):

First day of the range (UTC), inclusive, as YYYY-MM-DD (search mode). Default: 30 days before "To", so the range is 31 days. The range can be at most 92 days; a longer one is refused before anything is read or charged. Alert mode reads its own 14 days and refuses this field. Cost: a longer range can return more rows, each one notice event ($0.002 on the Free plan, less on higher plans); no run fee.

## `dateTo` (type: `string`):

Last day of the range (UTC), inclusive, as YYYY-MM-DD (search mode). It may be in the future for contract start and end dates. Default: today. Alert mode reads its own 14 days and refuses this field. Cost: as "From": more days can mean more rows, each one notice event ($0.002 on the Free plan, less on higher plans); no run fee.

## `agencies` (type: `array`):

Part of the procuring agency's name, case-insensitive; any one matching is enough. Matched only against the agency (the procuring entity), never any other party; a notice whose agency is not output (null) never matches. Up to 20 entries of at most 200 characters. Default: none (every agency). Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `unspscCodes` (type: `array`):

UNSPSC code prefixes of 2 to 8 digits; any one matching is enough. "80" matches all of segment 80, "80100000" all of family 8010, and "80101504" matches itself. Up to 20 entries. Default: none (every code). Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `valueMin` (type: `integer`):

Only notices whose contract value is at least this, in Australian dollars (inclusive). Notices without a value are left out when a value bound is set. Must not exceed the maximum. Default: none. Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `valueMax` (type: `integer`):

Only notices whose contract value is at most this, in Australian dollars (inclusive). Notices without a value are left out when a value bound is set. Default: none. Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `procurementMethods` (type: `array`):

Only notices with one of these procurement methods, as published. Allowed: Open tender, Limited tender, Prequalified tender; any other value refuses the run. Default: none (every method). Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `contractStartFrom` (type: `string`):

Only notices whose contract starts on or after this day (UTC, YYYY-MM-DD); notices without a start date are left out when a start bound is set. Default: none. Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `contractStartTo` (type: `string`):

Only notices whose contract starts on or before this day (UTC, YYYY-MM-DD); notices without a start date are left out when a start bound is set. Default: none. Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `contractEndFrom` (type: `string`):

Only notices whose contract ends on or after this day (UTC, YYYY-MM-DD); notices without an end date are left out when an end bound is set. Default: none. Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `contractEndTo` (type: `string`):

Only notices whose contract ends on or before this day (UTC, YYYY-MM-DD); notices without an end date are left out when an end bound is set. Default: none. Cost: narrows the rows returned, so fewer notice events ($0.002 each on the Free plan, less on higher plans); there is no run fee.

## `alertId` (type: `string`):

Alert mode: names this alert, as lower-case letters, digits and hyphens, 1 to 40 characters (such as "defence-it"); anything else refuses the run. Do not put a person's name in it: it is kept in the alert's store name, its ledger, the run summary and the status message. Each alert remembers what it has sent, in your own key-value store au-cn-alert-<alertId>. Search and lookup ignore it. Default: none (required in alert mode). Cost: each new notice returned is one notice event ($0.002 on the Free plan, less on higher plans); no run fee.

## `firstRunLookbackDays` (type: `integer`):

On an alert's first run, notices last modified in this many days (today included) are returned; the rest of the 14-day window is recorded as seen without charge. Allowed: 1 to 14. Default: 1. Alert mode only; search and lookup ignore it. Cost: more days can return more rows on the first run, each one notice event ($0.002 on the Free plan, less on higher plans); no run fee.

## `maxItems` (type: `integer`):

Cap on rows returned, and so on notice charges. Search stops reading once it has this many; lookup returns at most 20 anyway; an alert sends at most this many new notices a run, newest first. For an alert, narrow it with the filters first (agencies, UNSPSC codes, value range, procurement methods, contract start and end dates), then set maxItems to cover its expected filtered daily volume; otherwise its backlog grows and older notices can age out of the 14-day window unsent (the run summary counts any that do, and they are never charged). About 930 contract notices were modified on AusTender between 28 Oct 17:24 UTC and 29 Oct 07:12 UTC (an owner canary of 29 Oct 2026); unfiltered daily volume is in the high hundreds. Examples at Free-plan prices: a filtered alert (for example one agency with valueMin 100000, about 5 to 20 notices a day) with maxItems 50 costs about $0.01 to $0.04 a day; an unfiltered alert with maxItems 1000 costs up to $2.00 a day, about $60 a month on Free and $36 on Gold and above. Allowed: 1 to 100,000. Default: 1,000; the Console form starts at 3. Cost: at most this many notice events ($0.002 each on the Free plan, less on higher plans); no run fee.

## Actor input object example

```json
{
  "mode": "search",
  "firstRunLookbackDays": 1,
  "maxItems": 3
}
```

# Actor output Schema

## `notices` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("yappman/au-contract-notices").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 3 }

# Run the Actor and wait for it to finish
run = client.actor("yappman/au-contract-notices").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 3
}' |
apify call yappman/au-contract-notices --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yappman/au-contract-notices"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sMokFy09S1MpG6UDJ/builds/hBAsynyNUYfHAKbRh/openapi.json
