# MyAnimeList Scraper — Anime & Manga Data, Ratings API (`logiover/mal-anime-scraper`) Actor

Unofficial MyAnimeList API powered by the free, open Jikan API — no key, no browser. Scrape anime & manga data: top charts, full-text search, seasonal anime, ratings, characters, voice actors and recommendations. Export to JSON, CSV or Excel for analytics, ML and recommendation engines.

- **URL**: https://apify.com/logiover/mal-anime-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Videos, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

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

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

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

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

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

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

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

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

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


# README

## MyAnimeList Scraper — Anime & Manga Data API (Ratings, Seasonal, Characters)

An **unofficial MyAnimeList scraper** and structured **anime data API** in a single Apify actor. Pull top anime and manga charts, run full-text search, browse any season, and fetch ratings, characters, voice actors and recommendations — powered by the **free, open Jikan API** (the unofficial MyAnimeList API). No API key, no login, no headless browser — just fast HTTP and clean, flat JSON you can export to CSV, Excel or JSON.

This **MyAnimeList API alternative** is built for data teams, anime and manga analysts, recommendation-engine developers, machine-learning practitioners, streaming apps, Discord bot builders and AI agents who need reliable, structured **anime data** on demand. Eight modes share one input form, and every result is tagged with `_mode` so you can mix modes in a single dataset and filter later.

### What you get

- **Top charts** — the highest-rated and most-popular anime and manga, paginated through the full ranking. Filter by `airing`, `upcoming`, `bypopularity` or `favorite`.
- **Ratings** — `score`, `scoredBy`, `rank`, `popularity`, `members` and `favorites` on every anime and manga, straight from MyAnimeList.
- **Full-text search** — search anime or manga by title and narrow with genre IDs, type, airing/publishing status, and custom ordering (by score, rank, popularity, members, start date and more).
- **Seasonal anime** — every title in a given `winter` / `spring` / `summer` / `fall` season for any year, or the current season — a ready-made **seasonal anime API**.
- **Anime details** — `title`, `titleEnglish`, `titleJapanese`, `type`, `episodes`, `status`, `source`, `duration`, `rating`, `year`, `season`, `genres[]`, `themes[]`, `demographics[]`, `studios[]`, `producers[]`, `airedFrom`/`airedTo`, `synopsis`, poster `imageUrl` and `trailerUrl`.
- **Manga details** — `chapters`, `volumes`, publishing status, `authors[]`, `serializations[]`, `publishedFrom`/`publishedTo` and full synopsis.
- **Characters & voice actors** — every character of an anime with `role`, `favorites`, image and the `voiceActors[]` cast (name + language).
- **Recommendations** — the community recommendation graph: which anime fans of a given title also recommend, with vote counts.
- **Universal** — clean MyAnimeList `url`, plus `_mode` and `scrapedAt` (ISO 8601) on every item.

Export everything as **CSV, JSON, Excel (XLSX)**, HTML, RSS or JSON Lines. Five pre-built dataset views (Overview, Anime, Manga, Characters, Recommendations) let you slice the data with zero post-processing.

#### The 8 modes

| Mode | What it returns |
|---|---|
| `topAnime` | Top / most-popular anime chart, paginated (highest volume, default) |
| `topManga` | Top / most-popular manga chart, paginated |
| `searchAnime` | Full-text anime search with genre, type, status and ordering filters |
| `searchManga` | Full-text manga search |
| `seasonal` | Every anime in a season (by year & season, or the current season) |
| `animeDetails` | Full details for one or many anime IDs (batch) |
| `characters` | Characters + voice actors for one or many anime IDs |
| `recommendations` | Community anime recommendations for one or many anime IDs |

### Use cases

- **Anime & manga analytics** — build a **anime ratings dataset** filtered by genre, year and popularity, then chart trends in a BI tool.
- **Recommendation engines & ML** — bulk-ingest titles, genres, scores, studios and the recommendation graph to train content-based or collaborative recommenders.
- **Streaming & catalog apps** — enrich your own catalog with MyAnimeList metadata, posters, synopses, episode counts and studios via `animeDetails`.
- **Seasonal tracking** — pull every show each season to power a "what's airing now" page, a Discord bot or a newsletter.
- **Character & cast databases** — collect characters and voice actors across a series list for wikis, quizzes or fan tools.
- **AI agents & RAG** — wrap the actor as a tool so an LLM can answer "what are the top-rated fantasy anime?" or embed synopses and recommendations.

