# Canada GHGRP Facility Greenhouse Gas Emissions (`likable_washbowl/canada-ghgrp-facility-emissions`) Actor

Clean, structured facility greenhouse gas emissions from Canada's Greenhouse Gas Reporting Program (GHGRP, ECCC), 2004 to latest. CO2, CH4, N2O, HFCs, PFCs and SF6 in tonnes and CO2e per facility per year. Filter by year, province, company, NAICS, gas, minimum CO2e or distance. Open Government…

- **URL**: https://apify.com/likable_washbowl/canada-ghgrp-facility-emissions.md
- **Developed by:** [Ronnie](https://apify.com/likable_washbowl) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Canada GHGRP Facility Greenhouse Gas Emissions (CO2e by Facility)

Get **clean, structured greenhouse gas emissions for every large industrial facility in Canada** from Environment and Climate Change Canada's **Greenhouse Gas Reporting Program (GHGRP)**, Canada's equivalent of the US EPA GHGRP. Each row is one facility for one year, from **2004 to the latest published year**: **total emissions in tonnes CO2e**, plus **CO2, methane (CH4), nitrous oxide (N2O), HFCs, PFCs, and SF6** by gas, with reporting company, NAICS industry, address, coordinates, and the calculation methods used. Filter by **year, province, company or facility, NAICS industry, gas type, minimum CO2e, or distance from your site**. Export to JSON, CSV, or Excel, or connect via API, webhooks, Make, Zapier, or Google Sheets.

Built and maintained by an ecologist (MSc Biology). The bilingual 82-column government file is decoded into clean English fields, the largest emitters come first, and you don't need to download or clean a 10 MB CSV.

> **Independent project. Not affiliated with, endorsed by, or an official product of the Government of Canada** or Environment and Climate Change Canada. Data is republished under the Open Government Licence – Canada (see [Licence & attribution](#licence--attribution)).

Part of the **Canadian Environmental Data** family. See [the related Actors](#canadian-environmental-data-family).

***

### What data can I get?

| | |
|---|---|
| **Source** | GHGRP – Greenhouse Gas Emissions Data by Facility, ECCC |
| **Years** | 2004 to 2024 (the newest published year is picked up automatically as ECCC releases it) |
| **Size** | ~20,700 facility-year rows in total. ~1,880 facilities reported in 2024, totalling about 292 Mt CO2e. |
| **Gases** | CO2, CH4, N2O, HFCs, PFCs, SF6 (tonnes and tonnes CO2e). From 2022, CO2 from biomass combustion is reported separately and excluded from the total. |
| **Coverage** | Facilities above the reporting threshold (the threshold has dropped over time, so 2004–2016 lists fewer facilities than 2017 onward). |
| **Freshness** | Every run downloads the current official file. |

### Who uses it?

- **ESG & sustainable-finance analysts**: screen portfolio companies' Canadian facilities for scope 1 emissions and track them year over year.
- **Climate and carbon consultants**: benchmark a site against industry peers and list every large emitter within X km.
- **Journalists, NGOs & researchers**: find the biggest emitters by province, industry, or company, and follow one facility from 2004 to today.
- **Supply-chain and procurement teams**: check the reported emissions of Canadian suppliers.
- **Carbon-market and policy analysts**: model output-based pricing and facility coverage by NAICS code and gas.
- **Sales & business development (energy efficiency, capture, fuel switching)**: build target lists of large emitters by industry and region.

### How to use it

1. Click **Try for free** / **Start**.
2. Optionally choose a **Reporting year** (default: latest published, or *All years* for trends).
3. Add filters: provinces, company keywords, NAICS industry, gas types, a minimum CO2e, or a radius around a point.
4. Run. Results appear in the **Output** tab, with views for *Emissions by facility*, *Emissions by gas*, and *Facility & company details*.

#### Input examples

**The 50 largest emitters in Canada in the latest year (default, about 5 seconds)**

```json
{ "maxItems": 50 }
```

**A company's facilities across all years (trend)**

```json
{ "reportYear": "all", "keywords": ["Suncor"], "maxItems": 500 }
```

**Facilities within 30 km of a site (screening memo)**

```json
{ "nearLatitude": 43.25, "nearLongitude": -79.85, "radiusKm": 30, "maxItems": 500 }
```

**Steel plants in Ontario, 2019**

```json
{ "reportYear": "2019", "provinces": ["ON"], "naicsCodes": ["3311"], "maxItems": 100 }
```

**Facilities reporting SF6 and emitting at least 100,000 t CO2e**

```json
{ "gases": ["SF6"], "minTotalCo2eTonnes": 100000, "maxItems": 200 }
```

**Watch-list of facilities across all years**

```json
{ "reportYear": "all", "ghgrpIds": ["G10091", "G10011", "G10276"], "maxItems": 500 }
```

#### Input reference

| Field | Description |
|---|---|
| `reportYear` | `latest` (default), `all`, or `2004` to `2024` |
| `maxItems` | Maximum records to return (default 50). Each record is one billable result. |
| `sortBy` | `co2eDesc` (default, largest total CO2e first) or `fileOrder` (fastest) |
| `provinces` | 2-letter codes: AB, BC, MB, NB, NL, NS, NT, NU, ON, PE, QC, SK, YT |
| `keywords` | Any-match, case-insensitive text in company legal or trade name, facility name, or city |
| `naicsCodes` | NAICS code prefixes, for example `2111` oil & gas, `2211` power, `3311` iron & steel, `3273` cement, `3251` basic chemicals, `5622` waste treatment |
| `ghgrpIds` | Specific GHGRP facility IDs (for example `G10187`) |
| `gases` | `CO2`, `CH4`, `N2O`, `HFC`, `PFC`, `SF6`: the facility must have reported a non-zero quantity of every selected gas |
| `minTotalCo2eTonnes` | Minimum total emissions in tonnes CO2e |
| `nearLatitude`, `nearLongitude`, `radiusKm` | Proximity search in WGS84 decimal degrees. Radius in km (default 25). |

### Output

Each record is one flat JSON row. Every row includes `sourceUrl` (the exact official file), `sourceDataset`, `licence`, `attribution`, and `retrievedAt` (UTC timestamp), which gives you a clear audit trail for reports.

| Field | Example | Notes |
|---|---|---|
| `recordId` | `2024-G10187` | year-GHGRP ID (stable key for joins; strip the year prefix for trends) |
| `reportYear`, `ghgrpId`, `npriId` | `2024`, `G10187`, `2230` | `npriId` links to the NPRI Actor in this family (null if none) |
| `facilityName`, `companyName`, `companyTradeName`, `companyBusinessNumber` | `Mildred Lake and Aurora Plant Sites`, `Suncor Energy (Syncrude) Operating Inc` | Reporting company as filed that year |
| `address`, `city`, `province`, `provinceName`, `postalCode` | `Fort McMurray`, `AB`, `Alberta` | |
| `latitude` / `longitude` | `57.04083` / `-111.61583` | WGS84. Null where ECCC reports no coordinates (all rows before 2017, a few later). |
| `distanceKm` | `3.33` | Only with a proximity search |
| `naicsCode`, `naicsDescription` | `211142`, `Mined oil sands extraction` | |
| `totalCo2eTonnes` | `13677658.28` | Total facility emissions in tonnes CO2e (excludes CO2 from biomass) |
| `co2Tonnes` | `13310854.88` | |
| `ch4Tonnes`, `ch4Co2eTonnes` | `10998.85`, `307967.82` | |
| `n2oTonnes`, `n2oCo2eTonnes` | `219.38`, `58136.55` | |
| `hfcCo2eTonnes`, `pfcCo2eTonnes` | `699.03`, null | HFC and PFC totals in CO2e |
| `sf6Tonnes`, `sf6Co2eTonnes` | | |
| `co2FromBiomassTonnes` | `5225.19` | From 2022. Not included in the total. |
| `methodEmissionFactors`, `methodEngineeringEstimates`, `methodMassBalance`, `methodDirectMeasurement`, `methodQuantificationRequirements` | `true` / null | Calculation methods the facility reported (null = not stated or not applicable) |
| `explorerUrl` | | ECCC's official facility emissions explorer |

#### Sample output row

```json
{
  "recordId": "2024-G10187",
  "reportYear": 2024,
  "ghgrpId": "G10187",
  "npriId": null,
  "facilityName": "Mildred Lake and Aurora Plant Sites",
  "companyName": "Suncor Energy (Syncrude) Operating Inc",
  "city": "Fort McMurray",
  "province": "AB",
  "latitude": 57.04083,
  "longitude": -111.61583,
  "naicsCode": "211142",
  "naicsDescription": "Mined oil sands extraction",
  "totalCo2eTonnes": 13677658.28,
  "co2Tonnes": 13310854.88,
  "ch4Co2eTonnes": 307967.8196,
  "n2oCo2eTonnes": 58136.548,
  "hfcCo2eTonnes": 699.0308,
  "co2FromBiomassTonnes": 5225.1896,
  "methodEmissionFactors": true,
  "methodDirectMeasurement": true,
  "licence": "https://open.canada.ca/en/open-government-licence-canada",
  "retrievedAt": "2026-09-29T05:22:43Z"
}
```

Other real rows from the same run (2024): *Suncor Energy Inc. Oil Sands*, 8.04 Mt CO2e. *Horizon Oil Sands Processing Plant* (Canadian Natural Resources), 6.02 Mt. *Firebag* (Suncor), 5.75 Mt. *ArcelorMittal Dofasco*, Hamilton, 4.16 Mt.

### Pricing

This Actor uses **pay-per-event** pricing, so you pay only for what you get:

- **Actor start:** about $0.005 per run
- **Result:** about $0.003 per record saved

Example: the default 50-record run costs about **$0.16**. Every facility for one reporting year (about 1,880 rows) costs about **$5.65**. You can cap spending with *Maximum cost per run* in the run options, and the Actor stops cleanly when the cap is reached. (Final prices are shown on the Store page.)

### Tips & limitations

- **Reported, not measured.** GHGRP quantities are what facilities report to ECCC, calculated with emission factors, engineering estimates, mass balance, or direct measurement. Only facilities above the reporting threshold are included.
- **Global warming potentials.** ECCC uses the IPCC Fifth Assessment Report values across the entire time series, so CO2e is comparable between years.
- **Biomass CO2.** CO2 from biomass combustion is shown separately from 2022 and is not part of `totalCo2eTonnes`.
- **Coordinates.** ECCC's file has no coordinates for older years (rows before 2017 return null latitude/longitude and are skipped by a proximity search). Use recent years for radius searches.
- **Company names change.** The reporting company is stored per year, so an owner change appears as a new name for the same `ghgrpId`. Use `ghgrpIds` or `npriId` for stable tracking.
- **Privacy.** ECCC's file includes public-contact names, phone numbers, and e-mail addresses. This Actor deliberately does not republish them.
- **Source-level emissions.** ECCC also publishes emissions by source category for 2022 onward. That file is not included in this version.
- A full-history run (about 20,700 rows) takes about 10 seconds.

### Licence & attribution

Data is sourced from official Government of Canada open data and used under the **[Open Government Licence – Canada](https://open.canada.ca/en/open-government-licence-canada)**, which permits commercial and non-commercial use with attribution:

- *Contains information licensed under the Open Government Licence – Canada.* Source: Environment and Climate Change Canada, [Greenhouse Gas Reporting Program (GHGRP) – Greenhouse Gas (GHG) Emissions Data by Facility](https://open.canada.ca/data/en/dataset/a8ba14b7-7f23-462a-bdbb-83b0ef629823).

Each output row carries an `attribution` field so downstream users stay compliant. This Actor is **independent and is not affiliated with or endorsed by the Government of Canada**. Use of the licence does not imply any endorsement.

### Canadian Environmental Data family

Combine these Actors for a complete Canadian site screening or ESG profile:

- **[Canada Impact Assessment & Species at Risk Critical Habitat Data](https://apify.com/likable_washbowl/canada-environmental-data)**: federal impact assessment projects and SARA critical habitat, with proximity search.
- **[Canada NPRI Pollutant Release Data](https://apify.com/likable_washbowl/canada-npri-pollutant-releases)**: facility releases to air, water, and land by substance. Join on `npriId`.
- **[Canada Federal Contaminated Sites & Protected Areas Data](https://apify.com/likable_washbowl/canada-contaminated-sites-protected-areas)**: the Federal Contaminated Sites Inventory and protected and conserved areas (CPCAD), with proximity search.
- **[Canada GHGRP Facility Greenhouse Gas Emissions](https://apify.com/likable_washbowl/canada-ghgrp-facility-emissions)** (this Actor): facility CO2e emissions by gas, 2004 to latest.

### FAQ

**Is this scraping? Is it legal?** No website is scraped. The Actor downloads the official GHGRP data file listed on open.canada.ca, which is released under the Open Government Licence – Canada.

**How is this different from the US GHGRP Actors?** This is Canada's own program, run by ECCC, with different facilities, thresholds, and fields. If you track US and Canadian facilities, use both.

**How do I combine it with pollutant data?** Many rows carry an `npriId`. Join it to the *Canada NPRI Pollutant Release Data* Actor to see a facility's air pollutants next to its greenhouse gases.

**How fresh is the data?** Every run downloads the current official file, so corrections ECCC makes to past years are picked up automatically. `retrievedAt` records when each row was fetched.

**Can I get a trend?** Yes. Use `"reportYear": "all"` with a company keyword or facility ID, and group on `ghgrpId`.

**Found a data problem or need another Canadian dataset?** Use the Issues tab. Emissions by source category (2022+) is on the roadmap.

# Actor input Schema

## `reportYear` (type: `string`):

GHGRP reporting year. <b>latest</b> picks the newest year in ECCC's file (read live, so new years appear automatically). <b>all</b> returns every year from 2004, which is handy for trends (combine with a company, facility ID or province filter).

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

Stop after this many records (one record = one facility x one reporting year). Each record is one billable result.

## `sortBy` (type: `string`):

<b>Largest emitters first</b> ranks rows by total emissions in tonnes CO2e. <b>File order</b> streams rows in the order of the ECCC file and is fastest for small samples.

## `provinces` (type: `array`):

Only return facilities in these provinces or territories. Leave empty for all of Canada.

## `keywords` (type: `array`):

Case-insensitive. A row matches if ANY keyword appears in the reporting company legal or trade name, facility name or city (e.g. <code>Suncor</code>, <code>Dofasco</code>, <code>Fort McMurray</code>).

## `naicsCodes` (type: `array`):

Only facilities whose 6-digit NAICS code starts with one of these, e.g. <code>2111</code> (oil & gas extraction), <code>2211</code> (electric power generation), <code>3311</code> (iron & steel), <code>3273</code> (cement & concrete), <code>3251</code> (basic chemicals), <code>5622</code> (waste treatment & disposal).

## `ghgrpIds` (type: `array`):

Only these GHGRP IDs (e.g. <code>G10187</code>). Handy for tracking a watch-list of facilities across years.

## `gases` (type: `array`):

Only facilities that reported a non-zero quantity of ALL selected gases. Useful for finding SF6 or PFC emitters (e.g. aluminium smelters), HFC users, or methane-heavy sites. Every row still includes the full gas breakdown.

## `minTotalCo2eTonnes` (type: `number`):

Only rows whose total emissions (tonnes CO2e, excluding CO2 from biomass) are at least this value, e.g. <code>100000</code>.

## `nearLatitude` (type: `number`):

Optional proximity search: latitude (WGS84 decimal degrees) of your site. Use together with longitude and radius. Facilities without coordinates (all rows before 2017) are skipped.

## `nearLongitude` (type: `number`):

Longitude (WGS84 decimal degrees, negative in Canada), e.g. -79.85.

## `radiusKm` (type: `number`):

Search radius around the point, in kilometres.

## Actor input object example

```json
{
  "reportYear": "latest",
  "maxItems": 50,
  "sortBy": "co2eDesc",
  "radiusKm": 25
}
```

# Actor output Schema

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

No description

## `view_overview` (type: `string`):

No description

## `view_byGas` (type: `string`):

No description

## `view_facilityDetails` (type: `string`):

No description

# 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 = {
    "reportYear": "latest",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("likable_washbowl/canada-ghgrp-facility-emissions").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 = {
    "reportYear": "latest",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("likable_washbowl/canada-ghgrp-facility-emissions").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 '{
  "reportYear": "latest",
  "maxItems": 50
}' |
apify call likable_washbowl/canada-ghgrp-facility-emissions --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,likable_washbowl/canada-ghgrp-facility-emissions"
        }
    }
}
```

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/L76xNFmEVBhA0hC6G/builds/U8KQzvE9O5LaVduQp/openapi.json
