# Carbonmark Carbon Credits Scraper (`acquistion-automation/carbonmark-credits-scraper`) Actor

Scrapes carbon credit listings from the Carbonmark marketplace. Returns each credit as a flat row with project name, price, supply, registry, category, country, and vintage year. Filter by country, category, registry, and minimum vintage year.

- **URL**: https://apify.com/acquistion-automation/carbonmark-credits-scraper.md
- **Developed by:** [Acquisition Automation Co.](https://apify.com/acquistion-automation) (community)
- **Categories:** Automation, Integrations, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.50 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

![Acquisition Automation Co. Search less. Close more.](https://api.apify.com/v2/key-value-stores/AOdPHdOpeDpzEPS5f/records/banner.jpg)

## 🌲 Carbonmark Carbon Credits Scraper

> **Export the carbon credit projects listed on Carbonmark as flat rows: project name, registry, registry listing id and project country.** No account, no API key, no login.

Carbonmark is a public marketplace for carbon credits. Its catalogue is a scrolling grid of project cards with no export button, so building a list of who is offering what means copying projects by hand. This Actor walks the catalogue, applies the filters you set, and writes one row per project into a dataset you can open in a spreadsheet.

Read the **Output** section before you buy. Carbonmark leaves several listing fields blank on the catalogue page, and the Actor reports them as `null` rather than guessing.

| Who uses it | What they use the catalogue for |
|---|---|
| 🌍 Corporate offset buyers | Building a shortlist of projects by registry and country before asking anyone for a quote |
| 🔍 Diligence analysts | Checking whether a target's claimed offset projects are listed on a public marketplace at all |
| 📑 Sustainability and reporting teams | Keeping a tracked list of projects by registry identifier rather than by marketing name |
| 📊 Market researchers | Counting projects by registry and country to measure where supply is concentrated |

### 📋 What it does

> 💡 **Why it matters:** every serious check on a carbon credit starts with the registry identifier, because the project name is marketing and the identifier is the record. This returns the identifier for every listed project in one pass.

- 🗂 **Walks the Carbonmark catalogue** and returns one row per project, rather than one screenshot per page.
- 🆔 **Returns the registry listing id**, for example `VCS-844`, which is what a registry lookup or a retirement record will ask for.
- 🏛 **Filters by registry**: VCS, GS, ACR, CAR or PURO.
- 🌐 **Filters by country and category** as free text, and by minimum vintage year.
- 📦 **The same 12 fields every run**, so several filtered runs append into one clean dataset.
- 💾 **Exports to CSV, Excel, JSON or XML**, from the run page or the API.

### 📊 Output

Every project is one flat row with 12 fields. `null` means the marketplace page carried no value for that field on that listing.

**Be aware:** in the sample run below, only `projectName`, `registry`, `country` and `listingId` carried values. `price` came back as `0` and `methodology`, `vintage`, `supply`, `category` and `retiredCredits` came back `null` on every row. Treat the commercial fields as present when Carbonmark publishes them and empty when it does not, and size your expectations on the catalogue rather than on this field list.

| Field | Type | Description |
|---|---|---|
| 🌲 `projectName` | string | Project name as Carbonmark shows it |
| 🏛 `registry` | string | Issuing registry, for example `VCS` |
| 📐 `methodology` | string | Registry methodology the project was issued under, where the listing publishes one |
| 📅 `vintage` | integer | Vintage year of the credits, where the listing publishes one |
| 💵 `price` | number | Listed price per credit. `0` where the listing carries no price |
| 📦 `supply` | number | Credits available on the listing, where published |
| 🌍 `country` | string | Project country, for example `Peru` |
| 🏷 `category` | string | Project category, for example forestry or renewable energy, where published |
| 🆔 `listingId` | string | Registry listing identifier, for example `VCS-844` |
| ♻️ `retiredCredits` | number | Credits already retired against the project, where published |
| 🕒 `scrapedAt` | string | ISO timestamp of collection |
| ⚠️ `error` | string | `null` on a normal row |

#### Example rows

```json
{
  "projectName": "Madre De Dios Amazon REDD+ Project",
  "registry": "VCS",
  "methodology": null,
  "vintage": null,
  "price": 0,
  "supply": null,
  "country": "Peru",
  "category": null,
  "listingId": "VCS-844",
  "retiredCredits": null,
  "scrapedAt": "2026-09-14T17:17:18.215Z",
  "error": null
}
```

```json
{
  "projectName": "Guyuan Wuhuaping 49.5 MW Wind Power Project",
  "registry": "VCS",
  "methodology": null,
  "vintage": null,
  "price": 0,
  "supply": null,
  "country": "China",
  "category": null,
  "listingId": "VCS-736",
  "retiredCredits": null,
  "scrapedAt": "2026-09-14T17:17:18.307Z",
  "error": null
}
```

### ✨ Why choose this Actor

| | What you get |
|---|---|
| **The registry id, not the brand name** | `VCS-844` is what you carry into a registry lookup. The project name is not. |
| **No credentials** | The Carbonmark catalogue is public. No account, no key, no quota to negotiate. |
| **Filters at the source** | Registry, country, category and minimum vintage are applied during the run, so you pay for rows you asked for. |
| **The same fields every run** | Append a dozen filtered runs into one sheet without reconciling columns. |
| **You pay per row** | No subscription. A filter that matches nothing costs nothing. |

### 🚀 How to use it

1. [Create a free Apify account](https://console.apify.com/sign-up). New accounts start with $5 of credit.
2. Open the Actor and select **Try for free**.
3. Leave the filters blank for the whole catalogue, or set `registry`, `country`, `category` or `minVintage`.
4. Set `maxItems` to cap the run.
5. Select **Start**, then export from the **Dataset** tab as CSV, Excel, JSON or XML.

A first run:

```json
{
  "maxItems": 10
}
```

One registry, one country:

```json
{
  "maxItems": 500,
  "registry": "VCS",
  "country": "Peru"
}
```

### ⚙️ Input

| Field | Required | Description |
|---|---|---|
| `maxItems` | No | Maximum projects to collect per run. Default 10 |
| `country` | No | Filter by project country, free text match |
| `category` | No | Filter by category, free text match |
| `registry` | No | One of VCS, GS, ACR, CAR, PURO. Blank means every registry |
| `minVintage` | No | Only include credits with a vintage year at or after this value |

### 💰 Pricing

Pay per result. No subscription, and no Apify platform usage on top.

| Apify plan | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Per project row | $0.0085 | $0.0082 | $0.0078 | $0.0075 | $0.0075 | $0.0075 |

| Rows collected | Cost on the Free plan |
|---|---|
| 100 | $0.85 |
| 1,000 | $8.50 |
| 10,000 | $85.00 |

**Free plan runs** return up to 10 rows as a preview. Any paid Apify plan lifts that to 1,000,000 per run.

### 🔌 Integrate with any app

The dataset is available through the Apify API as soon as the run finishes. Use `run-sync-get-dataset-items` for a one-shot call, webhooks to trigger what happens next, or the Make, Zapier, Airbyte and LangChain integrations listed on the Actor page.

### 🤖 Use with an AI agent

Give an agent live access to the Carbonmark catalogue over the Model Context Protocol:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=acquistion-automation/carbonmark-credits-scraper"
```

Then ask it in plain language which projects a registry has listed in a given country and have it read the result back.

### ❓ Frequently asked questions

**Why is `price` zero and `vintage` empty on my rows?**
Carbonmark does not publish every field on every catalogue listing. Where the page shows nothing, the Actor writes `0` for price and `null` for the rest rather than inventing a value. In the sample run above that applied to every row.

**Can I filter by price?**
Not in the input. Export the dataset and filter in a spreadsheet.

**What does `listingId` refer to?**
The identifier the issuing registry uses for the project, for example `VCS-844` for a Verra project. Use it to look the project up on the registry's own site.

**Why did I get fewer rows than `maxItems`?**
Fewer listings matched your filters than the cap you set. Remove one filter at a time to see which is excluding everything.

**Does this include retired or already sold credits?**
The Actor returns what the catalogue lists. `retiredCredits` reports retirements when the listing publishes them, and is `null` otherwise.

**Do I need a proxy?**
No. Requests and retries are handled inside the Actor and included in the price.

### 🔗 More from Acquisition Automation Co.

- [IRS Exempt Organizations Scraper](https://apify.com/acquistion-automation/irs-eo-master-file-scraper)
- [SAM.gov Contract Opportunities Scraper](https://apify.com/acquistion-automation/sam-gov-contracts-scraper)
- [USCG PSIX Vessel Registry Scraper](https://apify.com/acquistion-automation/uscg-psix-vessel-incidents-scraper)
- [PublicSurplus Scraper](https://apify.com/acquistion-automation/publicsurplus-scraper)
- [BizBuySell Scraper](https://apify.com/acquistion-automation/bizbuysell-scraper)

### About Acquisition Automation Co.

We build automation for people buying businesses. The repetitive part of an acquisition search, checking listings, pulling public records, tracking owners and assets, is work a machine should do, so the buyer's time goes into judging deals instead of collecting them.

We add new Actors regularly. If there is a source you need and do not see here, tell us.

### 🆘 Support

Open an issue in the **Issues** tab of this Actor with your run ID, the input you used, and what you expected to get back.

### ⚠️ Disclaimer

This Actor is independent and is not affiliated with, endorsed by, or sponsored by Carbonmark or any carbon registry. It collects only publicly available data. You are responsible for using that data in compliance with the source's terms of service and applicable law.

# Actor input Schema

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

Maximum number of carbon credits to collect per run.

## `country` (type: `string`):

Optional, filter by project country (free text match).

## `category` (type: `string`):

Optional, filter by category (free text match).

## `registry` (type: `string`):

Optional, filter by registry.

## `minVintage` (type: `integer`):

Optional, only include credits with vintage year at or after this value.

## Actor input object example

```json
{
  "maxItems": 10
}
```

# Actor output Schema

## `results` (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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("acquistion-automation/carbonmark-credits-scraper").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 = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("acquistion-automation/carbonmark-credits-scraper").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 '{
  "maxItems": 10
}' |
apify call acquistion-automation/carbonmark-credits-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,acquistion-automation/carbonmark-credits-scraper"
        }
    }
}
```

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/1Fcq7zQgfmGBr1NPy/builds/uneGeBrZhEuhxrcdZ/openapi.json
