# Australian ABN Register Scraper (`automation-lab/australian-abn-register-scraper`) Actor

Look up supplied ABNs and export official Australian Business Register entity, status, GST, location, and name records.

- **URL**: https://apify.com/automation-lab/australian-abn-register-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event + usage

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

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Australian ABN Register Scraper

Look up supplied Australian Business Numbers and export normalized records from the official Australian Business Register (ABR).

The **Australian ABN company register** output includes entity identity, registration status, entity type, GST status, public state/postcode, current business names, historical trading names, and source dates.

Use it for repeatable supplier checks, KYB enrichment, CRM cleanup, and auditable ABN verification without manually copying register pages.

### What does Australian ABN Register Scraper do?

The Actor accepts one or more ABNs.

It validates each 11-digit number with the official ABN checksum before making a request.

For every matching register entry, it saves one typed dataset row.

Each row links back to the canonical ABR detail page.

The Actor reads public server-rendered pages directly.

It does not require an ABR API GUID, login, browser, or proxy.

### Who is it for?

**Procurement teams** can verify supplier identity and GST registration before onboarding.

**KYB and compliance teams** can add official ABR attributes to a review record.

**Finance teams** can check supplied ABNs before invoice or vendor-data cleanup.

**Data engineers** can turn a list of ABNs into stable JSON, CSV, Excel, or API output.

**Operations teams** can schedule the same input and compare exported snapshots downstream.

### Why use this ABN lookup workflow?

- Bulk input instead of one manual lookup at a time
- ABN checksum validation before network requests
- One normalized record per matched ABN
- Official source URLs on every row
- Current business names and legacy trading-name records
- Deterministic limits and duplicate removal
- Direct HTTP extraction with a 256 MB memory profile
- Transient retries without hiding permanent failures

### What data can you extract?

| Field | Meaning |
| --- | --- |
| `abn` | Normalized 11-digit ABN |
| `formattedAbn` | Register-formatted ABN |
| `entityName` | Registered entity name |
| `abnStatus` | Current ABN status |
| `abnStatusFrom` | Date from which that status applies |
| `entityType` | Public entity classification |
| `entityTypeUrl` | ABR explanation for the entity type |
| `gstStatus` | Current GST registration status |
| `gstStatusFrom` | Date from which GST status applies |
| `mainBusinessLocation` | Public state and postcode shown by ABR |
| `businessNames` | Current business-name records and start dates |
| `tradingNames` | Historical trading-name records retained by ABR |
| `abnLastUpdated` | ABR record update date |
| `recordExtracted` | ABR extraction date |
| `sourceUrl` | Canonical ABR detail URL |
| `scrapedAt` | Actor retrieval timestamp |

Unavailable source fields are returned as `null` or an empty array.

### How to run an Australian ABN lookup

1. Open the Actor input page.
2. Add one or more ABNs to **Australian Business Numbers**.
3. Keep spaces or hyphens if they help readability.
4. Set **Maximum records** to bound the run.
5. Click **Start**.
6. Open the Dataset tab when the run finishes.
7. Export JSON, CSV, Excel, XML, or RSS as needed.

A useful first input is:

```json
{
  "abns": [
    "51 824 753 556",
    "88 000 014 675"
  ],
  "maxItems": 2
}
```

### Input parameters

#### `abns`

Required array of Australian Business Numbers.

Each value must contain exactly 11 digits after spaces and hyphens are removed.

Every value must pass the ABN checksum.

Duplicate normalized ABNs are processed once.

The maximum input size is 1,000 ABNs.

#### `maxItems`

Optional maximum number of unique supplied ABNs to process.

The default is 100.

The accepted range is 1 to 1,000.

The Actor stops scheduling work after this limit.

### Output example

The following shape reflects current Actor output; names are shortened here for readability.

