# Uneed.best Scraper — Products, Upvotes, Makers & Revenue (`memo23/uneed-scraper`) Actor

Turn uneed.best into structured data: full product records with upvoters, maker, socials, reviews and founder-disclosed revenue — the depth other scrapers skip. Filter by tag, pass product URLs, or grab the whole catalog. No login, no anti-bot. JSON, CSV, Excel.

- **URL**: https://apify.com/memo23/uneed-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Lead generation, Automation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 product (full detail)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Uneed.best Scraper 🚀

Scrape launched products and tools from **[uneed.best](https://www.uneed.best)** — the Product Hunt alternative for indie makers. Pull the full listing record for any product: name, tagline, website, pricing, category, tags, rating, upvotes **and every upvoter**, the maker, all social links, reviews, rewards, deals, media, and founder-disclosed business data (revenue, team size, tech stack, for-sale status). Scrape by tag, by product URL, or the entire catalog.

No login, no anti-bot, no proxy required. Export to JSON, CSV, or Excel.

![How the Uneed.best Scraper works](https://muhamed-didovic.github.io/assets/how-it-works-uneed.png)

### Why use this scraper

- **The whole product record, not just the card.** Most listing scrapers stop at name + link. This one decodes each product's server-rendered data into a clean row with 20+ fields.
- **Maker & upvoter intelligence nobody else extracts.** Every upvoter (username, streak, vote date), the maker's profile, and — when the founder has disclosed it — TTM revenue, last-month revenue/profit, team size, tech stack, and whether the product is for sale.
- **Three ways in.** Filter by tag (368 available), pass specific product URLs/slugs, or leave everything empty to walk the full catalog of 9,400+ products.
- **Fast & reliable.** uneed.best serves its data in the page, so the actor reads it directly over plain HTTP — no browser, no proxy, no captcha.
- **Clean, typed output.** Consistent field names, empty values dropped, ready for a spreadsheet or a database.

### What it scrapes

Uneed.best is a launch directory where makers submit products and the community upvotes them. Each product ("tool") has a public detail page and appears in ranked, tag-filtered lists. This actor turns any of those into structured data.

| Input | You get |
|---|---|
| A **tag** (e.g. `ai`, `seo`, `productivity`) | Every product ranked under that tag |
| A **product URL or slug** (e.g. `/tool/notion`) | The full detail record for that product |
| **Nothing** (full catalog) | Every listed product, capped by Max items |

### Supported inputs

- **Tag listings** — `https://www.uneed.best/best-products-by-tag/{tag}`
- **Product pages** — `https://www.uneed.best/tool/{slug}`
- **Product slugs** — plain slugs like `notion`, `linear`
- **Full catalog** — the actor's sitemap walk of all `/tool/{slug}` pages

### Use cases

- **Lead lists** of indie-hacker and SaaS products, with the maker and their socials for outreach.
- **Acquisition sourcing** — surface products flagged for sale, with disclosed revenue and team size.
- **Launch & competitor monitoring** — track new products, upvote counts, and ratings by tag.
- **Market & trend research** — aggregate pricing models, categories, and tag popularity across the catalog.
- **Enrichment** — resolve a product's official website and social profiles from its uneed listing.

### How it works

1. You provide tags, product URLs/slugs, or nothing (for the full catalog).
2. For tag inputs, the actor reads the tag's ranked product list. For the full catalog, it reads the sitemap of every product.
3. With **Scrape full product details** on (default), it fetches each product's page and decodes the complete record. With it off, it returns the lighter listing rows from tag pages as-is — faster and cheaper.
4. Rows stream to the dataset as they're scraped, deduplicated by product, and capped at your **Max items**.

### Input configuration

| Field | Type | Description |
|---|---|---|
| `startUrls` | array | uneed.best URLs to scrape (auto-classified): product pages or tag listings. Overrides the filters below. |
| `tags` | array | Tag slugs to pull ranked listings for, e.g. `ai`, `seo`, `productivity`. |
| `slugs` | array | Explicit product slugs, e.g. `notion`, `linear`. |
| `scrapeDetails` | boolean | Fetch each product's detail page for the full record. Default `true`. Off = lighter listing rows from tag pages. |
| `fullCatalog` | boolean | Scrape every product via the sitemap. Auto-on when no URLs/tags/slugs are given. |
| `maxItems` | integer | Maximum products to return. |
| `maxConcurrency` | integer | Parallel product-detail fetches (1–20). |
| `proxy` | object | Optional. Not needed — uneed.best has no anti-bot. |

#### Example inputs

Scrape the top AI and SEO products with full detail:

```json
{
  "tags": ["ai", "seo"],
  "scrapeDetails": true,
  "maxItems": 200
}
````

Scrape specific products:

```json
{
  "slugs": ["notion", "linear"],
  "startUrls": [{ "url": "https://www.uneed.best/tool/hairstyleai" }]
}
```

Fast listing pull, no per-product fetch:

```json
{
  "tags": ["productivity"],
  "scrapeDetails": false,
  "maxItems": 500
}
```

Scrape the entire catalog:

```json
{ "fullCatalog": true, "maxItems": 5000 }
```

### Output

One row per product. Example (`/tool/hairstyleai`, trimmed):

```json
{
  "source": "uneed",
  "url": "https://www.uneed.best/tool/hairstyleai",
  "id": 875,
  "slug": "hairstyleai",
  "name": "HairstyleAI",
  "description": "Ready for a new look? Upload your photos and let AI generate new hairstyles for you.",
  "website": "https://www.hairstyleai.com",
  "pricing": "Paid",
  "category": "Personal Life",
  "tags": ["AI", "Avatars", "Lifestyle"],
  "rating": 5,
  "clicks": 3397,
  "premium": false,
  "dofollow": false,
  "logo": "https://…/logos/875.png",
  "createdAt": "2022-12-16T17:04:03",
  "socials": { "twitter": "https://twitter.com/fryingneurons" },
  "votesCount": 2,
  "votesSum": 2,
  "upvoters": [
    { "username": "chris_su", "value": 1, "streak": 1, "createdAt": "2024-11-28T18:22:00Z" }
  ],
  "reviews": [
    { "author_username": "Nico", "review": "Great app, super handy before going to the barber", "rate": 5, "created_at": "2023-01-12T04:06:45Z" }
  ],
  "media": [{ "url": "https://i.imgur.com/FlgZs3J.jpg", "type": "image" }],
  "descriptionHtml": "<p>…</p>",
  "scrapedAt": "2026-07-08T18:50:00.000Z"
}
```

#### Key output fields

| Field | Description |
|---|---|
| `url`, `slug`, `id`, `name` | Product identity and its uneed.best page. |
| `description`, `descriptionHtml` | Plain tagline and the full rich-text description (detail mode). |
| `website` | The product's own website. |
| `pricing` | Pricing model — `Free`, `Freemium`, or `Paid`. |
| `category`, `tags` | Uneed category and the product's tags. |
| `rating`, `clicks` | Community rating and outbound click count. |
| `votesCount`, `votesSum`, `upvoters` | Upvote totals and the individual upvoters (username, streak, vote, date). |
| `maker` | The submitting maker's username, avatar, and streak. |
| `socials` | Twitter/X, LinkedIn, GitHub, Instagram, Facebook, YouTube, Bluesky (whichever exist). |
| `reviews`, `rewards`, `deals`, `media` | Community reviews, badges/awards won, active deals, and screenshots. |
| `business` | Founder-disclosed data when available: revenue (TTM & last-month), profit, team size, tech stack, `onSale`, `salePrice`. |
| `launchDate`, `createdAt` | When the product launched on uneed and when it was added. |
| `premium`, `dofollow` | Whether the listing is premium and whether its outbound link is dofollow. |

### FAQ

**Do I need a proxy?** No. uneed.best has no anti-bot; the actor fetches directly. A proxy option exists if you want one, but it's off by default.

**Will every product have revenue / team size?** No — those fields only appear when the maker chose to disclose them. The `business` object is omitted when nothing is disclosed.

**How many products are there?** Around 9,400 at the time of writing, across 368 tags and 5 categories.

**Can I get every upvoter?** Yes, in full-detail mode, up to a generous per-product cap (username, vote value, streak, and date).

**What's the difference between detail and listing mode?** Listing mode (`scrapeDetails: false`) returns the lighter card data straight from tag pages — fast and cheap. Detail mode fetches each product's page for the complete record (rich description, upvoters, reviews, revenue, media).

**Which formats can I export?** JSON, CSV, and Excel via the Apify dataset, or pull them from the API.

### Support

Found a missing field or a product that won't parse? Open an issue on the actor's **Issues** tab in Apify Console with the input you used and we'll take a look.

### ⚠️ Disclaimer

This actor collects only publicly available information from uneed.best — the same data any visitor can see without logging in. It does not bypass authentication, access private accounts, or defeat access controls. Use the output in compliance with uneed.best's Terms of Use and applicable data-protection laws (including GDPR/CCPA where relevant). You are responsible for how you use the scraped data; do not use personal data (maker names, usernames, socials) for spam or any unlawful purpose.

### SEO Keywords

uneed scraper, uneed.best scraper, uneed api, scrape uneed, product hunt alternative scraper, indie hacker product scraper, launch directory scraper, uneed products export, uneed tools data, startup directory scraper, saas product data, maker leads scraper, product upvotes scraper, product launch monitoring, uneed leaderboard, scrape product listings, indie maker leads, tool directory scraper, uneed reviews scraper, product revenue data

# Actor input Schema

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

uneed.best URLs to scrape (auto-classified). Product page: https://www.uneed.best/tool/{slug}. Tag listing: https://www.uneed.best/best-products-by-tag/{tag}. Overrides the filters below.

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

Tag slugs to pull ranked product listings for, e.g. ai, seo, productivity, analytics, open-source. Each maps to /best-products-by-tag/{tag}.

## `slugs` (type: `array`):

Explicit product slugs to scrape, e.g. notion, linear. Each maps to /tool/{slug}.

## `scrapeDetails` (type: `boolean`):

Fetch each product's detail page for the full record (rich description, upvoters, reviews, rewards, maker, disclosed revenue, team size, tech stack). Turn off to push the lighter listing rows from tag pages as-is — faster and cheaper. Ignored for the full catalog, which always needs a detail fetch.

## `fullCatalog` (type: `boolean`):

Scrape every product on uneed.best (walks the sitemap of all /tool/{slug} pages), capped by Max items. Automatically on when no Start URLs, Tags, or Slugs are provided.

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

Maximum products to return.

## `maxConcurrency` (type: `integer`):

Parallel product-detail fetches.

## `proxy` (type: `object`):

Optional. uneed.best has no anti-bot, so proxies are usually unnecessary. Leave off for direct fetching.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.uneed.best/best-products-by-tag/ai"
    }
  ],
  "scrapeDetails": true,
  "fullCatalog": false,
  "maxItems": 100,
  "maxConcurrency": 6
}
```

# 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://www.uneed.best/best-products-by-tag/ai"
        }
    ],
    "maxItems": 100,
    "maxConcurrency": 6
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/uneed-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://www.uneed.best/best-products-by-tag/ai" }],
    "maxItems": 100,
    "maxConcurrency": 6,
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/uneed-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://www.uneed.best/best-products-by-tag/ai"
    }
  ],
  "maxItems": 100,
  "maxConcurrency": 6
}' |
apify call memo23/uneed-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Uneed.best Scraper — Products, Upvotes, Makers & Revenue",
        "description": "Turn uneed.best into structured data: full product records with upvoters, maker, socials, reviews and founder-disclosed revenue — the depth other scrapers skip. Filter by tag, pass product URLs, or grab the whole catalog. No login, no anti-bot. JSON, CSV, Excel.",
        "version": "0.0",
        "x-build-id": "ZXEapuYcAM5eh5yLF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~uneed-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-uneed-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/memo23~uneed-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-uneed-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/memo23~uneed-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-uneed-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",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "uneed.best URLs to scrape (auto-classified). Product page: https://www.uneed.best/tool/{slug}. Tag listing: https://www.uneed.best/best-products-by-tag/{tag}. Overrides the filters below.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "tags": {
                        "title": "Tags",
                        "type": "array",
                        "description": "Tag slugs to pull ranked product listings for, e.g. ai, seo, productivity, analytics, open-source. Each maps to /best-products-by-tag/{tag}.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "slugs": {
                        "title": "Product slugs",
                        "type": "array",
                        "description": "Explicit product slugs to scrape, e.g. notion, linear. Each maps to /tool/{slug}.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeDetails": {
                        "title": "Scrape full product details",
                        "type": "boolean",
                        "description": "Fetch each product's detail page for the full record (rich description, upvoters, reviews, rewards, maker, disclosed revenue, team size, tech stack). Turn off to push the lighter listing rows from tag pages as-is — faster and cheaper. Ignored for the full catalog, which always needs a detail fetch.",
                        "default": true
                    },
                    "fullCatalog": {
                        "title": "Scrape the full catalog",
                        "type": "boolean",
                        "description": "Scrape every product on uneed.best (walks the sitemap of all /tool/{slug} pages), capped by Max items. Automatically on when no Start URLs, Tags, or Slugs are provided.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum products to return.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Parallel product-detail fetches.",
                        "default": 6
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. uneed.best has no anti-bot, so proxies are usually unnecessary. Leave off for direct fetching."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
