# AusTender Contract Awards Scraper (Australia) (`civitab/austender-contract-awards`) Actor

Australian Government contract awards from AusTender as clean JSON: agency, supplier and ABN, value, dates, UNSPSC codes and procurement method, plus amendments. Filter by agency, supplier, keyword, code and value, monitor new awards, or get a supplier rollup. CC BY 3.0 AU, no contact data.

- **URL**: https://apify.com/civitab/austender-contract-awards.md
- **Developed by:** [Jason Padilla](https://apify.com/civitab) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 contract awards

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## AusTender Contract Awards Scraper (Australia)

This Actor collects Australian Government contract awards (contract notices and their amendments) from AusTender's public OCDS API as clean, flat records. Each record has the agency, supplier and ABN, contract value, signing and contract dates, UNSPSC codes and the procurement method, including limited-tender reasons and exemptions. It needs no login, never touches open tender documents (ATMs), removes contact details and charges $0.003 per award.

*By **Civitab**, independent public-data tools. Apify Store ID: `civitab/austender-contract-awards`.*

### What you get

Australian Government agencies must publish every contract worth AUD 10,000 or more on AusTender within 42 days. This Actor reads those contract notices (CNs) through the official OCDS API and returns one row per notice or amendment:

- agency name, ABN, branch and division
- supplier name, ABN, suburb, state, postcode and country
- contract value and currency, publish date, start and end dates
- UNSPSC codes, procurement method (open, limited, prequalified), limited-tender condition or exemption
- CN ID, amendment IDs, OCDS ids and the API address of the notice
- source, the AusTender attribution notice, licence name and licence URL on every item

Typical uses: competitor and incumbent tracking, recompete pipelines (contracts ending soon), supplier due diligence, journalism and spend analysis. Turn on the **rollup report** to also get the top suppliers and agencies by value for the run.

**Awards only.** Approach to Market (ATM) material (open tenders) is copyright and excluded by the AusTender terms, so this Actor never requests it. Contact officer names, e-mails and phone numbers are removed.

### Input example

Defence IT contracts over AUD 100,000 published in the last 14 days, with a rollup:

```json
{
  "daysBack": 14,
  "agencies": ["Defence"],
  "unspscPrefixes": ["43", "81"],
  "minValue": 100000,
  "rollupReport": true,
  "maxItems": 500
}
```

### Output example

One real item from a live run on 22 Oct 2026:

```json
{
  "cnId": "CN4284335",
  "releaseType": "contract",
  "amendmentIds": [],
  "description": "Building Works",
  "agencyReference": "4600094961",
  "agencyName": "Department of Defence",
  "agencyAbn": "62950639680",
  "agencyBranch": "SEG - Service Delivery Division",
  "agencyDivision": "SEG",
  "supplierName": "DURATEC AUSTRALIA",
  "supplierAbn": "94141614075",
  "supplierLocality": "WANGARA",
  "supplierRegion": "WA",
  "supplierPostcode": "6065",
  "supplierCountry": "AUSTRALIA",
  "value": 1455013.59,
  "currency": "AUD",
  "publishedDate": "2026-10-23T00:56:56Z",
  "dateSigned": "2026-10-23T00:56:56Z",
  "startDate": "2026-10-19T13:00:00Z",
  "endDate": "2028-06-25T14:00:00Z",
  "unspscCodes": [
    "72100000"
  ],
  "procurementMethod": "open",
  "procurementMethodDetails": "Open tender",
  "limitedTenderExempt": null,
  "limitedTenderReason": null,
  "exemption": null,
  "ocid": "prod-8d145cc19fbc4017b378bfdde8aa5151",
  "releaseId": "prod-8d145cc19fbc4017b378bfdde8aa5151-8a3003bc46073f61a3dd2ef19341fb4b",
  "apiUrl": "https://api.tenders.gov.au/ocds/findById/CN4284335",
  "source": "AusTender OCDS API (Department of Finance), contract notices; modified: contact details removed, normalized",
  "attribution": "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.",
  "license": "Creative Commons Attribution 3.0 Australia (CC BY 3.0 AU)",
  "licenseUrl": "https://creativecommons.org/licenses/by/3.0/au/",
  "scrapedAt": "2026-10-23T03:18:19Z"
}
```

### Fields

| Field | Type | Meaning |
|---|---|---|
| cnId, releaseType, amendmentIds | string, string, array | Contract notice ID; contract or amendment |
| agencyName, agencyAbn, agencyBranch, agencyDivision | string | Buying agency and unit |
| supplierName, supplierAbn, supplierLocality, supplierRegion, supplierPostcode, supplierCountry | string | Supplier |
| value, currency | number, string | Contract value (after amendment for amendment rows) |
| publishedDate, dateSigned, startDate, endDate | string | UTC ISO 8601 |
| unspscCodes | array | UNSPSC classification |
| procurementMethod, procurementMethodDetails, limitedTenderExempt, limitedTenderReason, exemption | string, boolean | How the contract was procured |
| ocid, releaseId, apiUrl | string | OCDS identifiers |
| source, attribution, license, licenseUrl, scrapedAt | string | Provenance on every item |

### Pricing (pay per event)

- **$0.003 per award** (contract notice or amendment), so $3 per 1,000.
- **$0.05 rollup report**, optional, at most once per run, only when *Rollup report* is on.
- The default run (last 3 days, 50 awards) costs $0.15. All awards for a week are about 900 to 1,000 rows, roughly $3. A daily monitor for one agency usually costs a few cents.
- Set *Max cost per run* in Console; the Actor stops cleanly at that limit and you only pay for items saved.

### Schedule and alerts

Turn on **Only new awards**, set your agencies, suppliers or UNSPSC codes, and schedule the Actor daily in Console; each run returns only awards you have not received. Connect it to e-mail, Slack, Google Sheets or a webhook with Apify integrations. AI agents can call it through the Apify MCP server as `civitab/austender-contract-awards`.

### Input reference

| Input | Default | Notes |
|---|---|---|
| daysBack | 3 | Window ending today (or at dateTo), up to 366 days |
| dateFrom, dateTo | empty | Exact window in UTC; date-only end is inclusive |
| dateField | contractPublished | Or contractLastModified, contractStart |
| agencies, suppliers | all | Name parts; suppliers also accept exact ABNs |
| keywords | none | Description or agency reference |
| unspscPrefixes | all | e.g. 43 (IT hardware), 8111 (IT services) |
| minValue, maxValue | none | AUD |
| procurementMethods | all | open, limited, selective |
| includeAmendments | true | Amendment notices as separate rows |
| maxItems | 50 | One award per event |
| onlyNew | false | Monitor mode with memory per filter set |
| rollupReport | false | Top suppliers and agencies in the ROLLUP record |
| requestDelaySecs | 1 | 1 to 10 seconds between API requests |

### Source and license (robots.txt / terms checked 22 Oct 2026)

- **Source:** AusTender OCDS API published by the Australian Government Department of Finance, endpoint "find by dates / contract published", with cursor paging. No login, no key.
- **Licence:** the AusTender Terms of Use, section 5.1, license AusTender materials under **Creative Commons Attribution 3.0 Australia (CC BY 3.0 AU)**, except the Commonwealth Coat of Arms and ATM material; every API response also names this licence. Each item carries the licence name and the licence URL as data.
- **Excluded:** section 5.4 says ATM materials are copyright and may not be reproduced or commercialised without written approval, so open tenders are out of scope. No coat of arms or logos are used.
- **Attribution (section 6.1, required, verbatim; also in every item's attribution field):**

```text
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.
```

- **robots.txt:** the API host has no robots.txt (the address returns an API-gateway "missing authentication token" message). The main AusTender website's robots.txt disallows its search, report and list pages; this Actor does not visit the website at all, only the API. Requests are throttled to at least 1 second apart.
- Changes made: contact details removed, fields flattened and normalized. Not affiliated with or endorsed by the Department of Finance.

### FAQ and disclaimer

**Why are there no open tenders?** The AusTender terms do not allow reuse of ATM material. This Actor is for awarded contracts.

**Why is a value different from the original notice?** Amendment rows show the value after the amendment; look for the same CN ID with `releaseType` contract for the original.

**How far back does it go?** The API covers contract notices from 2013. Use dateFrom/dateTo for history (up to 366 days per run).

Data is provided as published, without warranty; verify important details on AusTender.

### Reliability and test results (22 Oct 2026)

- Default input (last 3 days, 50 awards): **50 awards in 5 s**, 1 request, 100% success.
- Last 7 days, no cap: **943 awards**, 11 of 11 pages successful (100%) in 18 s.
- Simulated pay-per-event run (Defence, 30 awards, rollup on): charged 30 awards plus 1 rollup, $0.14 total.
- 45 offline tests (parsing, privacy, filters, paging, retries, charging, monitor memory, rollup).

# Changelog

This Actor's version history is a separate document: https://apify.com/civitab/austender-contract-awards/changelog.md

# Actor input Schema

## `daysBack` (type: `integer`):

Window size in days ending today (or at Date to). Ignored when Date from is set.

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

Optional start date, e.g. 2026-07-01 (UTC).

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

Optional end date, inclusive (UTC). Empty = now.

## `dateField` (type: `string`):

Which contract date the window applies to.

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

Part of agency names, e.g. Defence, Home Affairs. Empty = all agencies.

## `suppliers` (type: `array`):

Part of supplier names, or exact ABNs. Empty = all suppliers.

## `keywords` (type: `array`):

Any word in the contract description or agency reference. Empty = no keyword filter.

## `unspscPrefixes` (type: `array`):

UNSPSC code prefixes, e.g. 4321 (computers) or 8111 (IT services). Empty = all.

## `minValue` (type: `integer`):

Only contracts worth at least this much. Empty = no minimum.

## `maxValue` (type: `integer`):

Only contracts worth at most this much. Empty = no maximum.

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

open, limited or selective (prequalified). Empty = all.

## `includeAmendments` (type: `boolean`):

Also return contract amendment notices.

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

Stop after this many awards. Each award is one billable event.

## `onlyNew` (type: `boolean`):

Skip awards delivered by earlier runs with the same filters. Use on a schedule.

## `rollupReport` (type: `boolean`):

Also save top suppliers and agencies by value for this run in the ROLLUP record (one extra $0.05 event).

## `requestDelaySecs` (type: `number`):

Politeness delay between API requests, 1-10 s.

## Actor input object example

```json
{
  "daysBack": 3,
  "dateFrom": "",
  "dateTo": "",
  "dateField": "contractPublished",
  "agencies": [],
  "suppliers": [],
  "keywords": [],
  "unspscPrefixes": [],
  "minValue": null,
  "maxValue": null,
  "procurementMethods": [],
  "includeAmendments": true,
  "maxItems": 50,
  "onlyNew": false,
  "rollupReport": false,
  "requestDelaySecs": 1
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset items. Field types are in the dataset schema.

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

JSON: items pushed, request success rate, stop reason, charged events.

## `rollup` (type: `string`):

JSON: top suppliers and agencies by contract value for this run (only when Rollup report is on).

# 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 = {
    "daysBack": 3,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("civitab/austender-contract-awards").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 = {
    "daysBack": 3,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("civitab/austender-contract-awards").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 '{
  "daysBack": 3,
  "maxItems": 50
}' |
apify call civitab/austender-contract-awards --silent --output-dataset

```

## MCP server setup

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

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/5nyrQaIpw7pmR4puK/builds/3WgwCjZOTW4n9u6Zh/openapi.json