```json
{
  "abn": "51824753556",
  "formattedAbn": "51 824 753 556",
  "entityName": "AUSTRALIAN TAXATION OFFICE",
  "abnStatus": "Active",
  "abnStatusFrom": "01 Nov 1999",
  "entityType": "Commonwealth Government Entity",
  "entityTypeUrl": "https://abr.business.gov.au/Help/EntityTypeDescription?Id=00053",
  "gstStatus": "Registered",
  "gstStatusFrom": "01 Jul 2000",
  "mainBusinessLocation": "NSW 2640",
  "businessNames": [],
  "tradingNames": [
    {
      "name": "AUSTRALIAN TAXATION OFFICE",
      "fromDate": "09 Mar 2000",
      "sourceUrl": null
    }
  ],
  "abnLastUpdated": "07 Mar 2023",
  "recordExtracted": "14 Aug 2026",
  "sourceUrl": "https://abr.business.gov.au/ABN/View?abn=51824753556",
  "scrapedAt": "2026-08-13T14:37:15.922Z"
}
```

### How much does it cost to look up Australian ABN records?

Pay-per-event billing has two parts:

- `$0.01` once when a run starts
- one `item` event for each validated ABN record saved

The current BRONZE item price is `$0.003732` per saved record, with lower per-item rates at higher usage tiers.

At the BRONZE rate, 10 saved records cost about `$0.04732` including one start event.

At the BRONZE rate, 100 saved records cost about `$0.3832` including one start event.

At the BRONZE rate, 1,000 saved records cost about `$3.742` including one start event.

Invalid ABNs and ABNs with no matching public record do not produce or charge an item event.

Apify platform usage treatment follows the live pricing shown in Console; use the Console estimate as the final billing authority.

### Supplier verification workflow

Start with ABNs already supplied by vendors or held in your source system.

Run the Actor to normalize identity, status, GST, and location fields.

Join output back to your supplier table using `abn`.

Flag inactive ABNs or unexpected GST status according to your own policy.

Retain `sourceUrl` and `scrapedAt` as evidence of when the check occurred.

This Actor returns source facts; it does not make a compliance decision for you.

### Scheduled ABN checks

Create an Apify Schedule with a saved Actor task.

Use the same ABN list on each run.

Export each dataset to your warehouse or automation platform.

Compare status and name fields downstream to detect changes.

The Actor itself does not send alerts or store a cross-run change history.

### Integrations and exports

Send datasets to Google Sheets for operational review.

Export CSV or Excel for finance and procurement workflows.

Use webhooks to notify an automation after a successful run.

Connect Make, Zapier, or n8n to consume the finished dataset.

Load JSON into a warehouse for recurring supplier enrichment.

Use the Apify API when ABNs originate in another application.

### Run with the Apify API

Replace `YOUR_TOKEN` with an Apify API token.

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~australian-abn-register-scraper/runs?token=YOUR_TOKEN&waitForFinish=120" \
  -H "Content-Type: application/json" \
  -d '{"abns":["51824753556"],"maxItems":1}'
```

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client
  .actor('automation-lab/australian-abn-register-scraper')
  .call({ abns: ['51824753556'], maxItems: 1 });

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor(
    "automation-lab/australian-abn-register-scraper"
).call(run_input={"abns": ["51824753556"], "maxItems": 1})

items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

### Use with Apify MCP

Add the Actor to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/australian-abn-register-scraper"
```

#### Claude Desktop, Cursor, and VS Code setup

