# change.org Petition Search Scraper (`datacach/change-org-scraper`) Actor

Search change.org petitions by keyword and extract structured petition data (title, signatures, status, tags, creator, location) via change.org's Typesense search API.

- **URL**: https://apify.com/datacach/change-org-scraper.md
- **Developed by:** [DataCach](https://apify.com/datacach) (community)
- **Categories:** Lead generation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

Search and extract **change.org petitions at scale** — by keyword, in 12 languages — and get clean, structured data you can use right away. The **change.org Petition Scraper** turns any search into a downloadable dataset of petitions, complete with **signature counts, status, categories, decision-maker targets, creators, and locations**. No browser automation, no manual copy-paste, and no code required.

Try it in seconds: type a search term like `climate change`, click **Start**, and export the results as JSON, CSV, or Excel.

<!-- TIP: Host a screenshot of the input form on GitHub and link it here for better conversion + SEO.
     <a href="https://console.apify.com/actors" target="_blank"><img src="https://your-github-raw-url/changeorg-petition-scraper-input.png" alt="change.org petition scraper input form on Apify"></a>
     You can also embed a YouTube demo by putting the bare video URL on its own line. -->

### What is the change.org Petition Search Scraper?

The change.org Petition Search Scraper is a tool that **searches [change.org](https://www.change.org) petitions** and returns structured results for every match. You give it one or more keywords; it queries change.org's own search index and collects each petition's headline, full text, signature count, status, tags, targets, creator, and origin location.

It runs on the **[Apify platform](https://apify.com)**, so it's a scraper boosted with API access, scheduling, integrations (Make, Zapier, n8n, Google Sheets), proxy rotation, and run monitoring out of the box.

### What can the change.org Petition Scraper do?

- 🔍 **Search by keyword** — pass any number of search terms, or use `*` to pull an entire language collection.
- 🌍 **12 languages** — search English, Spanish, French, Portuguese, German, Italian, Russian, Turkish, Japanese, Indonesian, Thai, or Hindi corpora.
- 🎯 **Filter precisely** — narrow by **minimum signatures**, **country**, **status** (published or victory), and **category tags**.
- ↕️ **Sort results** — by relevance, most signatures, newest, or recently updated.
- ⚡ **Fast and reliable** — calls change.org's search API directly (no slow headless browser) and fetches pages **concurrently**.
- 📦 **Structured output** — clean JSON records, downloadable as **JSON, CSV, Excel, or HTML**, or via the Apify API.
- 🧰 **Set-and-forget limits** — cap results with `maxItems`; pagination is handled automatically.

### What data does the change.org scraper extract?

Each petition in the dataset includes the following fields:

| Field | Description |
|-------|-------------|
| `title` | Petition headline / the "ask" |
| `url` | Canonical petition URL on change.org |
| `signatures` | Current total signature count |
| `status` | `published` (active) or `victory` (won) |
| `victory` | Whether the petition is flagged as won |
| `geoReach` | Scope of the petition: `local`, `national`, or `global` |
| `tags` | Category / topic tags (e.g. "Climate Change", "Animals") |
| `targets` | Decision-makers the petition addresses |
| `description` | Full petition body text |
| `createdAt` / `updatedAt` | Creation and last-update timestamps (ISO 8601) |
| `createdLocale` | Locale the petition was created in (e.g. `en-US`) |
| `imageUrl` | Cover image URL |
| `location` | Origin country, state, city, and coordinates |
| `creator` | Petition starter (first name, last name, avatar) |
| `id` | change.org petition ID |

### Why scrape change.org petitions?

Petition data is a rich, real-time signal of what people care about. With the change.org Petition Scraper you can:

- 📊 **Track advocacy and social trends** — monitor which causes are gaining momentum by signature velocity and volume.
- 📰 **Power journalism and research** — gather sourced datasets on public sentiment for stories, papers, and reports.
- 🤝 **Support nonprofits and NGOs** — discover active campaigns, allies, and decision-maker targets in your issue area.
- 🏷️ **Monitor a brand, industry, or policy** — surface petitions that mention your organization or topic, in any of 12 languages.
- 🌱 **Analyze causes by region** — slice petitions by country, category, and traction to map where movements are strongest.

### How to scrape change.org petitions

1. **Sign in to Apify** — create a free account (no credit card needed to start).
2. **Open the Actor** and go to the **Input** tab.
3. **Enter your search terms** — for example, `climate change` and `save the bees`.
4. **(Optional) Refine your search** — pick a language, sort order, and filters (minimum signatures, country, status, tags).
5. **Set a limit** — use **Maximum items** to control how many petitions you collect.
6. **Click Start** and watch the run collect petitions page by page.
7. **Export your data** — download the dataset as **JSON, CSV, Excel, or HTML**, or fetch it through the Apify API.

That's it — anyone can run this Actor with point-and-click input; no coding or selectors required.

### Input

Configure the Actor from the **Input** tab in Apify Console, or pass JSON via the API. The main fields are:

- **Search terms** (`searchTerms`, required) — keywords to search for; one search runs per term.
- **Language** (`language`) — which language collection to search (default: English).
- **Sort by** (`sortBy`) — relevance, most signatures, newest, or recently updated.
- **Minimum signatures** (`minSignatures`) — only return petitions with at least this many signatures.
- **Country** (`country`) — restrict to a petition's origin country (ISO-3166 alpha-2, e.g. `US`).
- **Status** (`status`) — `published` or `victory`.
- **Tags** (`tags`) — restrict to petitions carrying specific category tags.
- **Maximum items** (`maxItems`) — stop after collecting this many petitions in total.

#### Example input

```json
{
  "searchTerms": ["climate change", "save the bees"],
  "language": "en",
  "sortBy": "most_signatures",
  "minSignatures": 1000,
  "country": "US",
  "status": "published",
  "maxItems": 200
}
````

### Output

Results are stored in a dataset, where every item is one petition. You can download the dataset in **JSON, CSV, Excel, or HTML**, or pull it programmatically via the Apify API.

#### Example output

```json
{
  "id": "29099546",
  "url": "https://www.change.org/p/joseph-r-biden-biden-administration-and-conocophillips-say-no-to-the-willow-project",
  "title": "Biden Administration and ConocoPhillips: SAY NO TO THE WILLOW PROJECT!",
  "description": "The Willow Project is a proposed development project in Northern Alaska by ConocoPhillips…",
  "signatures": 2224061,
  "status": "published",
  "victory": false,
  "geoReach": null,
  "tags": [],
  "targets": "Joseph R. Biden, ConocoPhillips",
  "createdAt": "2021-05-27T17:58:34Z",
  "updatedAt": "2026-06-07T03:12:34Z",
  "createdLocale": "en-US",
  "imageUrl": "https://assets.change.org/photos/5/lp/ng/gRLpNGofUOsPrIb-fullsize.jpg",
  "location": { "country": "US", "state": null, "city": null, "lat": null, "lng": null },
  "creator": { "firstName": "Sonny", "lastName": "Ahk", "avatarUrl": null }
}
```

### Integrations and the Apify platform

Because this Actor runs on Apify, you can:

- **Schedule runs** to keep a petition dataset fresh automatically.
- **Connect it** to Make, Zapier, n8n, Slack, Google Sheets, and more via [Apify Integrations](https://apify.com/integrations).
- **Call it from your code** with the [Apify API](https://docs.apify.com/api/v2) or the [Python](https://docs.apify.com/sdk/python) / [JavaScript](https://docs.apify.com/sdk/js) SDKs.
- **Monitor** runs, logs, and storage from the Console.

### Related scrapers

Looking for more campaign and crowdfunding data? Browse the [Apify Store](https://apify.com/store) for related scrapers.

### FAQ

#### Is it legal to scrape change.org?

This Actor collects **publicly available** petition information that change.org shows to any visitor. Scraping public data is generally permitted, but you are responsible for how you use the data. Review change.org's Terms of Service, respect copyright, and comply with applicable laws such as GDPR — especially before storing or processing any personal data. Use the data ethically and do not use it for spam or harassment.

#### Do I need to know how to code?

No. Fill in the search terms in the Input tab and click **Start**. Developers can also run the Actor entirely through the Apify API.

#### Does change.org have an official API?

change.org does not offer a public, general-purpose petition search API. This Actor gives you structured, query-able access to petition search results and exports them in standard formats.

#### Which languages can I search?

Twelve: English, Spanish, French, Portuguese, German, Italian, Russian, Turkish, Japanese, Indonesian, Thai, and Hindi. change.org segments search by language rather than country, so pick the **Language** that matches the petitions you want.

#### Can I filter petitions by country, category, or signature count?

Yes. Use **Country** (ISO-2 code), **Tags** (category facets), **Status**, and **Minimum signatures** to narrow results, and **Sort by** to order them.

#### How many petitions can I collect?

Use **Maximum items** to set the cap; set it to `0` for no limit. The Actor paginates automatically and fetches several pages at once, so large result sets are collected efficiently.

#### In what formats can I export the data?

JSON, CSV, Excel, or HTML from the Console, or JSON via the Apify API and SDKs.

#### Why are some fields empty?

Petitions don't all carry the same metadata. Optional fields like `location.city`, `creator.avatarUrl`, `targets`, or `tags` are only present when change.org has that information, so they may be `null` or empty.

### Disclaimer

This Actor is intended for lawful, ethical collection of publicly available information. It does not bypass logins or access private or restricted content. You are responsible for ensuring your use complies with change.org's Terms of Service and all applicable data-protection laws. Do not collect or process personal data without a valid legal basis.

### Support and feedback

Found a bug or want a new feature? Open an issue on the Actor's **Issues** tab — feedback is welcome and helps improve the scraper. Need a custom data solution? Reach out through Apify.

# Actor input Schema

## `searchTerms` (type: `array`):

One or more keywords to search change.org petitions for — the Actor runs a separate search per term. Example: <code>climate change</code>. Use <code>\*</code> to match every petition in the chosen language.

## `language` (type: `string`):

Which language collection to search. change.org segments search by language, not by country. Defaults to English.

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

How to order results. Relevance uses change.org's match ranking; Most signatures lists the highest signature counts first; Newest sorts by creation date; Recently updated sorts by last update.

## `minSignatures` (type: `integer`):

Only return petitions with at least this many signatures. Leave empty for no minimum. Example: 1000 to focus on petitions with real traction.

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

Restrict to a petition's origin country, as an ISO-3166 alpha-2 code (e.g. US, GB, AU). Leave empty for all countries.

## `status` (type: `string`):

Restrict to a petition status. "Published" = active, ongoing petitions; "Victory" = petitions marked as won. Leave unset to include both.

## `tags` (type: `array`):

Restrict to petitions carrying all of these category tags. Use exact change.org facet values, e.g. "Climate Change", "Animals". Multiple tags are combined with AND.

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

Stop after collecting this many petitions in total across all search terms. Lower values keep runs fast and cheap. Set to 0 for no limit (can be large and slow).

## `searchFields` (type: `array`):

Advanced: which petition fields the query should match against, e.g. "ask" for title-only or "ask,description". Leave empty to use change.org's default fields.

## Actor input object example

```json
{
  "searchTerms": [
    "climate change"
  ],
  "language": "en",
  "sortBy": "relevance",
  "maxItems": 100
}
```

# Actor output Schema

## `dataset` (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 = {
    "searchTerms": [
        "climate change"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datacach/change-org-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 = { "searchTerms": ["climate change"] }

# Run the Actor and wait for it to finish
run = client.actor("datacach/change-org-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "climate change"
  ]
}' |
apify call datacach/change-org-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=datacach/change-org-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "change.org Petition Search Scraper",
        "description": "Search change.org petitions by keyword and extract structured petition data (title, signatures, status, tags, creator, location) via change.org's Typesense search API.",
        "version": "0.0",
        "x-build-id": "KfzQMqmTAkTShLHXB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datacach~change-org-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datacach-change-org-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/datacach~change-org-scraper/runs": {
            "post": {
                "operationId": "runs-sync-datacach-change-org-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/datacach~change-org-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-datacach-change-org-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "One or more keywords to search change.org petitions for — the Actor runs a separate search per term. Example: <code>climate change</code>. Use <code>*</code> to match every petition in the chosen language.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "es",
                            "fr",
                            "pt",
                            "de",
                            "it",
                            "ru",
                            "tr",
                            "ja",
                            "id",
                            "th",
                            "hi"
                        ],
                        "type": "string",
                        "description": "Which language collection to search. change.org segments search by language, not by country. Defaults to English.",
                        "default": "en"
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "most_signatures",
                            "newest",
                            "recently_updated"
                        ],
                        "type": "string",
                        "description": "How to order results. Relevance uses change.org's match ranking; Most signatures lists the highest signature counts first; Newest sorts by creation date; Recently updated sorts by last update.",
                        "default": "relevance"
                    },
                    "minSignatures": {
                        "title": "Minimum signatures",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return petitions with at least this many signatures. Leave empty for no minimum. Example: 1000 to focus on petitions with real traction."
                    },
                    "country": {
                        "title": "Country code",
                        "pattern": "^[A-Za-z]{2}$",
                        "type": "string",
                        "description": "Restrict to a petition's origin country, as an ISO-3166 alpha-2 code (e.g. US, GB, AU). Leave empty for all countries."
                    },
                    "status": {
                        "title": "Status",
                        "enum": [
                            "published",
                            "victory"
                        ],
                        "type": "string",
                        "description": "Restrict to a petition status. \"Published\" = active, ongoing petitions; \"Victory\" = petitions marked as won. Leave unset to include both."
                    },
                    "tags": {
                        "title": "Tags",
                        "type": "array",
                        "description": "Restrict to petitions carrying all of these category tags. Use exact change.org facet values, e.g. \"Climate Change\", \"Animals\". Multiple tags are combined with AND.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after collecting this many petitions in total across all search terms. Lower values keep runs fast and cheap. Set to 0 for no limit (can be large and slow).",
                        "default": 100
                    },
                    "searchFields": {
                        "title": "Search fields",
                        "type": "array",
                        "description": "Advanced: which petition fields the query should match against, e.g. \"ask\" for title-only or \"ask,description\". Leave empty to use change.org's default fields.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
