# Sourceforge Reviews Scraper (`reviewly/sourceforge-reviews-scraper`) Actor

Scrapes user reviews from SourceForge product pages (sourceforge.net/software/product/...). Extracts ratings, pros/cons, reviewer details, dimension ratings, and vendor replies.

- **URL**: https://apify.com/reviewly/sourceforge-reviews-scraper.md
- **Developed by:** [Reviewly](https://apify.com/reviewly) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## SourceForge Reviews Scraper — Extract Every Software Review in Seconds

**Turn any SourceForge product page into clean, structured review data — ratings, pros & cons, reviewer profiles, and vendor replies — with a single click. No coding required.**

- ⚡ **Fast** — scrapes hundreds of reviews in seconds, not minutes
- 📊 **Complete** — every field captured: 1–5 star ratings, 5 dimension scores, pros/cons, reviewer role & company size
- 🎯 **Precise** — filter by date or cap the number of reviews to pay only for what you need
- 🧾 **Ready to use** — export to JSON, CSV, or Excel straight from Apify

---

### 📌 What This Actor Does

This Apify Actor scrapes **user reviews from SourceForge**, one of the largest software review and download platforms on the web (30+ million monthly visitors). Give it one or more product URLs — for example `https://sourceforge.net/software/product/pCloud/` — and it returns every review as structured data.

**Who it's for:**

- **SaaS marketers & product managers** — monitor what users say about your product and your competitors
- **Market researchers & analysts** — collect voice-of-customer data at scale for competitive analysis
- **Data scientists** — build sentiment-analysis and NLP datasets from real user feedback
- **Reputation managers** — track new reviews and vendor replies over time
- **Developers** — feed review data into dashboards, CRMs, or AI pipelines via the Apify API

No browser automation, no login, no CAPTCHA headaches — just reliable web scraping that delivers clean data every run.

---

### ✨ Key Features

- **Complete review data** — title, full text (pros, cons, overall), star rating, and publish date for every review
- **Rich reviewer context** — name, job title, company size, user role, frequency of use, and how long they've used the software
- **5-dimension ratings** — separate scores for Design, Ease of Use, Features, Pricing, and Support
- **Recommendation score** — the 1–10 "would recommend" probability for each review
- **Vendor replies included** — capture official company responses with their dates
- **Product summary** — product name, vendor, aggregate rating, and total review count in every result
- **Smart limits** — stop at a maximum review count or at a cutoff date (reviews come newest-first)
- **Flexible input** — paste full URLs, review-page URLs, or just the product slug (`pCloud`)
- **Multiple products per run** — scrape your whole competitive landscape in one job

---

### 🧠 Why This Actor Is Different

- **Built on SourceForge's own review feed** — instead of driving a slow headless browser through bot walls, this Actor reads the same lightweight endpoint SourceForge's site uses to paginate reviews. That means **runs finish in seconds**, results are consistent, and there's nothing fragile to break when page styling changes.
- **No proxy costs by default** — most review scrapers force expensive residential proxies. This one works without any proxy in normal conditions (and still supports full proxy configuration as a safety net).
- **100% field coverage** — validated against real products with every core field filled on every review: no half-empty records.
- **Honest, predictable pricing** — you control exactly how many reviews are scraped per run.

---

### ⚙️ Input Configuration

| Field | Type | Required | Description |
|---|---|---|---|
| `startUrls` | array | ✅ | SourceForge product pages to scrape. Full URLs or bare slugs both work. |
| `maxReviews` | integer | — | Maximum total reviews across all products. `0` = no limit (default). |
| `targetDate` | string | — | Oldest review date to include, `YYYY-MM-DD`. Scraping stops at the first older review. |
| `proxyConfiguration` | object | — | Optional. Usually unnecessary — enable only if requests start failing. |

**Example input:**

```json
{
    "startUrls": [
        { "url": "https://sourceforge.net/software/product/pCloud/" },
        { "url": "https://sourceforge.net/software/product/Slack/" }
    ],
    "maxReviews": 100,
    "targetDate": "2024-01-01"
}
````

**Tips for best results:**

- A bare slug works too: `{ "startUrls": ["pCloud"] }` — handy for quick tests.
- Use `targetDate` for recurring monitoring: run weekly with the date of your last run and you'll only collect new reviews.
- The slug is the last part of the product URL and is case-sensitive — copy it directly from the SourceForge address bar.

***

### 📤 Output Format

The Actor pushes **one dataset record per product**, containing the product summary and a `reviews` array:

```json
{
    "name": "pCloud Business",
    "vendor": "pCloud AG",
    "productUrl": "https://sourceforge.net/software/product/pCloud/",
    "rating": 4.3,
    "reviewCount": 22,
    "reviews": [
        {
            "id": "6a23154575693400e3c4fae2",
            "url": "https://sourceforge.net/software/product/pCloud/#review-6a23154575693400e3c4fae2",
            "title": "pCloud Business: The Digital Bunker Your Team Needs",
            "rating": 5,
            "date": "2026-06-05",
            "edited": false,
            "reviewerName": "All C.",
            "reviewerTitle": "Project Analyst",
            "usedFor": "Less than 6 months",
            "frequency": "Daily",
            "userRole": "User",
            "companySize": "1 - 25",
            "dimensionRatings": {
                "design": 4,
                "ease": 5,
                "features": 5,
                "pricing": 5,
                "support": 5
            },
            "recommendProbability": 10,
            "pros": "The best thing about this platform is its impenetrable security...",
            "cons": "On the downside, it's not designed for real-time co-creation...",
            "overall": "In short, pCloud Business is a fantastic option if...",
            "body": null,
            "helpfulCount": 0,
            "reply": {
                "date": "2026-06-08",
                "text": "Thank you for such a thoughtful and well-structured review..."
            }
        }
    ]
}
```

**Field reference:**

| Field | Description |
|---|---|
| `name`, `vendor` | Product name and the company behind it |
| `rating`, `reviewCount` | Aggregate star rating and total review count on SourceForge |
| `reviews[].rating` | Overall star rating of the review (1–5) |
| `reviews[].date` / `edited` | Publish date (ISO) and whether the review was later edited |
| `reviews[].reviewerName` / `reviewerTitle` | Reviewer's display name and job title |
| `reviews[].usedFor` / `frequency` / `userRole` / `companySize` | Usage context reported by the reviewer |
| `reviews[].dimensionRatings` | Per-dimension scores: design, ease, features, pricing, support (1–5) |
| `reviews[].recommendProbability` | "Would you recommend?" score, 1–10 |
| `reviews[].pros` / `cons` / `overall` | The three sections of the review text |
| `reviews[].body` | Text of short reviews that have no pros/cons structure |
| `reviews[].helpfulCount` | How many users marked the review helpful |
| `reviews[].reply` | Official vendor reply (`date`, `text`) or `null` |

Download the dataset as **JSON, CSV, Excel, or XML**, or pull it programmatically through the [Apify API](https://docs.apify.com/api/v2).

***

### ▶️ How to Use

1. **Open the Actor** in the Apify Store and click **Try for free**.
2. **Paste product URLs** into the *Product URLs* field (or bare slugs like `pCloud`).
3. *(Optional)* Set **Max reviews** or an **Oldest review date** to control the scope.
4. Click **Start**. Runs typically finish in seconds.
5. Open the **Dataset** tab and export your data in the format you need.

**Common workflows:**

- **One-off export** — scrape a product's full review history in a single run.
- **Competitor batch** — add 5–10 competing products to `startUrls` and export one combined dataset.
- **Scheduled monitoring** — create an Apify Schedule (e.g. weekly) with `targetDate` set to the last run's date, and pipe new reviews to Slack, email, or your data warehouse via integrations.

***

### 📈 Use Cases

1. **Competitive intelligence** — compare dimension ratings (pricing, support, ease of use) across competing products to find your market advantage.
2. **Voice-of-customer analysis** — mine pros and cons at scale to discover the exact language customers use, then reuse it in landing pages and ads.
3. **Product roadmap input** — aggregate the most common complaints (cons) about your product and your competitors to prioritize features.
4. **Reputation monitoring** — get alerted when new reviews appear and track whether vendors reply (and how fast).
5. **AI & sentiment datasets** — build labeled training data: every review ships with a numeric rating alongside its text, perfect for sentiment models.

***

### 🛠️ Advanced Tips

- **Keep runs small and frequent** rather than giant and rare — combined with `targetDate`, you'll never re-scrape old data.
- **Proxies:** leave proxy off for normal use. If you ever see repeated request failures, enable the Apify proxy in `proxyConfiguration` — the Actor automatically rotates to a fresh IP between retries.
- **Scaling:** each product needs one request per 20 reviews, so even a 500-review product is only ~25 fast requests. You can safely batch dozens of products per run.
- **API access:** call the Actor from your own code with the Apify client (`apify-client` for JavaScript/Python) and read results directly from the dataset.

***

### ❓ FAQ / Troubleshooting

**Is there a free tier?**
Yes — free-plan users can scrape up to **100 reviews per day**. Paid Apify plans have no daily cap.

**The run says "Product not found (HTTP 404)".**
The product slug is wrong or the product page moved. Open the product on sourceforge.net and copy the URL exactly — the slug is case-sensitive.

**Some products show fewer reviews than expected.**
Check your `maxReviews` and `targetDate` inputs — both stop scraping early by design. With `maxReviews: 0` and no `targetDate`, the Actor collects the complete review history.

**What are `rating` vs `dimensionRatings`?**
`rating` is the review's overall 1–5 stars. `dimensionRatings` are the reviewer's separate 1–5 scores for design, ease of use, features, pricing, and support.

**Does it scrape reviews from sourceforge.net project pages (open-source downloads)?**
No — it targets the **business software directory** (`sourceforge.net/software/product/...`), which is where structured user reviews live.

**Is scraping reviews legal?**
The Actor collects only publicly available data. You are responsible for using the data in compliance with applicable laws and SourceForge's terms; personal data may be subject to GDPR and similar regulations.

**Can you add more fields or another review platform?**
Yes — send a feature request (see Support below). The same architecture powers scrapers for other review platforms.

***

### 📞 Support

- **Issues & feature requests:** open an issue on the Actor's **Issues** tab in the Apify Console — it's monitored.
- **Direct contact:** [**email**](me@ahmedhrid.com) — include your run ID for the fastest diagnosis.

If this Actor saves you time, a ⭐ rating in the Apify Store helps others find it.

# Actor input Schema

## `startUrls` (type: `array`):

SourceForge product pages to scrape, e.g. https://sourceforge.net/software/product/pCloud/ (a bare slug like `pCloud` also works).

## `maxReviews` (type: `integer`):

Maximum total number of reviews to scrape across all products. 0 = no limit.

## `targetDate` (type: `string`):

Stop scraping when reviews get older than this date (YYYY-MM-DD). Reviews are ordered newest first.

## `proxyConfiguration` (type: `object`):

Optional. The reviews endpoint is currently not bot-challenged, so a proxy is usually unnecessary. Enable if requests start failing.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://sourceforge.net/software/product/pCloud/"
    }
  ],
  "maxReviews": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Each record contains product info (name, vendor, productUrl, rating, reviewCount) and a reviews array with id, url, title, rating, date, edited, reviewer details (reviewerName, reviewerTitle, usedFor, frequency, userRole, companySize), dimensionRatings, recommendProbability, pros, cons, overall, body, helpfulCount, and vendor reply.

# 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 = {
    "startUrls": [
        {
            "url": "https://sourceforge.net/software/product/pCloud/"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("reviewly/sourceforge-reviews-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 = {
    "startUrls": [{ "url": "https://sourceforge.net/software/product/pCloud/" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("reviewly/sourceforge-reviews-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 '{
  "startUrls": [
    {
      "url": "https://sourceforge.net/software/product/pCloud/"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call reviewly/sourceforge-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sourceforge Reviews Scraper",
        "description": "Scrapes user reviews from SourceForge product pages (sourceforge.net/software/product/...). Extracts ratings, pros/cons, reviewer details, dimension ratings, and vendor replies.",
        "version": "0.0",
        "x-build-id": "dGTg7h7eoMblwowPm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/reviewly~sourceforge-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-reviewly-sourceforge-reviews-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/reviewly~sourceforge-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-reviewly-sourceforge-reviews-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/reviewly~sourceforge-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-reviewly-sourceforge-reviews-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Product URLs",
                        "type": "array",
                        "description": "SourceForge product pages to scrape, e.g. https://sourceforge.net/software/product/pCloud/ (a bare slug like `pCloud` also works).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxReviews": {
                        "title": "Max reviews",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum total number of reviews to scrape across all products. 0 = no limit.",
                        "default": 0
                    },
                    "targetDate": {
                        "title": "Oldest review date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Stop scraping when reviews get older than this date (YYYY-MM-DD). Reviews are ordered newest first."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. The reviews endpoint is currently not bot-challenged, so a proxy is usually unnecessary. Enable if requests start failing."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
