# Instagram Stories & Highlights Scraper · Download · No Login (`memo23/instagram-stories-highlights-scraper`) Actor

Instagram Stories & Highlights Scraper — pull active stories and permanent highlights from any public account. Image & video URLs, media type, timestamps, music, and highlight titles. Optional permanent file download. No login, no cookies. Stories, highlights, or both. JSON/CSV/Excel.

- **URL**: https://apify.com/memo23/instagram-stories-highlights-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Social media, AI, Automation
- **Stats:** 27 total users, 24 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $7.00 / 1,000 account scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Instagram Stories & Highlights Scraper

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/instagram-stories-highlights-logo.png" alt="Instagram Stories & Highlights Scraper" width="240" />
</p>

**Scrape the active stories and permanent highlights of any public Instagram account — no login, no cookies, zero risk to your own account.** Paste one or more usernames and get back every story and highlight item with direct image and video URLs, media type, timestamps, expiry, music, and highlight titles. Optionally **download the media files** to permanent storage so they never expire. Export as JSON, CSV, or Excel.

| Input | What you get |
|---|---|
| A single username (e.g. `nike`) | Its active stories and/or highlight items, per `dataToScrape` |
| Multiple usernames | All of them in one run, each row tagged by `sourceUsername` and `type` |
| Profile URL (`https://www.instagram.com/nike`) | Same as a username — URLs are accepted too |

> Pure HTTP. No browser, no CAPTCHA solver, no cookies, no third-party bypass service.

### Why Use This Scraper?

- **Zero account risk** — you never hand over Instagram cookies or log in, so your account can't be flagged, throttled, or banned.
- **Stories *and* highlights in one Actor** — collect active 24-hour stories, permanent highlight trays, or both, selected per run. Most competitors split these across separate actors.
- **Direct media URLs + optional download** — every item includes the image URL and, for videos, the playable video URL. Instagram's own URLs expire after a few hours; flip on `downloadMedia` to save the files permanently and get a non-expiring `downloadUrl`.
- **Retrieve expired stories (opt-in)** — every run adds what it scrapes to a permanent archive. Turn on `includeHistorical` to also return items captured on earlier runs that a live scrape can no longer see — **stories that have since expired or been deleted** — each with permanent (non-expiring) media. This is data no live-only scraper can give you; coverage grows the more an account is run.
- **Multiple profiles per run** — pass a whole list of usernames; every row is tagged with its source account and list type.
- **Fast** — pure HTTP, no browser, no CAPTCHA solver.

### How It Works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-instagram-stories-highlights.png" alt="How the Instagram Stories & Highlights Scraper works" width="900" />
</p>

1. **Resolve** — each input username (or profile URL) is looked up to its Instagram account, and you choose stories, highlights, or both.
2. **Fetch** — active 24-hour stories and permanent highlight trays are pulled page by page over pure HTTP — no browser, no cookies.
3. **Emit** — every story or highlight item is pushed to the dataset as its own row, tagged with `sourceUsername` and `type`. With `downloadMedia` on, each file is also saved to permanent storage and its `downloadUrl` is added to the row.

### Supported Inputs

