# arXiv Scraper — Search & Export Paper Metadata (`devilscrapes/arxiv-papers-scraper`) Actor

Search arXiv by query, category, or author and export structured paper metadata — title, authors, abstract, primary category, DOI, PDF URL, submitted and updated timestamps — to JSON or CSV. An arXiv API wrapper that handles pagination, retries, and rate-limit pacing for your pipeline.

- **URL**: https://apify.com/devilscrapes/arxiv-papers-scraper.md
- **Developed by:** [DevilScrapes](https://apify.com/devilscrapes) (community)
- **Categories:** AI, Developer tools
- **Stats:** 3 total users, 0 monthly users, 90.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

<div align="center">
  <img src=".actor/icon.svg" width="160" alt="Devil Scrapes mark" />

## arXiv Scraper — Search, Paginate & Export Paper Metadata

▶️ **[Full tutorial on YouTube](https://youtu.be/Mipt908A08A)**

▶️ **[45-second demo on YouTube](https://youtube.com/shorts/LzuPW6-gzMg)**

**💰 $1.50 / 1 000 results** &nbsp;·&nbsp; pay only for results &nbsp;·&nbsp; no credit card to try

_We do the dirty work so your dataset stays clean._ 😈

Download arXiv papers metadata at scale — search by query, category, or author and get structured rows with title, authors, abstract, primary category, DOI, PDF URL, and submission timestamps. We handle pagination, retries, proxy rotation, and rate-limit pacing so your research pipeline gets clean typed records instead of brittle XML.

</div>

---

### 🎯 What this scrapes

arXiv's Atom feed at `export.arxiv.org/api/query` is the canonical source for preprint paper metadata. It is also paginated, rate-limited, and quick to push back on anything that looks like aggressive bulk access. This Actor wraps it with a polished input schema, paces requests to stay within arXiv's courtesy guidelines, paginates automatically across large result sets, and writes one structured row per paper. We absorb the transient errors and pushback; you get a dataset that drops cleanly into research dashboards, citation-tracking tools, RAG pipelines, or ML training corpora.

Looking to download arXiv papers metadata across an entire category slice (for example, all `cs.AI` submissions from 2025)? A single sweep like that can exceed 30 000 records — hours of hand-rolled pagination that we handle end-to-end.

### 🔥 Features — What We Handle for You

- 🛡️ **Browser fingerprint rotation** — `curl-cffi` impersonates real Chrome / Firefox / Safari TLS handshakes so the upstream sees a browser, not a Python script.
- 🌐 **Residential proxy rotation** via Apify Proxy — fresh session ID and exit IP whenever the upstream pushes back.
- 🔁 **Retries with exponential backoff** on `408 / 429 / 5xx` — up to 5 attempts per page, `Retry-After` header honoured.
- 🧱 **Rate-limit-aware pacing** — we slow down rather than accumulate blocks; partial progress is always surfaced, never silently dropped.
- 🧊 **Clean, typed dataset rows** — Pydantic-validated fields, ISO-8601 timestamps, stable IDs. Export as JSON, CSV, or Excel directly from Apify Console.
- 💰 **Pay-Per-Event pricing** — you pay only for results that land in your dataset. No data, no charge beyond the small start fee.

### 💡 Use cases

- **RAG corpus building** — pull every `cs.AI` / `cs.LG` / `cs.CL` abstract from the past year and load it straight into ChromaDB, Pinecone, or Weaviate for semantic search over papers.
- **Citation tracking** — schedule weekly runs for `au:<your-name>` and diff to detect new citations of your work.
- **Trend monitoring** — daily pull from a specific category to feed a research digest or newsletter.
- **Dataset curation** — extract all papers matching a topic + date range to seed a systematic literature review or benchmark evaluation.
- **Notification pipeline** — stream new results into Slack or Discord when a paper matches a saved query.
- **VC / competitive intelligence** — map research output by lab, author, or topic over time to surface emerging areas.

### ⚙️ How to use it

1. Click **Try for free** at the top of the Store listing.
2. Fill in the input form — `searchQuery` is the only required field and ships with a working default (`cat:cs.AI`).
3. Click **Start**. Results stream into the run's dataset in real time.
4. Export from **Storage → Dataset** as JSON, CSV, or Excel — or pull via the Apify API.

For large sweeps (tens of thousands of records), set `maxResults` to your target count and let the Actor page through automatically. Runs can be scheduled from the Actor's **Schedules** tab.

### 📥 Input

| Field | Type | Required | Default | Notes |
|---|---|:--:|---|---|
| `searchQuery` | `string` | **yes** | `cat:cs.AI` | arXiv search query. Use field prefixes: `ti:` (title), `au:` (author), `cat:` (category), `abs:` (abstract), `all:` (all fields). Boolean operators `AND`, `OR`, `ANDNOT` are supported. |
| `sortBy` | `string` | no | `submittedDate` | Order results by `submittedDate`, `lastUpdatedDate`, or `relevance`. |
| `sortOrder` | `string` | no | `descending` | `ascending` or `descending`. |
| `maxResults` | `integer` | no | `50` | Total papers to fetch. arXiv recommends staying under 30 000 per query. |
| `pageSize` | `integer` | no | `50` | Papers per API call. arXiv caps page size at 2 000. |
| `proxyConfiguration` | `object` | no | `{"useApifyProxy": false}` | Apify Proxy configuration. Enable residential proxies for large-volume or scheduled runs to ensure consistent delivery. |

#### Example input

```json
{
  "searchQuery": "cat:cs.AI",
  "sortBy": "submittedDate",
  "sortOrder": "descending",
  "maxResults": 3,
  "pageSize": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

### 📤 Output

One dataset item per paper.

| Field | Type | Notes |
|---|---|---|
| `arxiv_id` | `string` | arXiv identifier, e.g. `2401.12345v2`. |
| `url` | `string` | Abstract page URL on arxiv.org. |
| `pdf_url` | `string` | Direct PDF link. |
| `title` | `string` | Paper title (whitespace-normalised). |
| `summary` | `string` | Abstract text. |
| `authors` | `array` | Author names in submission order. |
| `primary_category` | `string` | Primary arXiv category slug, e.g. `cs.AI`. |
| `categories` | `array` | All arXiv categories the paper is tagged with. |
| `doi` | `string \| null` | DOI if assigned (null for most preprints). |
| `journal_ref` | `string \| null` | Journal reference if the paper has been published. |
| `comment` | `string \| null` | Authors' note (page count, conference acceptance, etc.). |
| `published` | `string` | Original submission timestamp (ISO-8601 UTC). |
| `updated` | `string` | Last revision timestamp (ISO-8601 UTC). |
| `scraped_at` | `string` | Timestamp when this row was recorded by the Actor. |

#### Example output

```json
{
  "arxiv_id": "2401.12345v2",
  "url": "https://arxiv.org/abs/2401.12345v2",
  "pdf_url": "https://arxiv.org/pdf/2401.12345v2",
  "title": "Scaling Laws for Sparse Mixture-of-Experts Language Models",
  "authors": ["Alex Doe", "Jamie Smith"],
  "primary_category": "cs.CL",
  "categories": ["cs.CL", "cs.LG"],
  "doi": null,
  "journal_ref": null,
  "comment": "Accepted at NeurIPS 2025",
  "published": "2026-04-12T16:00:00+00:00",
  "updated": "2026-04-14T09:00:00+00:00",
  "scraped_at": "2026-06-01T10:00:00+00:00"
}
```

### 💰 Pricing

Pay-Per-Event — you are charged only when these events fire:

| Event | USD | What it covers |
|---|---:|---|
| `actor-start` | $0.005 | One-off warm-up charge per run |
| `result` | $0.0015 | Per dataset item written |

**Example**: 1 000 results at the rates above ≈ **$1.50**. No subscription, no minimum commitment, no card required to start — Apify gives every new account $5 of free credit.

### 🚧 Limitations

- **Metadata only** — the Actor uses the Atom API. Full-text search over PDF content is not supported; queries operate on arXiv metadata fields (title, abstract, authors, categories).
- **Author disambiguation** — arXiv does not expose canonical author IDs in the public API. Resolving name collisions across similar author strings is left to the caller.
- **30 000-record soft ceiling** — arXiv's own documentation recommends keeping single queries under 30 000 results. The Actor enforces a polite inter-request delay to stay within arXiv's rate-limit guidance; very large sweeps will take proportionally longer.
- **Preprint freshness window** — newly submitted papers typically appear in the feed within 1–2 hours of arXiv ingest, but that window is not guaranteed.

### ❓ FAQ

**Is this legal?**

Yes — arXiv publishes the Atom API specifically for programmatic access and bulk metadata retrieval. We respect arXiv's rate-limit guidance and identify the Actor in the request `User-Agent` per their documentation.

**What is the arXiv API and can I use it directly?**

The arXiv API (Atom/OAI-PMH feed at `export.arxiv.org`) is a free public endpoint for querying paper metadata. You can query it directly with Python using the `arxiv` PyPI library or raw HTTP calls — but at scale, you will hit pagination complexity, rate-limit pushback, and XML parsing overhead. This Actor handles all of that and writes clean structured rows without you touching a single namespace.

**I already know Python — why not just write an arXiv API wrapper?**

Writing an arXiv API wrapper in Python is a reasonable weekend project for small queries. For production-grade batch ingestion — scheduled refreshes, thousands of records, retry-safe paging, proxy-backed delivery — the Actor saves meaningful engineering time and runs on Apify's infrastructure without a server to maintain.

**Can I download PDFs?**

Not directly — the Actor surfaces the `pdf_url` field for every paper. You can pass that URL to a follow-up Actor or a `curl` loop to fetch the actual files.

**Why do some records have a null DOI?**

Most arXiv preprints do not receive a DOI until the paper is formally published in a journal. We surface `null` for those entries so your pipeline can handle them gracefully.

**How do I target a specific date range?**

arXiv's query language supports date filters via `submittedDate:[YYYYMMDD TO YYYYMMDD]`. Include that expression in your `searchQuery` field, e.g. `cat:cs.AI AND submittedDate:[20250101 TO 20251231]`.

### 💬 Your feedback

Spotted a bug, hit a rate-limit edge case, or need an extra field? Open an issue on the Actor's **Issues** tab in Apify Console — we ship fixes weekly and we read every report.

***

<div align="center">

Built by **[Devil Scrapes](https://apify.com/DevilScrapes)** 😈 — a small fleet of
opinionated public-data Actors. Honest pricing, real engineering, zero fine print.

</div>

# Actor input Schema

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

arXiv search query string. Use field prefixes like <code>ti:</code> (title), <code>au:</code> (author), <code>cat:</code> (category). Examples: <code>cat:cs.AI</code>, <code>ti:transformer AND au:vaswani</code>.

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

Field used to order results.

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

Ascending or descending.

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

Total papers to fetch across pages. arXiv recommends ≤30000 per query. Default 50.

## `pageSize` (type: `integer`):

Papers per API call. arXiv caps page size at 2000; default 50.

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

Apify Proxy is optional — arXiv is fine with direct access. Throttle yourself to stay polite.

## Actor input object example

```json
{
  "searchQuery": "cat:cs.CL AND ti:llm",
  "sortBy": "submittedDate",
  "sortOrder": "descending",
  "maxResults": 50,
  "pageSize": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All dataset items as JSON.

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

Same data exported to CSV.

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

Open the run dataset in the Console.

# 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 = {
    "searchQuery": "cat:cs.AI",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("devilscrapes/arxiv-papers-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 = {
    "searchQuery": "cat:cs.AI",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("devilscrapes/arxiv-papers-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 '{
  "searchQuery": "cat:cs.AI",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call devilscrapes/arxiv-papers-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "arXiv Scraper — Search & Export Paper Metadata",
        "description": "Search arXiv by query, category, or author and export structured paper metadata — title, authors, abstract, primary category, DOI, PDF URL, submitted and updated timestamps — to JSON or CSV. An arXiv API wrapper that handles pagination, retries, and rate-limit pacing for your pipeline.",
        "version": "0.5",
        "x-build-id": "cctsnyqWlHNSDjaMm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/devilscrapes~arxiv-papers-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-devilscrapes-arxiv-papers-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/devilscrapes~arxiv-papers-scraper/runs": {
            "post": {
                "operationId": "runs-sync-devilscrapes-arxiv-papers-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/devilscrapes~arxiv-papers-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-devilscrapes-arxiv-papers-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": [
                    "searchQuery"
                ],
                "properties": {
                    "searchQuery": {
                        "title": "arXiv search query",
                        "type": "string",
                        "description": "arXiv search query string. Use field prefixes like <code>ti:</code> (title), <code>au:</code> (author), <code>cat:</code> (category). Examples: <code>cat:cs.AI</code>, <code>ti:transformer AND au:vaswani</code>."
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "lastUpdatedDate",
                            "submittedDate"
                        ],
                        "type": "string",
                        "description": "Field used to order results.",
                        "default": "submittedDate"
                    },
                    "sortOrder": {
                        "title": "Sort order",
                        "enum": [
                            "ascending",
                            "descending"
                        ],
                        "type": "string",
                        "description": "Ascending or descending.",
                        "default": "descending"
                    },
                    "maxResults": {
                        "title": "Max papers",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Total papers to fetch across pages. arXiv recommends ≤30000 per query. Default 50.",
                        "default": 50
                    },
                    "pageSize": {
                        "title": "Page size",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Papers per API call. arXiv caps page size at 2000; default 50.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy is optional — arXiv is fine with direct access. Throttle yourself to stay polite.",
                        "default": {
                            "useApifyProxy": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