For Claude Desktop, Cursor, VS Code, or another MCP-compatible desktop/editor client:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/australian-abn-register-scraper"
    }
  }
}
```

Example prompts:

- "Look up ABN 51 824 753 556 and summarize its current registration and GST status."
- "Run the ABN scraper for these supplier ABNs and return a table of entity name, status, and location."
- "Export official source URLs and timestamps for this ABN verification list."

### Accuracy, freshness, and source behavior

Records reflect what the Australian Business Register displayed when fetched.

`recordExtracted` is supplied by ABR and may differ from `scrapedAt`.

ABR exposes only a public state and postcode as the main business location on these pages.

Legacy trading names stopped being collected and updated by ABR in May 2012.

Current business names link to the national Business Names Register when ABR provides a link.

Source layouts and availability can change.

### Limits and failure behavior

The Actor supports direct ABN lookup, not discovery by company name or postcode.

It rejects malformed or checksum-invalid ABNs before charging the start event.

A checksum-valid ABN with no public match produces no dataset row.

Transient network errors, HTTP 429 responses, and server errors receive bounded retries.

Permanent HTTP errors and unknown page shapes fail the run instead of returning misleading empty data.

The Actor does not use an automatic proxy fallback.

### Responsible use and legality

ABN Lookup publishes public register information supplied under Australian law.

Use the data only for lawful purposes and in accordance with ABR terms, Apify terms, and applicable privacy and data-protection requirements.

Do not treat public register data as a substitute for legal, tax, sanctions, credit, or compliance advice.

Apply appropriate retention, access, and review controls in your own systems.

### Troubleshooting

#### Why did my run fail before making a request?

Check that every supplied value contains 11 digits and passes the ABN checksum.

Copying a digit incorrectly is the most common cause.

#### Why is the dataset empty?

A checksum-valid number may have no matching public ABR record.

Review logs for the `No ABR record found` warning.

#### Why is `gstStatus` null?

The public source did not display a GST row for that entity at retrieval time.

Null means unavailable, not automatically unregistered.

#### Why are some trading names old?

ABR stopped collecting and updating trading names in May 2012.

Use `businessNames` for current registered business-name records shown by ABR.

#### What should I do after a source error?

Inspect the run log and retry later if ABR was temporarily unavailable.

Do not add a proxy unless direct ABR access is unavailable in your environment.

### Related Automation Lab Actors

Use [ASX Company Announcements Scraper](https://apify.com/automation-lab/asx-company-announcements-scraper) when the workflow needs Australian listed-company disclosure records in addition to ABN identity.

Use [Website Company Address Extractor](https://apify.com/automation-lab/website-company-address-extractor) when you need public address evidence from a supplied company website rather than the ABR state/postcode field.

These Actors produce separate datasets and do not replace official ABN verification.

### FAQ

#### Does the Actor search by company name?

No. It intentionally accepts supplied ABNs so each request maps to one canonical register record.

#### Does it require an ABR API key?

No. It reads public official detail pages and does not use the GUID-protected web service.

#### Can I export to Excel?

Yes. Open the run dataset and choose Excel, CSV, JSON, XML, or another supported format.

#### Are duplicate ABNs charged twice?

No. ABNs are normalized and deduplicated within a run before lookup.

#### Is an item charged when no record exists?

No. The `item` event is charged only for a validated record that is saved.

#### Can I use this for ongoing monitoring?

Yes, by scheduling a task and comparing datasets downstream. The Actor does not itself calculate diffs or send alerts.

# Actor input Schema

## `abns` (type: `array`):

ABNs to look up. Spaces and hyphens are accepted; each value must pass the official 11-digit ABN checksum.

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

Maximum number of unique supplied ABNs to process.

## Actor input object example

```json
{
  "abns": [
    "51 824 753 556",
    "88 000 014 675"
  ],
  "maxItems": 3
}
```

# Actor output Schema

## `overview` (type: `string`):

Default dataset containing one normalized official ABR record per matching ABN.

# 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 = {
    "abns": [
        "51 824 753 556",
        "88 000 014 675"
    ],
    "maxItems": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/australian-abn-register-scraper").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 = {
    "abns": [
        "51 824 753 556",
        "88 000 014 675",
    ],
    "maxItems": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/australian-abn-register-scraper").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 '{
  "abns": [
    "51 824 753 556",
    "88 000 014 675"
  ],
  "maxItems": 3
}' |
apify call automation-lab/australian-abn-register-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automation-lab/australian-abn-register-scraper"
        }
    }
}

```

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/TtEArLMYcoOsN3hAx/builds/on8LELRVz8gfIZeGG/openapi.json
