Find an API

Search public APIs with auth details & Postman guides

← All APIs

data.gov.au CKAN API

Australian Government · Government

Government No Auth Free & Open Open Data Datasets Government

Search and retrieve datasets from Australia's open government data portal. No authentication required for public read access.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Search datasets

Full-text search across all published datasets on the portal.

https://data.gov.au/api/3/action/package_search?q=health&rows=5

Hover any highlighted part to learn what it does

curl -X GET "https://data.gov.au/api/3/action/package_search?q=health&rows=5"
import requests
params = {
    "q": "health",
    "rows": "5"
}
response = requests.get(
    "https://data.gov.au/api/3/action/package_search",
    params=params,
)
print(response.json())
const url = new URL('https://data.gov.au/api/3/action/package_search');
url.searchParams.set('q', 'health');
url.searchParams.set('rows', '5');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://data.gov.au/api/3/action/package_search")
	q := baseURL.Query()
	q.Set("q", "health")
	q.Set("rows", "5")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://data.gov.au/api/3/action/package_search")
uri.query = URI.encode_www_form({
  "q" => "health",
  "rows" => "5"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://data.gov.au/api/3/action/package_search?" . http_build_query([
    "q" => "health",
    "rows" => "5"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET List all dataset IDs

Returns a flat list of every published dataset ID on the portal.

https://data.gov.au/api/3/action/package_list

Hover any highlighted part to learn what it does

curl -X GET "https://data.gov.au/api/3/action/package_list"
import requests
response = requests.get(
    "https://data.gov.au/api/3/action/package_list",
)
print(response.json())
const url = 'https://data.gov.au/api/3/action/package_list';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://data.gov.au/api/3/action/package_list"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://data.gov.au/api/3/action/package_list")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://data.gov.au/api/3/action/package_list";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get dataset detail

Returns full metadata for a single dataset by its ID.

https://data.gov.au/api/3/action/package_show?id=9e84954a-b22e-4b2e-8a96-c27e4b4f1fdc

Hover any highlighted part to learn what it does

curl -X GET "https://data.gov.au/api/3/action/package_show?id=9e84954a-b22e-4b2e-8a96-c27e4b4f1fdc"
import requests
params = {
    "id": "9e84954a-b22e-4b2e-8a96-c27e4b4f1fdc"
}
response = requests.get(
    "https://data.gov.au/api/3/action/package_show",
    params=params,
)
print(response.json())
const url = new URL('https://data.gov.au/api/3/action/package_show');
url.searchParams.set('id', '9e84954a-b22e-4b2e-8a96-c27e4b4f1fdc');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://data.gov.au/api/3/action/package_show")
	q := baseURL.Query()
	q.Set("id", "9e84954a-b22e-4b2e-8a96-c27e4b4f1fdc")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://data.gov.au/api/3/action/package_show")
uri.query = URI.encode_www_form({
  "id" => "9e84954a-b22e-4b2e-8a96-c27e4b4f1fdc"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://data.gov.au/api/3/action/package_show?" . http_build_query([
    "id" => "9e84954a-b22e-4b2e-8a96-c27e4b4f1fdc"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. Create a new GET request to https://data.gov.au/api/3/action/package_search
  2. In the Params tab add: q = health, rows = 5
  3. No Auth configuration needed — leave Authorization as 'No Auth'
  4. Send — the response body has a result.results[] array with dataset metadata
  5. Tip: copy an id value from the results and use it in package_show to get full dataset details

What can you build with data.gov.au CKAN API?

data.gov.au CKAN API is a Government API. Developers commonly use government APIs for:

  • surfacing public datasets in citizen-facing apps
  • building transparency and civic engagement tools
  • accessing legislation, court records, and official data
  • powering research and journalism tools
  • creating compliance and regulatory monitoring dashboards

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. data.gov.au CKAN API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