### How to use

1. Open the actor and pick a **Mode**.
2. Fill the fields that mode needs — the input form shows which apply:
   - **topAnime / topManga**: optionally set `filter` and `type`, plus `maxResults`.
   - **searchAnime / searchManga**: set `query` (and optionally `genres`, `type`, `status`, `orderBy`, `sort`).
   - **seasonal**: set `year` and `season` (or leave both empty for the current season).
   - **animeDetails / characters / recommendations**: set an `animeId` like `1` (or a batch in `animeIds`).
3. Optionally set `maxResults` for the paginated modes.
4. Run the actor and export results as CSV, JSON or Excel — or pull them via the Apify API.

Example — top 100 airing anime by rating:

```json
{
  "mode": "topAnime",
  "filter": "airing",
  "maxResults": 100
}
````

Example — search fantasy anime by score:

```json
{
  "mode": "searchAnime",
  "query": "",
  "genres": ["10"],
  "orderBy": "score",
  "sort": "desc",
  "maxResults": 100
}
```

Call it from your stack via the Apify API (`run-sync-get-dataset-items`), the JavaScript/Python clients, or no-code tools like Make, n8n and Zapier.

### FAQ

#### How do I scrape MyAnimeList without an API key?

Use this actor. It reads publicly available MyAnimeList data through the free, open **Jikan API**, so you need no MyAnimeList API key, no OAuth and no login — only an Apify account. Pick a mode, run it, and export the data.

#### Is this a MyAnimeList API or a MyAnimeList API alternative?

Both, effectively. It works as an **unofficial MyAnimeList API** and a practical **MyAnimeList API alternative**: you send structured input and get structured JSON back, without the official MAL API's OAuth flow, quotas or client registration.

#### What is the Jikan API?

**Jikan** is a free, open-source, unofficial REST API for MyAnimeList. This actor calls Jikan under the hood, adds pagination, retries with backoff, rate-limit handling and clean flattened output, and packages it as a ready-to-run scraper with CSV/JSON/Excel export.

#### How do I scrape anime ratings and rankings?

Every anime and manga row includes `score`, `scoredBy`, `rank`, `popularity` and `members`. Use `topAnime`/`topManga` to build a ranked ratings dataset, or `searchAnime` with `orderBy: "score"` for a filtered chart.

#### How do I get a seasonal anime list?

Pick `seasonal` mode and set `year` and `season` (`winter`, `spring`, `summer`, `fall`) — or leave both empty for the current season. The actor paginates every title in that season, giving you a complete **seasonal anime dataset**.

#### Can I export the anime dataset to CSV, JSON or Excel?

Yes. Run any mode and download the dataset as CSV, JSON, Excel (XLSX), HTML, RSS or JSON Lines from the run page, or pull it via the Apify API. This makes it a simple **anime dataset export** and manga data tool.

#### How do I get MyAnimeList IDs?

A MAL anime or manga ID is the number in the URL (e.g. `myanimelist.net/anime/1` → `1`). Use `topAnime`, `searchAnime` or `seasonal` first to discover IDs, then feed them into `animeDetails`, `characters` or `recommendations`.

#### How do I scrape anime characters and voice actors?

Pick `characters` mode and set an `animeId`. The actor returns every character with role, favorites, image and the voice-actor cast (name + language). Pass multiple IDs in `animeIds` to build a cast database across many shows.

#### Does it respect Jikan's rate limits?

Yes. The actor sleeps between requests and backs off automatically on HTTP 429, staying within Jikan's ~3 requests/second and 60/minute limits, so large paginated pulls run reliably.

### Support

Open an issue on the actor page for bugs, feature requests, or custom modifications. Responses typically within 24 hours.

### 📝 Changelog

#### 2026-07-01

- Initial release: eight MyAnimeList modes (top anime, top manga, search anime, search manga, seasonal, anime details, characters, recommendations) over the free Jikan API — no key, no browser.

# Actor input Schema

## `mode` (type: `string`):

Which MyAnimeList / Jikan endpoint to run.

• **topAnime** — top / most-popular anime chart, paginated (highest volume, default)
• **topManga** — top / most-popular manga chart, paginated
• **searchAnime** — full-text anime search with genre/type/status/order filters
• **searchManga** — full-text manga search
• **seasonal** — every anime in a given season (or the current season)
• **animeDetails** — full details for one or more anime IDs (batch)
• **characters** — characters + voice actors for one or more anime IDs
• **recommendations** — community anime recommendations for one or more anime IDs

## `query` (type: `string`):

Free-text term for **searchAnime** / **searchManga** mode (anime or manga title). Leave empty to browse all entries by the chosen filters/order.

## `genres` (type: `array`):

Filter search by one or more MyAnimeList genre IDs (comma-separated or list). Examples: 1 = Action, 2 = Adventure, 4 = Comedy, 8 = Drama, 10 = Fantasy, 14 = Horror, 22 = Romance, 24 = Sci-Fi, 30 = Sports, 37 = Supernatural. Leave empty for all genres.

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

Filter search by airing/publishing status. Anime: `airing`, `complete`, `upcoming`. Manga: `publishing`, `complete`, `hiatus`, `discontinued`, `upcoming`.

## `orderBy` (type: `string`):

Field to sort search results by, e.g. `score`, `rank`, `popularity`, `members`, `favorites`, `title`, `start_date`, `episodes` (anime) / `chapters` (manga).

## `sort` (type: `string`):

Sort direction for `orderBy`. `desc` = highest first, `asc` = lowest first.

## `filter` (type: `string`):

Optional filter for the top charts. Anime: `airing`, `upcoming`, `bypopularity`, `favorite`. Manga: `publishing`, `upcoming`, `bypopularity`, `favorite`. Leave empty for the overall top-rated chart.

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

Optional media type filter. Anime: `tv`, `movie`, `ova`, `special`, `ona`, `music`. Manga: `manga`, `novel`, `lightnovel`, `oneshot`, `doujin`, `manhwa`, `manhua`. Used by topAnime/topManga and searchAnime/searchManga.

## `year` (type: `integer`):

Year for **seasonal** mode, e.g. `2024`. Combine with `season`. If either year or season is empty, the current season is used.

## `season` (type: `string`):

Season for **seasonal** mode. One of `winter`, `spring`, `summer`, `fall`. Combine with `year`.

## `animeId` (type: `string`):

Numeric MyAnimeList anime ID, e.g. `1` (Cowboy Bebop). Used by **animeDetails**, **characters**, **recommendations**. The number after `/anime/` in a MAL URL.

## `animeIds` (type: `array`):

Array of numeric MyAnimeList anime IDs for batch **animeDetails**, **characters** or **recommendations**.

## `maxResults` (type: `integer`):

Upper bound on rows returned for the paginated modes (topAnime, topManga, searchAnime, searchManga, seasonal). Jikan returns 25 per page, so 100 = 4 pages.

## Actor input object example

```json
{
  "mode": "topAnime",
  "query": "naruto",
  "genres": [],
  "status": "complete",
  "orderBy": "score",
  "sort": "desc",
  "type": "tv",
  "year": 2024,
  "season": "fall",
  "animeId": "1",
  "animeIds": [],
  "maxResults": 100
}
```

# Actor output Schema

## `results` (type: `string`):

Full results dataset. Use the Anime view for anime modes, Manga for manga modes, Characters for character lists, and Recommendations for the recommendation graph.

# 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 = {
    "mode": "topAnime",
    "orderBy": "score",
    "year": 2024,
    "season": "fall",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/mal-anime-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 = {
    "mode": "topAnime",
    "orderBy": "score",
    "year": 2024,
    "season": "fall",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/mal-anime-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 '{
  "mode": "topAnime",
  "orderBy": "score",
  "year": 2024,
  "season": "fall",
  "maxResults": 100
}' |
apify call logiover/mal-anime-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MyAnimeList Scraper — Anime & Manga Data, Ratings API",
        "description": "Unofficial MyAnimeList API powered by the free, open Jikan API — no key, no browser. Scrape anime & manga data: top charts, full-text search, seasonal anime, ratings, characters, voice actors and recommendations. Export to JSON, CSV or Excel for analytics, ML and recommendation engines.",
        "version": "1.0",
        "x-build-id": "H6ukmnr1IDYirAA86"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~mal-anime-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-mal-anime-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/logiover~mal-anime-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-mal-anime-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/logiover~mal-anime-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-mal-anime-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "topAnime",
                            "topManga",
                            "searchAnime",
                            "searchManga",
                            "seasonal",
                            "animeDetails",
                            "characters",
                            "recommendations"
                        ],
                        "type": "string",
                        "description": "Which MyAnimeList / Jikan endpoint to run.\n\n• **topAnime** — top / most-popular anime chart, paginated (highest volume, default)\n• **topManga** — top / most-popular manga chart, paginated\n• **searchAnime** — full-text anime search with genre/type/status/order filters\n• **searchManga** — full-text manga search\n• **seasonal** — every anime in a given season (or the current season)\n• **animeDetails** — full details for one or more anime IDs (batch)\n• **characters** — characters + voice actors for one or more anime IDs\n• **recommendations** — community anime recommendations for one or more anime IDs",
                        "default": "topAnime"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Free-text term for **searchAnime** / **searchManga** mode (anime or manga title). Leave empty to browse all entries by the chosen filters/order."
                    },
                    "genres": {
                        "title": "Genre IDs",
                        "type": "array",
                        "description": "Filter search by one or more MyAnimeList genre IDs (comma-separated or list). Examples: 1 = Action, 2 = Adventure, 4 = Comedy, 8 = Drama, 10 = Fantasy, 14 = Horror, 22 = Romance, 24 = Sci-Fi, 30 = Sports, 37 = Supernatural. Leave empty for all genres.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "status": {
                        "title": "Status",
                        "type": "string",
                        "description": "Filter search by airing/publishing status. Anime: `airing`, `complete`, `upcoming`. Manga: `publishing`, `complete`, `hiatus`, `discontinued`, `upcoming`."
                    },
                    "orderBy": {
                        "title": "Order by (search)",
                        "type": "string",
                        "description": "Field to sort search results by, e.g. `score`, `rank`, `popularity`, `members`, `favorites`, `title`, `start_date`, `episodes` (anime) / `chapters` (manga)."
                    },
                    "sort": {
                        "title": "Sort direction (search)",
                        "enum": [
                            "desc",
                            "asc"
                        ],
                        "type": "string",
                        "description": "Sort direction for `orderBy`. `desc` = highest first, `asc` = lowest first.",
                        "default": "desc"
                    },
                    "filter": {
                        "title": "Chart filter (topAnime / topManga)",
                        "enum": [
                            "",
                            "airing",
                            "publishing",
                            "upcoming",
                            "bypopularity",
                            "favorite"
                        ],
                        "type": "string",
                        "description": "Optional filter for the top charts. Anime: `airing`, `upcoming`, `bypopularity`, `favorite`. Manga: `publishing`, `upcoming`, `bypopularity`, `favorite`. Leave empty for the overall top-rated chart."
                    },
                    "type": {
                        "title": "Type",
                        "type": "string",
                        "description": "Optional media type filter. Anime: `tv`, `movie`, `ova`, `special`, `ona`, `music`. Manga: `manga`, `novel`, `lightnovel`, `oneshot`, `doujin`, `manhwa`, `manhua`. Used by topAnime/topManga and searchAnime/searchManga."
                    },
                    "year": {
                        "title": "Year (seasonal)",
                        "minimum": 1917,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Year for **seasonal** mode, e.g. `2024`. Combine with `season`. If either year or season is empty, the current season is used."
                    },
                    "season": {
                        "title": "Season (seasonal)",
                        "enum": [
                            "winter",
                            "spring",
                            "summer",
                            "fall"
                        ],
                        "type": "string",
                        "description": "Season for **seasonal** mode. One of `winter`, `spring`, `summer`, `fall`. Combine with `year`."
                    },
                    "animeId": {
                        "title": "Anime ID (MAL)",
                        "type": "string",
                        "description": "Numeric MyAnimeList anime ID, e.g. `1` (Cowboy Bebop). Used by **animeDetails**, **characters**, **recommendations**. The number after `/anime/` in a MAL URL."
                    },
                    "animeIds": {
                        "title": "Anime IDs (batch)",
                        "type": "array",
                        "description": "Array of numeric MyAnimeList anime IDs for batch **animeDetails**, **characters** or **recommendations**.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 25000,
                        "type": "integer",
                        "description": "Upper bound on rows returned for the paginated modes (topAnime, topManga, searchAnime, searchManga, seasonal). Jikan returns 25 per page, so 100 = 4 pages.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
