# Hacker News Scraper and Keyword Alert Monitor (`scrapemint/hn-lead-monitor`) Actor

Watches Hacker News new, top, Ask HN, Show HN, and jobs feeds plus Algolia search for stories and comments matching your keywords, score floor, and age window. Dedupes across runs. For founders, devtool marketers, and recruiters tracking mentions, launches, and hiring signals on HN.

- **URL**: https://apify.com/scrapemint/hn-lead-monitor.md
- **Developed by:** [Kennedy Mutisya](https://apify.com/scrapemint) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

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

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

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

## Hacker News Scraper and Keyword Alert Monitor

Watch Hacker News for stories and comments that match your keywords, score floor, and age window. Export item ID, title, body, author, URL, permalink, points, comment count, and timestamp. Dedupes across runs so you only ever see new matches.

Built for founders who need to catch every "Show HN" in their category, devtool marketers who want to be first in the thread, recruiters tracking "Who is Hiring" and "Ask HN" signals, and market researchers who need raw HN data without scraping the site by hand.

---

### Who uses this Hacker News scraper

```mermaid
flowchart TD
    A[Founders] -->|Catch every<br/>Show HN launch| D[HN Keyword<br/>Feed]
    B[Devtool marketers] -->|Reply first on<br/>category threads| D
    C[Recruiters] -->|Track Who Is<br/>Hiring mentions| D
    E[Market researchers] -->|Capture user pain<br/>in Ask HN| D
    D --> F[Competitor launch alerts]
    D --> G[Category mention tracker]
    D --> H[Hiring signal feed]
````

| Role | What this HN scraper unlocks |
|---|---|
| **Founder** | Alert when any competitor posts a Show HN, so you are in the thread before page two |
| **Devtool marketer** | Track your category keywords and reply in the first 30 minutes, when threads still get traction |
| **Recruiter** | Pull "Who is Hiring" and "Seeking Freelancer" threads, filter by stack, route to ATS |
| **Market researcher** | Export Ask HN threads matching your product category, mine for onboarding pain |
| **DevRel** | Spot every mention of your library and jump in before the "alternatives" thread branches |

***

### How the Hacker News scraper works

```mermaid
flowchart LR
    A[Keywords +<br/>Feeds] --> B{Source}
    B -->|Search| C[HN Algolia API<br/>stories + comments]
    B -->|Feeds| D[HN Firebase API<br/>new/top/ask/show/jobs]
    C --> E[Filter]
    D --> E
    E -->|Age| F[Push to dataset]
    E -->|Score| F
    E -->|Keywords| F
    F --> G[KV store SEEN_IDS]
    G -->|Next run| H[Skip already seen]
    H --> F
```

Pass a list of search queries, a set of HN firehose feeds (new, top, Ask HN, Show HN, jobs), or both. The actor calls two HN endpoints that Y Combinator runs officially:

1. **HN Algolia Search API** for full text search across every HN story and comment. Paginated, 100 results per page, up to 1000 total per query.
2. **HN Firebase API** for the raw firehose: `newstories`, `topstories`, `askstories`, `showstories`, `jobstories`. Up to 500 IDs per list.

Matches are filtered locally by your keywords, score floor, comment count, and age. Every item ID it pushes is stored in the key value store under `SEEN_IDS`. On the next run, already seen IDs are skipped. Schedule the actor every 10 minutes and you get a deduped feed of new matching items, nothing else.

No auth, no API key, no OAuth. Both endpoints are fully public and rate limit friendly.

***

### HN tools vs this scraper

```mermaid
flowchart LR
    subgraph Manual[Check HN by hand]
        A1[Open HN every hour]
        A2[Ctrl-F each thread]
        A3[Miss the first wave]
    end
    subgraph SaaS[HN alert SaaS]
        B1[$10 to $50 per month]
        B2[Keyword cap per plan]
        B3[Email digest only]
    end
    subgraph Actor[This actor]
        C1[Pay per item]
        C2[Unlimited keywords]
        C3[Raw JSON, your webhooks]
    end
    Manual -.-> X[Pick a path]
    SaaS -.-> X
    Actor --> X
```

| Feature | HN alert SaaS | This actor |
|---|---|---|
| Pricing | $10 to $50 per month, flat | Pay per item, first 50 per run free |
| Keyword cap | 5 to 20 per plan tier | Unlimited |
| Source coverage | Search only | Search plus full firehose feeds |
| Dedup across runs | Yes, vendor owned | Yes, in your own key value store |
| Scheduling | Hourly at best | Apify Scheduler every 1 minute |
| Output | Email or Slack | JSON, CSV, Excel, API, or webhook |
| Comment body pull | Usually no | Yes, full text and parent link |

***

### Quick start

Watch HN for any new story or comment that mentions your category. Algolia search, last 7 days:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~hn-lead-monitor/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchQueries": ["vector database", "pinecone alternative"],
    "searchType": "both",
    "sortBy": "newest",
    "maxAgeHours": 168,
    "minScore": 0,
    "dedupe": true
  }'
```

Catch every Show HN launch, last 24 hours, 5+ points:

```json
{
  "feeds": ["show"],
  "keywords": [],
  "maxAgeHours": 24,
  "minScore": 5,
  "maxItemsPerSource": 100
}
```

Recruiter pull on the "Who Is Hiring" thread, filter by stack:

```json
{
  "searchQueries": ["who is hiring"],
  "searchType": "comments",
  "keywords": ["golang", "rust", "postgres"],
  "maxAgeHours": 720
}
```

***

### What one item record looks like

```json
{
  "itemId": "39847291",
  "itemType": "story",
  "title": "Show HN: Open source alternative to AppFollow",
  "text": "Hey HN, we built a free tool that pulls App Store reviews...",
  "url": "https://github.com/user/project",
  "permalink": "https://news.ycombinator.com/item?id=39847291",
  "author": "pg_fan_99",
  "points": 42,
  "numComments": 18,
  "parentId": null,
  "storyId": null,
  "createdAt": "2026-04-19T14:22:00.000Z",
  "tags": ["story", "show_hn"],
  "matchedKeywords": ["app store", "review"],
  "sourceKind": "search",
  "sourceValue": "app store review",
  "scrapedAt": "2026-04-19T19:30:00.000Z"
}
```

Every row: item ID, type (story or comment), title, body, URL, permalink, author, points, comment count, parent link for comments, created timestamp, matched keywords, and which query or feed surfaced it.

***

### Pricing

First 50 items per run are free. After that you pay per item extracted. No seat licenses. No tier gating. A 500 item run lands under $1 on the Apify free plan.

***

### FAQ

**Does this scrape all of Hacker News?**
Yes. The Algolia API covers every story and comment ever posted to HN. The Firebase feeds cover the current 500 newest, top, best, Ask HN, Show HN, and jobs lists.

**How fresh is the data?**
Algolia indexes new items within 30 to 90 seconds of posting. Firebase feeds update in real time.

**Is this allowed?**
Yes. The Algolia API is run by HN's search partner specifically for programmatic access. The Firebase API is maintained by Y Combinator for the same purpose. No rate limit, no key required.

**Does it return comment bodies?**
Yes. Set `searchType` to `comments` or `both`. Each comment row has the full body (HTML stripped), the parent ID, and a link back to its story.

**Does it dedupe?**
Yes. HN item IDs are stored in the key value store under `SEEN_IDS`. Every run skips IDs already seen. Set `dedupe: false` to disable.

**Can I run it on a schedule?**
Yes. Apify Scheduler lets you run every minute. Pair it with a webhook to push new matches into Slack, Discord, Notion, or your CRM.

**What about the "Who Is Hiring" and "Seeking Freelancer" threads?**
Use `searchType: comments` and search for `"who is hiring"` or `"seeking freelancer"`. Filter comments locally by stack keywords.

**Will it catch every Show HN?**
Set `feeds: ["show"]` with no keyword filter. You get every Show HN submission, filtered only by age and score.

***

### Related actors by Scrapemint

- **Reddit Lead Monitor** for subreddit and keyword mention tracking
- **Upwork Opportunity Alert** for freelance lead generation
- **Trustpilot Brand Reputation** for DTC and ecommerce brands
- **Google Reviews Intelligence** for local businesses
- **Amazon Review Intelligence** for product reviews and listings
- **App Store Review Scraper** for mobile apps on iOS and Android
- **Indeed Company Review Intelligence** for employer branding

Stack these to cover every public conversation surface one brand touches.

# Actor input Schema

## `searchQueries` (type: `array`):

Free text queries against Hacker News via Algolia. Example: vector database, open source crm, alternative to notion. Case insensitive. Leave empty if only using firehose feeds below.

## `feeds` (type: `array`):

HN lists to pull alongside search queries. Valid values: new, top, best, ask, show, jobs. new returns the latest submissions. top/best rank by score. ask/show/jobs are the category pages.

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

Only items whose title or text contains any of these keywords are kept. Case insensitive. Leave empty to keep everything the search or feed returned.

## `searchType` (type: `string`):

What Algolia search returns. Stories is submissions only. Comments is only comment bodies. Both pulls from both endpoints.

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

Newest returns the latest matches first. Popularity ranks by HN points and Algolia relevance.

## `maxAgeHours` (type: `integer`):

Skip items older than this many hours. 0 keeps everything regardless of age.

## `minScore` (type: `integer`):

Skip stories with fewer than this many HN points. Comments have no score, so this is ignored for comments.

## `minComments` (type: `integer`):

Skip stories with fewer than this many comments. Ignored for comment results.

## `maxItemsPerSource` (type: `integer`):

Per source cap. Algolia pages contain up to 1000 results total via pagination.

## `maxItemsTotal` (type: `integer`):

Hard cap on items pushed to the dataset per run. Controls cost.

## `dedupe` (type: `boolean`):

Skip HN item IDs pushed on previous runs. Stored in the key value store under SEEN\_IDS. Turn off to return every match on every run.

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

Apify proxy settings. HN and Algolia endpoints are fully public and do not require a proxy, but add one if your schedule triggers rate limiting.

## Actor input object example

```json
{
  "searchQueries": [
    "vector database",
    "open source crm"
  ],
  "feeds": [],
  "searchType": "stories",
  "sortBy": "newest",
  "maxAgeHours": 168,
  "minScore": 0,
  "minComments": 0,
  "maxItemsPerSource": 100,
  "maxItemsTotal": 200,
  "dedupe": true
}
```

# 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 = {
    "searchQueries": [
        "vector database",
        "open source crm"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/hn-lead-monitor").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 = { "searchQueries": [
        "vector database",
        "open source crm",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/hn-lead-monitor").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 '{
  "searchQueries": [
    "vector database",
    "open source crm"
  ]
}' |
apify call scrapemint/hn-lead-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Hacker News Scraper and Keyword Alert Monitor",
        "description": "Watches Hacker News new, top, Ask HN, Show HN, and jobs feeds plus Algolia search for stories and comments matching your keywords, score floor, and age window. Dedupes across runs. For founders, devtool marketers, and recruiters tracking mentions, launches, and hiring signals on HN.",
        "version": "0.1",
        "x-build-id": "axEC1h7O4tHdkhFPE"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapemint~hn-lead-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapemint-hn-lead-monitor",
                "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/scrapemint~hn-lead-monitor/runs": {
            "post": {
                "operationId": "runs-sync-scrapemint-hn-lead-monitor",
                "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/scrapemint~hn-lead-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-scrapemint-hn-lead-monitor",
                "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": {
                    "searchQueries": {
                        "title": "Search queries (Algolia)",
                        "type": "array",
                        "description": "Free text queries against Hacker News via Algolia. Example: vector database, open source crm, alternative to notion. Case insensitive. Leave empty if only using firehose feeds below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "feeds": {
                        "title": "Firehose feeds (optional)",
                        "type": "array",
                        "description": "HN lists to pull alongside search queries. Valid values: new, top, best, ask, show, jobs. new returns the latest submissions. top/best rank by score. ask/show/jobs are the category pages.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "keywords": {
                        "title": "Keywords (client side filter)",
                        "type": "array",
                        "description": "Only items whose title or text contains any of these keywords are kept. Case insensitive. Leave empty to keep everything the search or feed returned.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchType": {
                        "title": "Search type",
                        "enum": [
                            "stories",
                            "comments",
                            "both"
                        ],
                        "type": "string",
                        "description": "What Algolia search returns. Stories is submissions only. Comments is only comment bodies. Both pulls from both endpoints.",
                        "default": "stories"
                    },
                    "sortBy": {
                        "title": "Sort",
                        "enum": [
                            "newest",
                            "popularity"
                        ],
                        "type": "string",
                        "description": "Newest returns the latest matches first. Popularity ranks by HN points and Algolia relevance.",
                        "default": "newest"
                    },
                    "maxAgeHours": {
                        "title": "Max age in hours",
                        "minimum": 0,
                        "maximum": 17520,
                        "type": "integer",
                        "description": "Skip items older than this many hours. 0 keeps everything regardless of age.",
                        "default": 168
                    },
                    "minScore": {
                        "title": "Minimum points",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Skip stories with fewer than this many HN points. Comments have no score, so this is ignored for comments.",
                        "default": 0
                    },
                    "minComments": {
                        "title": "Minimum comments",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Skip stories with fewer than this many comments. Ignored for comment results.",
                        "default": 0
                    },
                    "maxItemsPerSource": {
                        "title": "Max items per query or feed",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Per source cap. Algolia pages contain up to 1000 results total via pagination.",
                        "default": 100
                    },
                    "maxItemsTotal": {
                        "title": "Maximum items per run",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Hard cap on items pushed to the dataset per run. Controls cost.",
                        "default": 200
                    },
                    "dedupe": {
                        "title": "Deduplicate across runs",
                        "type": "boolean",
                        "description": "Skip HN item IDs pushed on previous runs. Stored in the key value store under SEEN_IDS. Turn off to return every match on every run.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy settings. HN and Algolia endpoints are fully public and do not require a proxy, but add one if your schedule triggers rate limiting."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