- Handles are accepted with or without the leading `@`, and full profile URLs work too (`https://www.instagram.com/nike`, `instagram.com/nike/`, mobile `m.instagram.com`).
- **Not supported:** private accounts (their stories/highlights aren't public — the Actor returns an error item), hashtags, post/reel URLs.

### Use Cases

| Audience | How they use it |
|---|---|
| Social media managers | Archive a brand's own stories and highlights before they expire |
| Competitive analysts | Track what competitors post to stories and how they organize highlights |
| Content researchers | Collect story/highlight media for trend and creative analysis |
| Marketers | Pull highlight covers and media for campaign audits |

### Input

| Field | Type | Required | Notes |
|---|---|---|---|
| `usernames` | array of strings | Yes | Public usernames or profile URLs, with or without `@`. |
| `dataToScrape` | string | No | Dropdown: `stories`, `highlights`, or `both`. Default: `stories`. |
| `downloadMedia` | boolean | No | Save each image/video to permanent storage and add a non-expiring `downloadUrl`. Default: `false`. |
| `includeHistorical` | boolean | No | Also return archived items captured on earlier runs — including expired or deleted stories a live scrape can't see — tagged `source:"archive"`. Paying accounts only. Default: `false`. |
| `maxHighlightsPerUser` | integer | No | Cap how many highlight trays to expand per account. Omit for all. |

#### Example input

```json
{
    "usernames": ["nike", "https://www.instagram.com/natgeo"],
    "dataToScrape": "both",
    "downloadMedia": true
}
````

### Output Schema

One dataset row per story or highlight item. Runs stream to the default dataset, exportable as JSON, CSV, Excel, or via the API.

```jsonc
{
    "sourceUsername": "nike",          // the input account this item came from
    "type": "highlight",               // "story" or "highlight"
    "highlightId": "highlight:17975319242920589", // the tray (null for stories)
    "highlightTitle": "Just Do It",    // tray title (null for stories)
    "mediaPk": "3718111997642014700",
    "shortCode": "DOZYymWkgAN",
    "mediaType": "photo",              // "photo" or "video"
    "takenAt": "2025-09-09T21:31:48.000Z",
    "expiringAt": null,                // when an active story expires (stories only)
    "imageUrl": "https://scontent.cdninstagram.com/v/t51...",
    "videoUrl": null,                  // set only for videos
    "width": 1179,
    "height": 2096,
    "videoDuration": null,             // seconds (videos only)
    "hasAudio": null,                  // videos only
    "musicTitle": null,
    "musicArtist": null,
    "storyCommentCount": null,
    "downloadUrl": "https://api.apify.com/v2/key-value-stores/…/records/nike-highlight-….jpg" // when downloadMedia is on, else null
}
```

When `includeHistorical` is on, archived items carry three extra fields: `source: "archive"`, `firstSeenAt`, and `lastSeenAt` (ISO timestamps for when the item was first and last captured), and a permanent `downloadUrl`. Live items have no `source` field.

### Pricing

Pay-per-event — you're charged only for what you actually collect. No subscription, no per-run start fee. Rates decrease with your Apify plan tier (Free → Gold+ shown below).

| Event | When it's charged | Rate (Free → Gold+) |
|---|---|---|
| Account scraped | Once per public account processed | $0.010 → $0.007 |
| Highlight tray | Once per highlight tray expanded (returns all its items) | $0.0040 → $0.0028 |
| Media downloaded | Once per file saved, only when `downloadMedia` is on | $0.0020 → $0.0014 |
| Historical story/highlight | Once per archived (expired/deleted) item returned, only with `includeHistorical` | $0.0040 → $0.0028 |

Private, missing, or invalid accounts return an error item and are **not** charged. Live story and highlight items themselves are free — you pay per account and per highlight tray (above); the historical charge applies only to archived items delivered via `includeHistorical`.

### What Makes This Richer Than the Competition

| Capability | Typical competitor | This Actor |
|---|---|---|
| Stories **and** highlights | Split across two actors | One actor, one run |
| Login / cookies required | Often | Never |
| Media file download | Rental-only or missing | Opt-in, pay-per-file, permanent |
| Video duration / audio / music | Rare | Included |
| Private-account handling | Fails the run | Clean error item, run succeeds |

### FAQ

**Do I need to provide my Instagram cookies or log in?**
No. This Actor never asks for cookies, passwords, or a session.

**Does it work on private accounts?**
Only public accounts. A private account's stories and highlights aren't public, so the Actor emits an error item for it and continues with your other usernames.

**How fresh are stories?**
Active stories are fetched live at run time. They expire 24 hours after posting — the `expiringAt` field tells you when.

**The image/video URLs stopped working — why?**
Instagram's own CDN URLs expire after a few hours. Enable `downloadMedia` to save the files to permanent storage and use the non-expiring `downloadUrl` instead.

**Can I get highlights instead of stories?**
Yes — set `dataToScrape` to `stories`, `highlights`, or `both`. Every row carries a `type` field.

**Can I retrieve stories that already expired?**
Yes, if they were captured on an earlier run. Every run adds what it scrapes to a permanent archive; turn on `includeHistorical` to also return archived items — including expired or deleted stories — each with permanent media and tagged `source:"archive"`. It's a premium, paying-only option priced per archived item, and coverage depends on what's already in the archive, so it pays to run an account regularly.

### Notes & Limitations

- Active stories are only available while live (24 hours after posting). An account with no active stories returns zero story rows — this is normal, not an error.
- `downloadMedia` adds run time and a small per-file charge; leave it off if the (temporary) URLs are enough.
- Highlight trays can contain many items; use `maxHighlightsPerUser` to cap cost on accounts with lots of highlights.
- `includeHistorical` returns only items already in the archive (captured on earlier runs). A never-before-scraped account has no history yet and returns nothing extra — run accounts regularly to build their archive.

### 🤖 For AI Agents & LLM Apps

**Purpose:** Return the active stories and/or permanent highlights of public Instagram accounts, with direct media URLs and optional permanent file download.

**Minimal tested input:**

```json
{ "usernames": ["nike"], "dataToScrape": "both" }
```

**Optional flags:** `downloadMedia: true` adds a permanent `downloadUrl` per item. `includeHistorical: true` (paying accounts) also returns archived items captured on earlier runs — including expired/deleted stories — tagged `source:"archive"` with `firstSeenAt`/`lastSeenAt`.

**Output:** array of flat objects, one per media item. Fields: `sourceUsername`, `type` (`story`/`highlight`), `highlightId`, `highlightTitle`, `mediaPk`, `shortCode`, `mediaType` (`photo`/`video`), `takenAt`, `expiringAt`, `imageUrl`, `videoUrl`, `width`, `height`, `videoDuration`, `hasAudio`, `musicTitle`, `musicArtist`, `storyCommentCount`, `downloadUrl`. Archived rows (with `includeHistorical`) add `source: "archive"`, `firstSeenAt`, `lastSeenAt`.

**Behavior & billing:** Pay-per-event, tiered by Apify plan — `account-scraped` ($0.010→$0.007), `highlight-tray` ($0.0040→$0.0028), `media-downloaded` ($0.0020→$0.0014, only with `downloadMedia:true`), `historical-item` ($0.0040→$0.0028, only for archived rows via `includeHistorical`). Live story/highlight items are free output. Private/missing/invalid accounts yield one error item (`{sourceUsername, error, message}`) and are not charged. No login or cookies required.

### Support

Found a bug or need a field added? Open an issue on the Actor's **Issues** tab in Apify Console, or email <muhamed.didovic@gmail.com>.

### ⚠️ Disclaimer

This Actor scrapes only publicly available data and does not log into any Instagram account. Use it in compliance with Instagram's Terms of Use, applicable laws, and data-protection regulations (such as GDPR and CCPA). You are responsible for how you collect and use the data, including obtaining any consent required for personal data. This tool is intended for lawful purposes such as analytics, research, and archiving of public content.

### SEO Keywords

instagram stories scraper, instagram highlights scraper, download instagram stories, instagram story downloader, instagram highlights downloader, scrape instagram stories, instagram story archive, instagram highlight export, instagram story video download, instagram media downloader, instagram story url, no login instagram scraper, no cookies instagram scraper, instagram stories api, instagram highlights api, apify instagram scraper

# Actor input Schema

## `usernames` (type: `array`):

Public Instagram accounts whose active stories and/or highlights you want to scrape. Accepts plain handles (nike), @-handles (@nike), or profile URLs (https://www.instagram.com/nike) — one per line, mixed formats are fine. Private accounts return an error item. Example: \["nike", "https://www.instagram.com/natgeo"].

## `dataToScrape` (type: `string`):

Which to collect for each account: Stories (active 24h stories), Highlights (permanent highlight trays), or both.

## `maxHighlightsPerUser` (type: `integer`):

Cap how many highlight trays to expand per account (each tray still returns all its items). Leave empty for all trays. Ignored for stories.

## `downloadMedia` (type: `boolean`):

Also download each image/video and save it permanently to storage, returning a non-expiring downloadUrl per item. Instagram's own media URLs expire after a few hours — enable this to keep the files. Adds run time and a small per-file charge. Default: off.

## `includeHistorical` (type: `boolean`):

Also return stories and highlight items captured on earlier runs that a live scrape can no longer see — expired or deleted stories. Each historical row is tagged source:"archive" with firstSeenAt/lastSeenAt. Paying accounts only. Off by default. Example: enable to pull a creator's expired stories from the archive alongside what's live right now.

## Actor input object example

```json
{
  "usernames": [
    "nike",
    "https://www.instagram.com/natgeo"
  ],
  "dataToScrape": "stories",
  "downloadMedia": false,
  "includeHistorical": false
}
```

# 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 = {
    "usernames": [
        "nike"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/instagram-stories-highlights-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 = { "usernames": ["nike"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/instagram-stories-highlights-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 '{
  "usernames": [
    "nike"
  ]
}' |
apify call memo23/instagram-stories-highlights-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Instagram Stories & Highlights Scraper · Download · No Login",
        "description": "Instagram Stories & Highlights Scraper — pull active stories and permanent highlights from any public account. Image & video URLs, media type, timestamps, music, and highlight titles. Optional permanent file download. No login, no cookies. Stories, highlights, or both. JSON/CSV/Excel.",
        "version": "1.0",
        "x-build-id": "LS7O2byVwqweRgN4l"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~instagram-stories-highlights-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-instagram-stories-highlights-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~instagram-stories-highlights-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-instagram-stories-highlights-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~instagram-stories-highlights-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-instagram-stories-highlights-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": [
                    "usernames"
                ],
                "properties": {
                    "usernames": {
                        "title": "Instagram usernames",
                        "type": "array",
                        "description": "Public Instagram accounts whose active stories and/or highlights you want to scrape. Accepts plain handles (nike), @-handles (@nike), or profile URLs (https://www.instagram.com/nike) — one per line, mixed formats are fine. Private accounts return an error item. Example: [\"nike\", \"https://www.instagram.com/natgeo\"].",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dataToScrape": {
                        "title": "Data to scrape",
                        "enum": [
                            "stories",
                            "highlights",
                            "both"
                        ],
                        "type": "string",
                        "description": "Which to collect for each account: Stories (active 24h stories), Highlights (permanent highlight trays), or both.",
                        "default": "stories"
                    },
                    "maxHighlightsPerUser": {
                        "title": "Max highlight trays per user",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Cap how many highlight trays to expand per account (each tray still returns all its items). Leave empty for all trays. Ignored for stories."
                    },
                    "downloadMedia": {
                        "title": "Download media files",
                        "type": "boolean",
                        "description": "Also download each image/video and save it permanently to storage, returning a non-expiring downloadUrl per item. Instagram's own media URLs expire after a few hours — enable this to keep the files. Adds run time and a small per-file charge. Default: off.",
                        "default": false
                    },
                    "includeHistorical": {
                        "title": "Include historical (archived) stories",
                        "type": "boolean",
                        "description": "Also return stories and highlight items captured on earlier runs that a live scrape can no longer see — expired or deleted stories. Each historical row is tagged source:\"archive\" with firstSeenAt/lastSeenAt. Paying accounts only. Off by default. Example: enable to pull a creator's expired stories from the archive alongside what's live right now.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
