Find an API

Search public APIs with auth details & Postman guides

← All APIs

BC Data Catalogue API

gov · Government

Government No Auth Free & Open open_data

This API provides live access to the BC Data Catalogue. Further documentation on the API is available from http://docs.ckan.org/en/latest/ Confirm the version of the API available from the catalogue by requesting https://catalogue.data.gov.bc.ca/api/3/action/status_show. Please note that you may experience issues when submitting requests to the delivery or test environment if using this [OpenAPI specification](https://github.com/bcgov/api-specs) in other API console viewers.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Get the activity stream of an organization

Return an organization's activity stream

https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list?id=ministry-of-agriculture

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list?id=ministry-of-agriculture"
import requests
params = {
    "id": "ministry-of-agriculture"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list');
url.searchParams.set('id', 'ministry-of-agriculture');

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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list")
	q := baseURL.Query()
	q.Set("id", "ministry-of-agriculture")
	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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list")
uri.query = URI.encode_www_form({
  "id" => "ministry-of-agriculture"
})

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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list?" . http_build_query([
    "id" => "ministry-of-agriculture"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get the activity stream of an organization, HTML format

Return an organization's activity stream as HTML

https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list_html?id=ministry-of-agriculture

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list_html?id=ministry-of-agriculture"
import requests
params = {
    "id": "ministry-of-agriculture"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list_html",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list_html');
url.searchParams.set('id', 'ministry-of-agriculture');

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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list_html")
	q := baseURL.Query()
	q.Set("id", "ministry-of-agriculture")
	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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list_html")
uri.query = URI.encode_www_form({
  "id" => "ministry-of-agriculture"
})

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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_activity_list_html?" . http_build_query([
    "id" => "ministry-of-agriculture"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get names of organizations that match a query string

Return a list of organization names that contain a string

https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_autocomplete?q=ministry&limit=20

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_autocomplete?q=ministry&limit=20"
import requests
params = {
    "q": "ministry",
    "limit": "20"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_autocomplete",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_autocomplete');
url.searchParams.set('q', 'ministry');
url.searchParams.set('limit', '20');

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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_autocomplete")
	q := baseURL.Query()
	q.Set("q", "ministry")
	q.Set("limit", "20")
	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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_autocomplete")
uri.query = URI.encode_www_form({
  "q" => "ministry",
  "limit" => "20"
})

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://api.apis.guru/v2/specs/gov.bc.ca/bcdc/3.0.1/action/organization_autocomplete?" . http_build_query([
    "q" => "ministry",
    "limit" => "20"
]);
$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. See official documentation for authentication and setup.

What can you build with BC Data Catalogue API?

BC Data Catalogue 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. BC Data Catalogue 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 ↗