# TruGrid AU — Australian Location Intelligence (`trustats/trugrid-au`) Actor

Australian location intelligence for retail site selection and franchise planning. Enter an address, suburb or postcode to compare demographics, purchasing power and business context, rank nearby areas, and export clean CSV/JSON.

- **URL**: https://apify.com/trustats/trugrid-au.md
- **Developed by:** [TruStats](https://apify.com/trustats) (community)
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 88.9% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$0.99 / 📍 neighbourhood query

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

### 📍 Australian Location Intelligence for Retail Site Selection

**Research a business location before committing to it.** TruGrid AU turns an Australian address, suburb, postcode or map point into neighbourhood profiles or ranked nearby areas. Combine **Australian demographic data, purchasing-power indicators, places counts and business-registration context** for retail site selection, franchise research and commercial-property analysis.

- **Profile a neighbourhood:** compare population, purchasing power and local activity.
- **Rank nearby areas:** choose from 20 business presets, including cafés, retail, tutoring and healthcare.
- **Use the results immediately:** readable result cards, clean JSON/CSV and a ZIP package; API access for your own applications.

Each row represents a small map grid cell, not an individual shop. A point query checks up to **37 nearby cells**; coverage and preset rules determine the delivered results.

### 🚀 How to use TruGrid AU

1. 📝 [Open Input](https://console.apify.com/actors/SI2AFNaKHg0usqMoH/input) and choose **Neighbourhood profile** or **Rank nearby areas**. Leave **Business preset** empty for a profile; select one for ranking.
2. 📍 Enter one Australian location, such as **Chatswood NSW 2067**, an address or a postcode. Leave **City reference point** empty when typing. Alternatively, use a city reference, coordinates or H3 IDs; fill only one method.
3. 📦 Choose a **Result package**, review **Pricing** and your spending cap, then run. Optional sections can be skipped; validation starts OFF in a fresh form.
4. 📊 Open **Output → Results** for the delivered areas and scores. Download clean JSON/CSV or the data package with source notices.

> **Put your results to work.** Upload your exported results to ChatGPT, Gemini or another AI tool to develop professional, location-specific business recommendations grounded in the supplied data.

**Pricing:** see the Pricing tab for current rates. Billing is per valid completed query, including a valid empty answer; Apify platform costs may apply.

### 📊 Australian demographic data and location results

Choose the information that fits your research. Every row includes a grid ID and Australian statistical-region identifiers, making results easy to join to your own locations.

| Result package | What you receive | Typical use |
| --- | --- | --- |
| **Basic neighbourhood** | Population and density estimates, purchasing-power index, total places count | Compare proposed retail sites or enrich a location list |
| **Commercial context** | Population, purchasing power, places and allocated ABN/company-registration measures | Commercial-property research, franchise screening and B2B territory analysis |
| **Audience context** | Regional professional/education shares, residential rent/mortgage context and a quality flag | Add neighbourhood context to an audience or site-selection brief |

**Rankings add scores** to your chosen package. Results open as cards, with all business fields and score components available on the same page. JSON/CSV retain full numeric precision and omit repeated order IDs, checksums and licence text. The ZIP includes source notices once.

Population is **2021 Census-based, allocated to 2026 geography**. Scores guide further research; they are not revenue forecasts.

<details>
<summary>View the workflow illustration</summary>

![Australian retail site selection workflow: enter a location, receive neighbourhood profiles or rankings, then compare areas and investigate sites.](https://api.apify.com/v2/key-value-stores/IWq7cTrftdsHGgL1D/records/workflow-en-787f8df4977d.png)

Illustrative workflow, not a captured map result or a recommendation of specific premises.

</details>

<details>
<summary>Exact output fields, score components and export options</summary>

#### Output fields by package

| Package | Total columns | Additional returned fields |
| --- | --- | --- |
| **`profile_basic`** | 7 | `population_total`, `pop_density_per_sqkm`, `purchasing_power_index`, `poi_total_count` |
| **`commercial_context`** | 10 | `population_total`, `purchasing_power_index`, `poi_total_count`, `abn_active_count`, `company_count`, `new_reg_5yr_count`, `survival_rate_5yr` |
| **`audience_context`** | 8 | `sa2_managers_professionals_share`, `sa2_university_degree_share`, `sa2_median_rent_weekly_2021`, `sa2_median_mortgage_repayment_monthly_2021`, `abs_feature_quality_flag` |

Choose one package per query. A ranking adds the four score columns below. Presets can use other variables internally, including category-specific places and brand anchors, without exporting them. Arbitrary column selection is not supported.

#### Understanding ranking scores

| Column | Meaning |
| --- | --- |
| `base_score` | Weighted sum of the preset's base inputs, after your overrides |
| `abs_feature_score_100` | Regional audience score using national SA2 percentiles, when configured; otherwise null |
| `abs_score_boost` | Regional audience contribution, when included by the preset |
| `final_score` | Base score plus audience contribution; used to rank cells |

`final_score` is not a 0–100 rating or success probability. Compare scores using the same strategy, weights and data version. The highest-ranked cell is a research candidate, not a verified available premises. Equal scores are ordered by ascending `h3_index`.

Profiles are ordered by H3 ID. Rankings are ordered by descending final score, then H3 ID for ties. Compare scores using the same preset, weights and data version. Audience context can be shared by multiple cells within the same statistical region.

#### Downloading and developing with the results

Use the Output links **Clean JSON**, **CSV**, **Data package** and **Sources & data notes**. The Results page also contains downloads. **Dataset (API/export)** provides the same business rows through the native Dataset, with Overview, Commercial context, Audience context and Scores views.

For software integrations, read the clean export or Dataset rows. **Query result or status (technical)** retains the original `OUTPUT` envelope, including `result.returned_count`, `result.truncated`, `result.scope_executed`, versions, applied strategy, coverage and warnings. Preserve that record for reproducibility and order recovery. Check the outcome before assuming `result.rows` exists.

</details>

### 💳 Pricing

The **Pricing tab** is the source for current query prices and promotions. A valid completed query has one business query event, whether it returns 1–37 rows or no qualifying rows. There is no additional business query fee per row.

Validation-only checks, unresolved/ambiguous location lookups and coverage/quality rejections do not trigger the business query event. Apify runtime, storage or request costs can still apply.

<details>
<summary>Request limits, optional validation and order recovery</summary>

#### Optional validation

Expand the final **Validation and testing — Optional** section and turn **Validate only** ON to check a request without receiving data rows or a business query fee. Its response is available in Results and the technical status JSON. Leave it OFF for normal data requests and recovery.

A fresh form prefills this switch OFF. Existing tasks or saved inputs can retain an earlier value. JSON/API clients should set `dry_run` explicitly; omitting it defaults to validation. Validation does not guarantee that a later ranking will have matches.

#### Request limits

Per buyer: 6 new requests per minute and 60 per UTC day. Shared across buyers: 30 per minute and 500 per UTC day. Validation and unsuccessful coverage checks count towards these limits; paid recovery does not consume a new-query allowance.

Purchases and recovery use the same individual buyer account. Organisation/team purchasing is not supported in this public beta.

#### Recover an interrupted order

Keep the original `order_id` from `ORDER_STATE`. Recover it rather than purchasing the query again:

```json
{
  "action": "resume",
  "dry_run": false,
  "order_id": "REPLACE_WITH_YOUR_ORIGINAL_ORDER_ID"
}
```

Omit location, operation, preset, package, weights, filters and limit. Recovery retains the original criteria. An already-paid result has no new business query fee; a never-charged order may receive its first charge during recovery. An existing charge attempt is not issued again.

If the response says `recovery.action: "resurrect_original_run"`, open its original run link and choose **Actions → Resurrect**. If that run is unavailable or payment remains unresolved, contact support with the order ID and run link.

</details>

### ❓ Site selection FAQ

#### Can I analyse an Australian address, suburb or postcode?

Yes. Enter English location text, preferably including state and postcode. Major-city shortcuts use reference points; other text uses Photon/OpenStreetMap. Matches and data coverage are not guaranteed. An ambiguous result provides candidate coordinates to inspect; refine the text or use the verified coordinates.

A suburb or postcode selects a point and its neighbourhood, **not the whole suburb or postcode area**. Door-to-door accuracy and property boundaries are not certified. You can also enter latitude/longitude or 1–37 valid H3 resolution 9 IDs.

#### How large is the search neighbourhood?

A point query uses three H3 rings (`k_ring=3`): up to 37 small cells, approximately **3.9 km² in total using global average cell area**. Actual area varies. One resolution 9 cell averages about 0.105 km². This is not a 3 km radius or a walking/driving catchment.

To study a wider market, compare additional centres in separate queries, each subject to Pricing. [H3 area reference](https://h3geo.org/docs/core-library/restable/).

#### Is this 2026 population, live footfall or a list of shops?

The population measure is 2021 Census-based, mapped to 2026 geography. Places and registration measures are area-level indicators. Live footfall, named-business/contact lists, available premises, commercial rents and complete Gold-table downloads are not returned.

#### Why did my retail location ranking return no results?

A valid empty ranking means no cells passed the executed conditions; it does not establish that no stores or opportunities exist. **Output → Results** shows the classified reason, scope and applicable next steps. Coverage failures, unresolved locations and input errors have their own guidance.

<details>
<summary>See the boutique-fashion example and ways to adjust a zero-row ranking</summary>

The boutique-fashion preset screens for purchasing-power index ≥80 and population density ≥2,500 people/km². Scoring candidates also require allocated population >50 and places-record count >2.

First consider a Neighbourhood profile, with Business preset left empty, to inspect the underlying data. To retain the fashion scoring model but remove the first two minima, submit a new request such as:

```json
{
  "action": "create",
  "dry_run": false,
  "operation": "score",
  "location_text": "Chatswood NSW 2067",
  "field_set": "commercial_context",
  "preset_id": "symbiotic_boutique_fashion_sydney_v1",
  "hard_filters": {
    "min_purchasing_power_index": 0,
    "min_pop_density_per_sqkm": 0
  }
}
```

The other candidate, coverage and quality rules remain; matches are not guaranteed. Changed criteria create a new billable query, not recovery of the old order. The result page supplies examples based on the request when sufficient context is available.

For specialist retail, compare shopping streets or commercial centres as alternative points. The Actor does not infer remoteness, a specific boundary problem or absence of category stores from zero ranking rows alone. Missing coverage must not be read as zero demand.

</details>

### 🔌 Location intelligence API and advanced options

Use the Actor's **API** tab for generated calling examples. Here is a complete JSON input for a neighbourhood profile:

```json
{
  "action": "create",
  "dry_run": false,
  "operation": "profile",
  "location_text": "Chatswood NSW 2067",
  "field_set": "profile_basic"
}
```

This requests data and follows Pricing. Set `dry_run: true` only when you want validation instead. Normal DaaS queries do not call an LLM; uploading exports to an AI tool is a separate step you control.

<details>
<summary>Input reference, coordinates/H3 examples and optional customisation</summary>

#### Input reference

| Field | When to use it | Accepted values |
| --- | --- | --- |
| `action` | Always | `create` for a query; `resume` for an existing order |
| `dry_run` | Always recommended explicitly | `true` to validate; `false` to execute or resume. Set it explicitly in JSON/API requests; the fresh form starts with validation OFF. |
| `operation` | Create | `profile` or `score` |
| `scope` | Create, when using explicit geography | Coordinates with `k_ring: 3`, or 1–37 H3 resolution 9 IDs; use this instead of the ordinary location fields |
| `location_id` / `location_text` | Alternatives to other location methods | A city reference ID, or English Australian place/address/postcode text |
| `latitude` + `longitude` | Ordinary coordinate controls | Two decimal numbers; selects the centre cell plus three H3 rings |
| `h3_cells` | Ordinary H3 text box | 1–37 resolution 9 IDs separated by commas, spaces or new lines |
| `field_set` | Optional on create | `profile_basic` (default), `commercial_context`, `audience_context` |
| `preset_id` | Required for score | Exact industry preset ID; omit for profile |
| `limit` | Advanced JSON/API only | 1–37 rows; default 37 |
| `hard_filters` | Advanced JSON/API only | Allowlisted numeric `min_`/`max_` thresholds; share values use 0–1 fractions |
| `base_weights` | Advanced scoring JSON/API only | Add or replace allowed base-variable weights, from -100 to 100; zero disables that variable's scoring contribution |
| `request_key` | Optional on create | Idempotency key; reuse only with the same canonical request |
| `order_id` | Required for resume | Original ID saved in `ORDER_STATE` |
| `product_mode` | Optional | `daas` |

For a new query, choose exactly one location method: `location_id`, `location_text`, the pair `latitude`/`longitude`, `h3_cells`, or advanced `scope`. Leave the others blank. Profiles require no business preset; rankings require one. For recovery, provide only the original order ID and recovery controls.

#### Coordinates or your own H3 cells

Replace `location_text` in the example above with either a coordinate scope:

```json
{
  "type": "circle",
  "latitude": -33.796,
  "longitude": 151.181,
  "k_ring": 3
}
```

or a cell scope:

```json
{
  "type": "h3",
  "cells": ["89be0e27473ffff", "89be0e2740bffff", "89be0e2740fffff"]
}
```

These are the values for the `scope` field, not standalone Actor inputs. Supplied cells may be separate candidate areas; duplicates resolve to one cell. Coordinates do not move automatically to a nearby city shortcut. Whole-SA2 input and custom polygons are not supported.

The form's advanced scope editor contains an editable example, inactive until **Use advanced JSON scope** is enabled. Clear other location methods before enabling it. Existing API `scope` requests without that switch remain supported.

#### Additional filters and weights

The ordinary form uses a preset and returns up to 37 cells. `limit`, `hard_filters` and `base_weights` are advanced JSON/API controls, hidden from the form; a smaller limit does not reduce the query price or search scope.

In a score request, add `"base_weights": {"purchasing_power_index": 1.0}` to replace that base weight. Other weights remain unchanged; zero disables a contribution. Allowed values are −100 to 100, using only allowlisted variables.

Use `hard_filters` for allowlisted numeric `min_`/`max_` thresholds. These override the same preset filter key; other preset filters and scoring-candidate rules remain. Share filters use fractions from 0 to 1. Language/ancestry-based audience selection and scoring are not enabled.

</details>

<details>
<summary>All 20 business scoring presets</summary>

Use an exact `preset_id` with `operation: "score"`. The result package is independent of the preset.

| Concept | Preset ID |
| --- | --- |
| Coffee and bakery | `boutique_coffee_bakery` |
| After-school tutoring | `after_school_tutoring` |
| Clinic screening—dental competition by default | `allied_health_clinic` |
| Asian casual / quick-service food | `qsr_asian_casual` |
| Discount pharmacy | `symbiotic_discount_pharmacy_sydney_v1` |
| Boutique Pilates | `symbiotic_boutique_pilates_sydney_v1` |
| Gourmet grocery | `symbiotic_gourmet_grocer_sydney_v1` |
| Premium childcare | `symbiotic_premium_childcare_sydney_v1` |
| Boutique fashion | `symbiotic_boutique_fashion_sydney_v1` |
| Boutique hotel | `symbiotic_boutique_hotel_sydney_v1` |

**More sector presets**

| Concept | Preset ID |
| --- | --- |
| Specialty coffee | `symbiotic_specialty_coffee_sydney_v1` |
| Premium bakery | `symbiotic_premium_bakery_sydney_v1` |
| Fine dining | `symbiotic_fine_dining_sydney_v1` |
| Japanese restaurant | `symbiotic_japanese_restaurant_v1` |
| Burger / mass-market QSR | `symbiotic_mass_burger_sydney_v1` |
| Cocktail bar | `symbiotic_cocktail_bar_sydney_v1` |
| K–12 tutoring | `symbiotic_k12_tutoring_sydney_v1` |
| Specialist medical | `symbiotic_specialist_medical_sydney_v1` |
| Outdoor / cycling retail | `symbiotic_outdoor_cycling_sydney_v1` |
| Retail bank | `symbiotic_retail_bank_sydney_v1` |

Presets are screening hypotheses, not empirically calibrated sales or demand forecasts. The clinic preset's default competition penalty targets dentistry. Some IDs retain Sydney from their design origin; the selected location sets the query area, and use elsewhere does not establish local calibration.

</details>

### 📜 Data sources, privacy and licences

TruGrid AU combines Australian Bureau of Statistics information, Overture Places and aggregated ABR/ASIC registrations. Outputs are provided under **[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)** where applicable, with upstream attribution and licence requirements. Include source notices when redistributing; the ZIP package contains them.

Results are restricted to your Apify account by default. For help, use the Actor's **Issues** tab and include the run link and order ID if available. Keep credentials and confidential inputs private.

<details>
<summary>Data methods, coverage, privacy and result retention</summary>

- **Population/density:** allocated from 2021 Census-based estimates to 2026 geography; not measured 2026 population or footfall.
- **Purchasing power:** modelled from 2022–23 income and published Sydney CPI adjustments through 2026 Q3; not measured current spending. A fallback zero does not establish poverty.
- **Places:** supplied record counts are proxies; zero is not verified absence of competition. Category/brand counts can overlap with totals.
- **Registrations:** postcode/POA aggregates allocated using area weights and a places mask. Counts may be fractional; company counts can include inactive entities. Registration flows are not store openings or measured cohort survival.
- **Audience/housing:** 2021 statistical-region context transferred to 2026 geography and repeated across assigned cells. Rent/mortgage values concern residential households, are not price-extrapolated and are not commercial rents or disposable-income estimates.

Coverage is qualified rather than complete nationwide. Christmas, Cocos and Norfolk Islands have known places gaps; Other Territories are not accepted by current query rules. Quarantined postcode records can affect interpretation. Inspect coverage and warnings.

Sum counts only across distinct, non-overlapping cells within their modelling limits. Deduplicate overlapping queries by H3 ID. Do not sum scores, indices, density, shares or medians, or add overlapping registration/places measures to manufacture a total.

Apify and TruGrid AU's analysis service process your location and query settings. Major-city shortcuts and coordinate/H3 inputs do not need an external geocoder. Other location text is sent to [Photon](https://github.com/komoot/photon), using [OpenStreetMap contributors](https://www.openstreetmap.org/copyright) information under ODbL. No Apify token, order information or business result is sent with the lookup. Avoid unnecessary personal information.

A result can normally be recovered from TruGrid AU for 30 days; export it and the notices before expiry. Copies stored in Apify follow your plan and settings. Billing/support records and encrypted backups have separate retention procedures; expiry does not delete every copy. Resolve pending payment issues and save your recovery ID before deleting storage. [Apify storage settings](https://docs.apify.com/storage).

</details>

<details>
<summary>Source attribution, modifications and complete licence notices</summary>

Delivered tables and numeric rankings are provided under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) to the extent copyright or similar rights apply. You may use them commercially and share/adapt them subject to the applicable attribution and ShareAlike terms. Upstream source licences remain in force. Query fees cover computation and delivery, with no exclusive rights in underlying open data. This data licence does not release the API implementation or strategy source.

ABS Census, income and CPI components retain CC BY 4.0 attribution. The exact ABS SA2/POA 2026 ZIP metadata declares CC BY-SA 4.0; this release conservatively honours it for boundary-derived mappings and allocations. ABR/ASIC source-batch catalogue snapshots specify CC BY 3.0 Australia. Overture Places sources carry CDLA Permissive 2.0, Apache 2.0 (Foursquare) or CC0 (AllThePlaces). No source endorsement is implied.

Changes include geography correspondence/H3 allocation; income-factor/CPI extrapolation and purchasing-power proxies; filtered POI category counts and masks; postcode/POA registry allocation and exclusions; weighted scores and rankings. Original polygons, individual registry/POI records and program source are not delivered.

The original result's `coverage.licensing` contains source titles, attribution, links, modifications, full applicable licence texts and notices. **Sources & data notes** presents them once per query; `SOURCE_NOTICES.json` is the machine-readable companion. Clean exports contain business fields only. When redistributing, include the source notices; the ZIP data package includes them automatically. The data licence and the field package remain unchanged.

- Australian Bureau of Statistics, Commonwealth of Australia. Contains modified Census 2021 data. [2021 Census General Community Profile, SA2 for Australia](https://www.abs.gov.au/census/find-census-data/datapacks/download/2021_GCP_SA2_for_AUS_short-header.zip); [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/).
- Australian Bureau of Statistics, Commonwealth of Australia. Contains modified income data and modelled extrapolations. [Personal Income in Australia, 2022-23](https://www.abs.gov.au/statistics/labour/earnings-and-working-conditions/personal-income-australia/2022-23); [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/).
- Australian Bureau of Statistics, Commonwealth of Australia. CPI used in derived historical-income adjustments. [Consumer Price Index, Sydney, published quarters through 2026 Q3](https://www.abs.gov.au/statistics/economy/price-indexes-and-inflation/consumer-price-index-australia); [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/).
- Australian Bureau of Statistics, Commonwealth of Australia. Boundaries used for derived H3 assignments and spatial allocation. [ASGS Edition 4 SA2 and POA 2026 GDA2020 boundaries](https://www.abs.gov.au/statistics/standards/australian-statistical-geography-standard-asgs/edition-4-july-2026-june-2031/access-and-downloads/digital-boundary-files); [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/).
- Australian Business Register, Commonwealth of Australia. Contains aggregated, spatially allocated and modified registry data. [Australian Business Register, ABN Bulk Extract, 2026-10-28](https://data.gov.au/data/dataset/abn-bulk-extract); [CC-BY-3.0-AU](https://creativecommons.org/licenses/by/3.0/au/).
- Australian Securities and Investments Commission. Contains aggregated and modified Company Dataset records. [ASIC Company Dataset, 2026-10-27 snapshot; reference date 2026-10-28](https://data.gov.au/data/dataset/asic-companies); [CC-BY-3.0-AU](https://creativecommons.org/licenses/by/3.0/au/).
- Overture Maps Foundation and source contributors. Places filtered and aggregated to H3 category counts; no source endorsement. [Overture Maps Foundation, Places release 2026-10-21.0](https://docs.overturemaps.org/blog/2026/10/21/release-notes/); [CDLA-Permissive-2.0; Apache-2.0; CC0-1.0](https://docs.overturemaps.org/attribution/).
- H3 is developed by Uber Technologies, Inc. Software licence retained separately from the statistical data sources. [H3 geospatial indexing system](https://h3geo.org/docs/); [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0).

<details>
<summary>Foursquare attribution and complete linked NOTICE</summary>

Copyright 2024 Foursquare Labs, Inc. All rights reserved. Foursquare data was transformed to the Overture schema. Changed: 2026-03-18.

© 2026 Foursquare Labs, Inc. All rights reserved. The Foursquare OS Places dataset (the “Data”) is licensed under the Apache License, Version 2.0 (the “License”). You may not use, modify, or distribute the Data except in compliance with the License. As set forth more fully in the License, if you use, modify, or distribute the Data, you must: – provide recipients with a copy of the License. – if applicable, include prominent notices to the extent you’ve changed the Data. – preserve attribution to Foursquare, including preserving the full content of this NOTICE.txt file. To ensure appropriate attribution to Foursquare, we recommend the following: – if using/distributing the Data in flat file form as-is or after making changes/modifications: include this NOTICE.txt file, which may be modified to include an additional notice of your changes/modifications, if any. – if using/distributing the Data in API form as-is or after making changes/modifications: include a copy of the content from this NOTICE.txt file prominently in your developer documentation for such API, which may be modified to include an additional notice of your changes/modifications, if any. You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, the Data distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. We also encourage you to join our Placemaker community where you can contribute and provide suggestions to improve the accuracy of the Data for future releases for yourself and others.

</details>

<details>
<summary>Apache-2.0 licence text</summary>

```text

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
```

</details>

<details>
<summary>CDLA-Permissive-2.0 licence text</summary>

```text
Community Data License Agreement - Permissive - Version 2.0

This is the Community Data License Agreement - Permissive, Version 2.0 (the "agreement"). Data Provider(s) and Data Recipient(s) agree as follows:

1. Provision of the Data

1.1. A Data Recipient may use, modify, and share the Data made available by Data Provider(s) under this agreement if that Data Recipient follows the terms of this agreement.

1.2. This agreement does not impose any restriction on a Data Recipient's use, modification, or sharing of any portions of the Data that are in the public domain or that may be used, modified, or shared under any other legal exception or limitation.

2. Conditions for Sharing Data

2.1. A Data Recipient may share Data, with or without modifications, so long as the Data Recipient makes available the text of this agreement with the shared Data.

3. No Restrictions on Results

3.1. This agreement does not impose any restriction or obligations with respect to the use, modification, or sharing of Results.

4. No Warranty; Limitation of Liability

4.1. All Data Recipients receive the Data subject to the following terms:

THE DATA IS PROVIDED ON AN "AS IS" BASIS, WITHOUT REPRESENTATIONS, WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

NO DATA PROVIDER SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE DATA OR RESULTS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

5. Definitions

5.1. "Data" means the material received by a Data Recipient under this agreement.

5.2. "Data Provider" means any person who is the source of Data provided under this agreement and in reliance on a Data Recipient's agreement to its terms.

5.3. "Data Recipient" means any person who receives Data directly or indirectly from a Data Provider and agrees to the terms of this agreement.

5.4. "Results" means any outcome obtained by computational analysis of Data, including for example machine learning models and models' insights.
```

</details>

</details>

# Actor input Schema

## `action` (type: `string`):

Choose Create for a new request or Recover for an existing order. Recovery uses the original location and settings.

## `operation` (type: `string`):

Profile: descriptive data; leave Business preset EMPTY. Rank: scored shortlist; SELECT a Business preset. Switching from Rank to Profile? Clear the previously selected preset. Omit for recovery.

## `location_id` (type: `string`):

Optional ready-made centre point; NOT a city filter for the text search. Selecting Melbourne CBD means querying Melbourne CBD, not searching an address within Melbourne. To type Ringwood VIC 3134, CLEAR this dropdown first. Each reference queries nearby grid cells, not the whole city/suburb.

## `location_text` (type: `string`):

Use this box OR the city reference dropdown, never both. Example: Ringwood VIC 3134, or 1 Martin Place Sydney NSW 2000. Include state and postcode where possible. Clear coordinates and H3 fields. Search is not guaranteed: if the location needs clarification, inspect OUTPUT.location_candidates or use verified coordinates. A postcode selects a reference point, not its whole area. Non-catalogue text is sent to Photon/OpenStreetMap.

## `latitude` (type: `number`):

Coordinates alternative: enter BOTH Latitude and Longitude, e.g. -37.8113584 and 145.230639. Clear the city dropdown, place/address/postcode text and H3 IDs.

## `longitude` (type: `number`):

Enter together with Latitude, e.g. 145.230639. Leave blank when using a city reference, text search or H3 IDs.

## `h3_cells` (type: `string`):

H3 alternative within section B: paste 1–37 resolution 9 IDs separated by commas, spaces or new lines. Leave latitude, longitude and section A blank.

## `field_set` (type: `string`):

Defaults to profile_basic when omitted on a new query. All packages include H3 and SA2 identifiers. Source/licence metadata is separate from these column counts. Omit for recovery.

## `preset_id` (type: `string`):

Rank nearby areas: choose one preset (required). Neighbourhood profile: leave EMPTY; clear an earlier selection when switching to Profile. Recovery: omit. Presets support screening, not revenue forecasts; the clinic preset targets dental competition.

## `limit` (type: `integer`):

1–37 rows; a new query defaults to 37 when omitted. This limits returned rows, not the area checked. Filters can return fewer or zero rows. Omit for recovery.

## `hard_filters` (type: `object`):

Use allowed min\_/max\_ keys, for example {"min_sa2_university_degree_share":0.30} for 30%. Filters are not automatically relaxed. Omit for recovery.

## `base_weights` (type: `object`):

Ranking only. Allowed base variables accept weights from -100 to 100. Existing keys replace preset weights; new allowed keys add a contribution. Zero disables that scoring contribution. Omit for profile/recovery.

## `request_key` (type: `string`):

Create only. Reuse this key only with the same request to refer to the original order. Normally leave blank; recovery uses order_id instead.

## `order_id` (type: `string`):

Copy order_id from ORDER_STATE. Choose Recover and turn Validate only off; omit location, operation, package, preset, limit, weights and filters. If OUTPUT directs you to the original run, open it and select Actions → Resurrect.

## `product_mode` (type: `string`):

Fixed product mode: daas.

## `use_advanced_scope` (type: `boolean`):

Off: ignore the example below. On: use scope JSON as your location. Existing API scope requests without this flag remain supported.

## `scope` (type: `object`):

Editable example: replace latitude and longitude with your location; keep k_ring at 3. Enable the switch above to use it. Alternative H3 JSON: {"type":"h3","cells":\["89be0e966c7ffff"]}. For ordinary H3 input, use the text box above instead.

## `scope_template` (type: `string`):

Editable example: replace latitude and longitude with your location; keep k_ring at 3. Enable the switch above to use it. Alternative H3 JSON: {"type":"h3","cells":\["89be0e27473ffff"]}. For ordinary H3 input, use the text box above instead.

## `dry_run` (type: `boolean`):

In the form, OFF (initial setting) requests data at the price in Pricing. ON checks the input only: no data rows and no business query fee. Leave OFF for normal queries and recovery. JSON/API clients should set dry_run explicitly.

## Actor input object example

```json
{
  "action": "create",
  "location_id": "chatswood-nsw",
  "location_text": "Ringwood VIC 3134",
  "product_mode": "daas",
  "use_advanced_scope": false,
  "scope": {
    "type": "circle",
    "latitude": -33.796,
    "longitude": 151.181,
    "k_ring": 3
  },
  "scope_template": "{\n  \"type\": \"circle\",\n  \"latitude\": -33.796,\n  \"longitude\": 151.181,\n  \"k_ring\": 3\n}",
  "dry_run": false
}
```

# Actor output Schema

## `summary` (type: `string`):

The default result page: ranked areas or profiles, business indicators, expandable full fields and downloads. Only empty outcomes show explanations and revised-query examples.

## `json` (type: `string`):

Business fields only, with full numeric precision. Sources and terms accompany the data package.

## `csv` (type: `string`):

Business columns only, without repeated licence or order metadata.

## `package` (type: `string`):

JSON, CSV and complete source notices in separate companion files. Use this package when sharing data.

## `sources` (type: `string`):

Source attribution, applicable licences and methodological notes, once per query.

## `table` (type: `string`):

The same business rows in the native Dataset. The default Results page already shows them.

## `result` (type: `string`):

Original immutable delivery or status, with full metadata and recovery identifiers. The clean JSON download is the business-data-only alternative.

## `recovery` (type: `string`):

ORDER_STATE contains the original order_id once prepared. Recover that order rather than buying again. Validation or an early rejection may not create this record.

# 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 = {
    "use_advanced_scope": false,
    "scope_template": `{
  "type": "circle",
  "latitude": -33.796,
  "longitude": 151.181,
  "k_ring": 3
}`,
    "dry_run": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("trustats/trugrid-au").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 = {
    "use_advanced_scope": False,
    "scope_template": """{
  \"type\": \"circle\",
  \"latitude\": -33.796,
  \"longitude\": 151.181,
  \"k_ring\": 3
}""",
    "dry_run": False,
}

# Run the Actor and wait for it to finish
run = client.actor("trustats/trugrid-au").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 '{
  "use_advanced_scope": false,
  "scope_template": "{\\n  \\"type\\": \\"circle\\",\\n  \\"latitude\\": -33.796,\\n  \\"longitude\\": 151.181,\\n  \\"k_ring\\": 3\\n}",
  "dry_run": false
}' |
apify call trustats/trugrid-au --silent --output-dataset

```

## MCP server setup

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

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/SI2AFNaKHg0usqMoH/builds/kmTGQPXmRrgXDEKwk/openapi.json
