# ACNC Charity Register — State, Size, Purpose (`spider355/acnc-charity-register`) Actor

Organisation rows from the weekly ACNC register on data.gov.au. Filter by state, size, purpose, beneficiary, name, or registration dates. Town, state, and postcode only. US$0.002 per result. No street, email, phone, or Responsible Person names. Not endorsed by the ACNC or data.gov.au. See README.

- **URL**: https://apify.com/spider355/acnc-charity-register.md
- **Developed by:** [Mitchell](https://apify.com/spider355) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 results

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

## ACNC charity register (Apify Actor)

Organisation-only extract of the weekly **ACNC Registered Charities** file on data.gov.au. It GETs the fixed CKAN `datastore_search` endpoint for CSV resource `8fb32972-24e9-4c95-885e-7140be51be8a` (package `acnc-register`), applies the optional filters, and writes an allowlisted dataset.

**This is an organisation-only extract, not the original register.** Street address lines (`Address_Line_1`, `Address_Line_2`, `Address_Line_3`) are removed. Responsible Person names are excluded. `Country`, `Address_Type`, `Charity_Website`, and `Number_of_Responsible_Persons` are not emitted.

**Not endorsed by the ACNC or data.gov.au.** Do not use their logos or trademarks. This Actor does not claim any endorsement beyond the disclaimer in the attribution line.

**Data source (only):** `https://data.gov.au/data/api/3/action/datastore_search` with resource id `8fb32972-24e9-4c95-885e-7140be51be8a`.

There is no URL input. `url`, `feedUrl`, `resourceId`, and `fields` are ignored. A process environment override `ACNC_DATASTORE_URL` is accepted only when it is `https://data.gov.au` and the path is `/data/api/3/action/datastore_search`. Any other host or path is rejected. The resource id is always the CSV id above.

### Output fields

Each dataset item is an allowlist. `Address_Line_1`, `Address_Line_2`, `Address_Line_3`, email, phone, and person-name columns are never emitted. Emails and obvious Australian phone numbers inside `Charity_Legal_Name`, `Other_Organisation_Names`, `Operating_Countries`, and `Town_City` are replaced with `[redacted]`.

| Field | Description |
|-------|-------------|
| `ABN` | ABN as published |
| `Charity_Legal_Name` | Legal name |
| `Other_Organisation_Names` | Other organisation names |
| `Registration_Date` | As published (`DD/MM/YYYY`), or null |
| `Date_Organisation_Established` | As published (`DD/MM/YYYY`), or null |
| `Financial_Year_End` | As published (for example `30-Jun`), or null |
| `Charity_Size` | Small, Medium, Large, or null |
| Purpose columns | Twelve flag columns, including the source ids `Advancing_natual_environment` and `Purposes_beneficial_to_ther_general_public_and_other_analogous`. Usually `Y` or null |
| Beneficiary columns | Beneficiary flags from `Aboriginal_or_TSI` through `other_gender_identities`. Usually `Y` or null |
| `PBI`, `HPC` | Public benevolent institution and health promotion charity flags |
| `Operates_in_*`, `Operating_Countries` | Operating geography |
| `Town_City`, `State`, `Postcode` | Coarse location only |
| `source` | `https://data.gov.au/data/dataset/acnc-register` |
| `attribution` | Exact line in Attribution below |

The datastore is asked for these source columns only (`fields` is an explicit list, never `all`). Extra keys are dropped again before a row is pushed.

### Inputs

| Input | Notes |
|-------|--------|
| `registeredFrom` / `registeredTo` | Optional inclusive `YYYY-MM-DD` pair on `Registration_Date`. Empty or unparseable registration dates do not match a window. |
| `days` | Optional. Used only when the date pair is omitted. Window is Australia/Sydney today minus `days` through today. Maximum **366**. If `days` is also omitted, there is no date window. Research did not set this number. |
| `state` | Optional. `State` column (ACT, NSW, NT, QLD, SA, TAS, VIC, WA). Multiple = OR. Not the `Operates_in_*` flags. |
| `size` | Optional. `Charity_Size` Small, Medium, or Large. Multiple = OR. |
| `purpose` | Optional purpose column id. A row matches if any selected flag is `Y`. Multiple = OR. |
| `beneficiary` | Optional beneficiary column id. Any selected flag `Y`. Multiple = OR. Combined with `purpose` using AND. |
| `name` | Optional case-insensitive substring on legal name and other organisation names. Multiple = OR. |
| `maxResults` | Default **200**, cap **2000**. |

Rows are sorted before the `maxResults` cut: most recently registered first. `Registration_Date` is parsed from `DD/MM/YYYY` (newest first). Rows with no parseable registration date sort last. Ties use `Date_Organisation_Established` (newest first), then ABN ascending. Datastore pages use `_id asc` only so offsets stay stable; that is not the dataset order. A lexical datastore sort on `Registration_Date` is not used, because the column is text.

A run pages with CKAN `limit`/`offset` until the resource ends or **140** datastore GETs (page size 500). `truncated` in the run log (not a dataset field) is true when the match count exceeds `maxResults`, or when that request cap or a repeated page stops the pull early. Each response body is capped at **8 MiB**.

#### Try this

One state, one size, and one purpose, capped at 5. Those three are a server-side filter. Do not run with an empty input: that pages the whole register.

```json
{
  "state": "TAS",
  "size": "Large",
  "purpose": "Advancing_Education",
  "maxResults": 5
}
```

#### Query that worked

Probed 3 Oct 2026 (PT). `limit=0` returned field ids and `total` 66,399 with zero records. A later fields-limited page confirmed `Registration_Date` as `DD/MM/YYYY`, `Charity_Size` values such as Small and Large, and flags as `Y` or empty. `filters` JSON matches a column exactly, and a list is IN. No raw response was kept.

### Privacy

Rows are organisation fields plus coarse location (`Town_City`, `State`, `Postcode`) and the attribution line. Street address lines are not requested, not stored, and not returned. Responsible Person names are not in this file and this Actor does not scrape ACNC HTML or charity profile pages. There is no email column and no phone column. If a free-text organisation field contains an email or an obvious phone number, it is replaced with `[redacted]`.

### Attribution

Attribution to: Australian Charities and Not-for-profits Commission (ACNC), Australia, ACNC Registered Charities, sourced on 3 October 2026, https://data.gov.au/data/dataset/acnc-register. Licensed under Creative Commons Attribution 3.0 Australia, http://creativecommons.org/licenses/by/3.0/au/. Changes: organisation rows only; Address_Line_1, Address_Line_2 and Address_Line_3 removed; Responsible Person names are not included. The ACNC and data.gov.au do not endorse this product.

This Actor emits an organisation-only extract with street address lines removed and Responsible Person names excluded, not the original register. The ACNC and data.gov.au do not endorse this product.

### Known limits

- data.gov.au CKAN resource `8fb32972-24e9-4c95-885e-7140be51be8a` only. No ACNC HTML, no Responsible Person pages, no other host.
- Weekly extract. A later ACNC withhold can linger until the next file.
- No default registration window. An unfiltered run pages the register, then keeps the newest `maxResults` rows.
- `Country` and `Address_Type` are in the source file and Compliance allows them. This Actor omits them so the output stays on the organisation allowlist (town, state, postcode only).

# Actor input Schema

## `registeredFrom` (type: `string`):

Optional inclusive start for Registration_Date. Must be paired with registeredTo. Overrides days. Dates in the dataset are DD/MM/YYYY; this input is YYYY-MM-DD.

## `registeredTo` (type: `string`):

Optional inclusive end for Registration_Date. Must be paired with registeredFrom.

## `days` (type: `integer`):

Optional. Used only when registeredFrom and registeredTo are omitted. Registration_Date from Australia/Sydney today minus this many days through today. If omitted, there is no date window (the whole register, then maxResults). Maximum 366. Research did not set a default.

## `state` (type: `string`):

Optional. Matches the State column (ACT, NSW, NT, QLD, SA, TAS, VIC, WA). Full names accepted. Comma-separated or JSON array. Multiple = OR. This is the address State, not Operates_in\_\*.

## `size` (type: `string`):

Optional. Charity_Size: Small, Medium, or Large. Comma-separated or JSON array. Multiple = OR.

## `purpose` (type: `string`):

Optional. One or more purpose column ids (case-insensitive), comma-separated or JSON array. A row matches if any selected flag is Y. Multiple = OR. Example: Advancing_Education. Source typo Advancing_natual_environment is the real column id.

## `beneficiary` (type: `string`):

Optional. One or more beneficiary column ids (case-insensitive), comma-separated or JSON array. A row matches if any selected flag is Y. Multiple = OR. Combined with purpose using AND.

## `name` (type: `string`):

Optional case-insensitive substring on Charity_Legal_Name and Other_Organisation_Names. Comma-separated or JSON array. Multiple = OR.

## `maxResults` (type: `integer`):

Cap on dataset items after filters and sort. Default 200, maximum 2000.

## Actor input object example

```json
{
  "state": "NSW",
  "maxResults": 50
}
```

# Actor output Schema

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

Organisation-only ACNC charity rows (street address lines removed; Responsible Person names excluded) written to the default dataset.

# 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 = {
    "state": "NSW",
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("spider355/acnc-charity-register").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 = {
    "state": "NSW",
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("spider355/acnc-charity-register").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 '{
  "state": "NSW",
  "maxResults": 50
}' |
apify call spider355/acnc-charity-register --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,spider355/acnc-charity-register"
        }
    }
}
```

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/b8rKMnRGsHHfqvLdg/builds/wVLB6x7F5paIUWfx5/openapi.json
